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

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

Как у blender со скоростью рендеринга подобных датасетов и работой с большими сценами?

Для своей задачи сегментации тоже пробую синтетический подход, но пока сделал выбор в сторону Unreal Engine из-за доступности готовых ассетов и даже целых сцен (мне нужно много "фото" объектов в максимально разнообразных окружениях с реалистичной отрисовкой теней, отражений и т.д.), но столкнулся с несколькими проблемами и неудобствами:

  1. Если каждый кадр из скрипта менять позицию камеры, освещение, сегментируемый объект и прочие элементы окружения случайным образом, в реалтайм рендере c Lumen часто появляются артефакты. Впрочем, большую часть этих проблем удалось решить рендером в MovieRenderQueue(рендер фильмов), большим количеством spatial samples и выключением temporal samples в его настройках, а также отключением "выдержки" у виртуальной камеры. Тем не менее, чувствуется, что движок на такое издевательство над ним не очень рассчитан.

  2. Не самая лучшая работа с прозрачными материалами. В первую очередь относится к lumen - например, в первые же дни работы с движком попался на крупный баг с отражением неба от полупрозрачных объектов вроде стекла даже сквозь стены. Пример рендеров. Думаю Cycles Render в блендере с таким намного лучше справляется. В моём случае хотелось предсказывать прозрачность объекта для его точного вырезания с фона, но в unreal очень ограниченная отрисовка полупрозрачных объектов с альфа каналом, вероятно придется в чем-то другом это делать.

  3. Path Tracer отрисовывает всё еще быстро по сравнению с blender (пара тысяч рендеров за ночь на моей RTX2070) и красиво, но у меня почему-то имеет свойство падать при запуске или в процессе рендера если сцена достаточно тяжелая. Например, он в принципе не хочет работать если добавить к стандартному archviz примеру ландшафт для создания простого пейзажа за окном, падает с ошибкой в VertexFactory.

  4. Комбинировать C++ и blueprints бывает довольно муторно, особенно если хочется из C++ получить какие-то данные от blueprint'а или вызвать его метод. Все проблемы конечно удалось решить, но возможно в каком-нибудь unity было бы проще.

Тем не менее, в остальном UE очень радует. По сравнению с blender привел бы такие плюсы:

  1. Большой маркетплейс с готовыми ассетами. Бесплатных не очень много, правда, но есть много платных по цене обычных игр. В сам движок встроено много готового, например за получаса настраивается небо с облаками. Из скрипта потом можно менять время суток/геопозицию и получать разное освещение в т.ч. с красивыми закатами, что позволяет легко разнообразить датасет.

  2. Достаточно простой и удобный редактор/компоновщик сцены с реалтайм предпросмотром. Blender, если я правильно понимаю, всё таки больше ориентирован на разработку отдельных 3D моделей, поэтому с нормальной отрисовкой во viewport и быстрым прототипированием сцен там сложнее. В моём случае важно иметь возможность быстро добавлять новые окружения/объекты для увеличения датасета без необходимости часами всё настраивать, даже если результат будет иметь косметические дефекты (не особо влияющие на качество ML модели).

  3. Для UE4 есть плагины вроде UnrealCV. Я, правда, не использовал, но возможно может помочь сэкономить время для разработки генерации сложных датасетов.

Большой маркетплейс с готовыми ассетами

Блендер вроде не держит собственных маркетплейсов, да им особо и не надо, т.к. модели экспортируются/импортируются в разные форматы. Поэтому можно легко найти больше моделей, например маркетплейсы раз, два . Ещё на каком-нибудь ArtStation можно посмотреть/поискать авторов.

 Из скрипта потом можно менять время суток/геопозицию 

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

 Blender, если я правильно понимаю, всё таки больше ориентирован на разработку отдельных 3D моделей, поэтому с нормальной отрисовкой во viewport и быстрым прототипированием сцен там сложнее. 

Ну, не, гляньте те же ролики от Blender Foundation. Там полный пайплайн видеопроизводства вроде поддерживается, некоторые используют его для прототипирования сцен, но там действительно не слишком много деталей.

Спасибо за статью!

На самом деле такие вводные уроки зачастую мотивируют к экспериментам с инструментами, которые раньше не рассматривал.

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

Темболее многое можно прототипировать прямо в блендере и дополнять кодом.

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