Дурное дело - нехитрое! По стандартному пайплайну Vray 3ds max сделать всё достаточно просто, но вот экспортировать это в Игру оказалось гораздо сложнее. 500 с лишним объектов и около 500 000 треугольников.
Даже один объект экспортнуть может занять минут 10(каждый объект надо вставить в 0 0 0 проставить пивоты и т п), не говоря уже о том, что расставлять объекты в Unreal тоже приходится руками - стандартных средств для расстановки объектов там нет. Помучившись пару дней я понял - работы на полгода, а у меня столько мотивации не хватит ) Лень двигатель прогресса, поэтому я расчехлил свой MaxScript и сел за написание скрипта, который бы всё сделал за меня.
Охапка Дров и Скрипт готов! Я специально решил особо не подготавливать сцену к экспорту, чтобы скрипт мог переваривать всё что угодно. Теперь экспорт всей сцены в unreal занимает около 5 минут (конвертация материалов и экспорт в .FBX)
Как это возможно? Во первых в наше время многие забыли о корнях, а именно о Vertex Color - эта технология придумана в дотекстурную эпоху, чтобы хоть как то раскрашивать модели. Во первых - это бесплатно, вершины хранят в себе вертекс колор В Любом Случае, во вторых для этого не нужно делать Unwrap (попробуйте сделать его для 500 объектов :) ) При этом в наше время модели настолько полигональны, что текстурировать их необязательно в 90% случаев. Например:
Игровая модель, никаких нормал мап, диффуз текстур и прочего бреда, который во первых занимает 4 текстуры, а во вторых требует огромного количества времени на создание. 4 текстуры по 1024*1024 каждая весят очень много, а если моделей квадрокоптеров в игре 15 штук? одно только это будет весить больше 100 мб, что для мобильной игры не очень.
Как оказалось Вертекс колор может быть ещё полезнее, существует Vertex Alpha, в которую можно засунуть много всего интересного, например Ambient Occlusion
Лошадка для карусели чистый вертекс колор + альфа.
Остается решить вопрос с Reflection и Glossy. Для этого есть много способов, но самый простой способ такой:
UV координаты 3го канала, который практически никем не используется (в играх с шейдер модел 3 можно использовать до 8 UV каналов). Поэтому в U координату мы суем Reflection, а в V координату Glossiness.
Всё это полностью берется из Vray материала и засовывается в геометрию модели. Соотвественно в Unreal engine мы получаем полностью готовую модель с раскраской и значениями отражения и размытия для каждого полигона. Таким образом вся карта парка имеет 1 материал, что очень хорошо влияет на производительность для мобильных игр.
АО запекается виреем на одну кнопку для всех выбранных объектов, размер подбирается либо вручную либо автоматически из габаритов 3д моделей.
В общем теперь всё очень хорошо и я решил поделиться данными.
Для проверки я решил взять 500 000 треугольников Автомобиль из Evermotion и провести тестовый экспорт:
Пока я ещё не сделал экспорта текстур, сейчас активно занимаюсь игрой и пока нет времени на поддержку экспорта текстур, но теоретически это реализуемо. Следующим шагом я сделаю экспорт какого нибудь интерьера и возможно сделаю функцию прожига освещения в вирее.
Скрипт доступен по ссылке https://gum.co/xFoR за символическую цену, если он будет востребован - будет стимул его развивать и улучшать :)
PS: полетаем?