Как обеспечить обратную совместимость для файлов Three.js JSON, экспортированных из Blender

У нас есть более тысячи моделей, которые были экспортированы с помощью экспортера Three.js Blender r69, при этом опция «Flip YZ» не отмечена. В приложении также есть код, который переворачивает их правильно, поэтому они одинаковы между Blender и приложением.

Мы обновили экспортер с (r76+) - опция Flip XY теперь удалена, а новые модели на их стороне. Очевидное решение состоит в том, чтобы удалить код приложения, который в первую очередь переворачивал их обратно в наше приложение, что работает, но нарушает совместимость со всеми моделями, ранее экспортированными с помощью r69.

Вот несколько методов, о которых я думал/пробовал, но безрезультатно:

  • Я могу проверить версию файла JSON и перевернуть только те, которые были экспортированы с помощью старого экспортера. JSON имеет поле «метаданные», за исключением того, что оно не подвергается воздействию результата JSONLoader.load(). Не идти.

  • Выполните обратный инжиниринг экспортера различий между версиями и посмотрите, смогу ли я написать скрипт для обновления тысяч моделей с 69 на 76.

  • Импортируйте все оригинальные модели и реэкспортируйте их как r76. Это большой объем работы для тысяч моделей, а так как мы не можем импортировать JSON, нам нужно иметь исходные файлы Blend, что не всегда верно.

Кто-нибудь сталкивался с подобной проблемой? Есть ли подход, который мне не хватает? Есть ли лучший способ перенести многие модели из одной версии JSON экспортера в другую?


person Anzor    schedule 20.05.2016    source источник


Ответы (1)


Изменение было упоминалось немного ранее, но я нигде не могу найти его задокументированного еще. Переключение, как вы обнаружили, теперь автоматическое. Похоже, код определяет ось вверх в строке 366 в object.py Я бы проверил, но я не использую Blender. Поменяйте местами значения и посмотрите, что произойдет.

Мой ответ заключается в том, что ваш вариант использования дает вескую причину вернуть эту опцию. Я предлагаю изменить object.py самостоятельно для ваших нужд, отправить его как запрос на включение и открыть проблему, чтобы разрешить обсуждение исправления @repsac

person Radio    schedule 20.05.2016