Как стать автором
Обновить

Как я написал конвертер 3D-моделей из подручных средств

Время на прочтение18 мин
Количество просмотров7.5K
Всего голосов 22: ↑20 и ↓2+25
Комментарии10

Комментарии 10

ЗакрепленныеЗакреплённые комментарии

Эм... а зачем нужно было писать свой парсер когда у usd есть готовые биндинги в питон и весь файл можно читать в нормальном виде? К тому же у вас нет поддержки, референсов, слоёв, инстансов, пойнт инстансов, наследования и вариантов, тот же самый Kitchen_set (тестовый файлик от пиксар) вы так не загрузите.

Раз уж вы начали разбираться в формате USD, то может разумнее было бы добавить поддержку этого формата в приложение, чем писать конвертер?

Конкрентно в моменте стояла задача переконвертировать около 100-150 моделей в уже поддерживаемый формат, найденый мною костыльный вариант позволял это сделать "со всеми удобствами":

  1. удобочитаемый формат данных (все промежуточные результаты, в том числе и вывод usdcat я сразу сохранял для всевозможных проверок что пошло не так)

  2. есть все дебажные данные для проверки (в том числе и саму модельку можно без проблем посмотреть на линуксе)

  3. промежуточная сцена, созданная в blender позволяла быстро проверить, как влияют какие-либо правки на финальный результат

  4. есть возможность удобно вносить дополнительные правки (например, в некоторых случаях были текстуры 4к и больше, что на мобилках приводило к тормозам)

  5. возможность в будущем спокойно править ошибки просто перегенерив модельки, в случае с поддержкой формата приложением цена ошибки выше (придется для определенных версий приложения не отдавать проблемные/неподдерживаемые модельки)

В случае поддержки формата в приложении можно было бы наткнуться на кучу проблем:

  1. нужно еще больше погружаться в работу ArCore и USD, что заняло бы еще больше времени -> больше риски не успеть в сроки

  2. банально неудобно смотреть на промежуточные результаты (сравнивать пример модельки с тем что отрисовалось в приложении на андроиде гораздо сложнее чем сравнить в полноценном 3d редакторе)

  3. нет возможности на ходу быстро вносить правки (те же размеры текстур и тд)

  4. большое количество возможных подводных камней, которые с ходу я мог бы не заметить

Я бы рекомендовал сменить название статьи на «Как мы костылили обёртку (wrapper) над чужими библиотеками» и поставить заставкой это:

Дорогу осилит идущий! Спасибо за интересную статью!

Спасибо на добром слове)

Эм... а зачем нужно было писать свой парсер когда у usd есть готовые биндинги в питон и весь файл можно читать в нормальном виде? К тому же у вас нет поддержки, референсов, слоёв, инстансов, пойнт инстансов, наследования и вариантов, тот же самый Kitchen_set (тестовый файлик от пиксар) вы так не загрузите.

Задача делалась в сжатые сроки, и я тупо не заметил что уже есть биндинги к питону позволяющие нормально читать файл, поэтому накидал свой парсер :) Похоже мне нужно было последовать своему же совету "внимательно изучайте инструменты", это могло бы сэкономить много времени)
Спасибо за правильное замечание)

Ну вы как-то странно это не заметили учитывая что USDView написан на питоне. (По крайней мере там есть загрузка стэйджа) Как собственно и USDCat который (при настройке окружения) может конвертировать USD в obj и алембик. Которые вроде как из коробки поддерживаются блэндером.

"Если бы у меня не получилось окольными путями сконвертировать хотя бы одну модельку, я бы быстро перегорел и ушел с проекта." - а что, так можно было? (с)...

Зарегистрируйтесь на Хабре, чтобы оставить комментарий