Конвертируем 3д макс-Врай в Unreal Engine.

Всем привет, недавно мне надоела Корона, вейп и все ГПУ рендеры разом, поэтому я неожиданно стал делать мобильную игру на Unreal Engine 4. Почему именнно на УЕ? - Потому что Unity уже надоело и графоний туда так и не завезли :) Игра придумалась простая - симулятор квадрокоптеров с различными квестами в одной большой локации типа парк:

d92281fda0335941fb2cd616f4654e2e.jpg

Дурное дело - нехитрое! По стандартному пайплайну Vray 3ds max сделать всё достаточно просто, но вот экспортировать это в Игру оказалось гораздо сложнее. 500 с лишним объектов и около 500 000 треугольников.

Даже один объект экспортнуть может занять минут 10(каждый объект надо вставить в 0 0 0 проставить пивоты и т п), не говоря уже о том, что расставлять объекты в Unreal тоже приходится руками - стандартных средств для расстановки объектов там нет. Помучившись пару дней я понял - работы на полгода, а у меня столько мотивации не хватит ) Лень двигатель прогресса, поэтому я расчехлил свой MaxScript и сел за написание скрипта, который бы всё сделал за меня.

e29f8be86268df45a1b0cfaab0a8c11d.png

Охапка Дров и Скрипт готов! Я специально решил особо не подготавливать сцену к экспорту, чтобы скрипт мог переваривать всё что угодно. Теперь экспорт всей сцены в unreal занимает около 5 минут (конвертация материалов и экспорт в .FBX)

Как это возможно? Во первых в наше время многие забыли о корнях, а именно о Vertex Color - эта технология придумана в дотекстурную эпоху, чтобы хоть как то раскрашивать модели. Во первых - это бесплатно, вершины хранят в себе вертекс колор В Любом Случае, во вторых для этого не нужно делать Unwrap (попробуйте сделать его для 500 объектов :) ) При этом в наше время модели настолько полигональны, что текстурировать их необязательно в 90% случаев. Например:


Игровая модель, никаких нормал мап, диффуз текстур и прочего бреда, который во первых занимает 4 текстуры, а во вторых требует огромного количества времени на создание. 4 текстуры по 1024*1024 каждая весят очень много, а если моделей квадрокоптеров в игре 15 штук? одно только это будет весить больше 100 мб, что для мобильной игры не очень.

Как оказалось Вертекс колор может быть ещё полезнее, существует Vertex Alpha, в которую можно засунуть много всего интересного, например Ambient Occlusion

f8d707cd2fc1ea4fd94aadb50e45bcff.png

Лошадка для карусели чистый вертекс колор + альфа.

Остается решить вопрос с Reflection и Glossy. Для этого есть много способов, но самый простой способ такой:

UV координаты 3го канала, который практически никем не используется (в играх с шейдер модел 3 можно использовать до 8 UV каналов). Поэтому в U координату мы суем Reflection, а в V координату Glossiness.

Всё это полностью берется из Vray материала и засовывается в геометрию модели. Соотвественно в Unreal engine мы получаем полностью готовую модель с раскраской и значениями отражения и размытия для каждого полигона. Таким образом вся карта парка имеет 1 материал, что очень хорошо влияет на производительность для мобильных игр.

АО запекается виреем на одну кнопку для всех выбранных объектов, размер подбирается либо вручную либо автоматически из габаритов 3д моделей.

В общем теперь всё очень хорошо и я решил поделиться данными.

Для проверки я решил взять 500 000 треугольников Автомобиль из Evermotion и провести тестовый экспорт:


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

Скрипт доступен по ссылке https://gum.co/xFoR за символическую цену, если он будет востребован - будет стимул его развивать и улучшать :)

PS: полетаем?




0

Голосование: 707
Голосов: 5 оценки

Отзывы посетителей:

аватар
  Онлайн
Valdic 111 0

Большое спасибо, а дело полезное.

Цитирую u3d:

поправил


аватар
 
u3d 117 0

поправил

Цитирую Valdic:

с ссылкой только у меня проблемы?

 "страница не найдена"


аватар
  Онлайн
Valdic 111 0

с ссылкой только у меня проблемы?

 "страница не найдена"

аватар
 
TalkingCamera 1 1

Дай Бог тебе здоровья, хороший человек!

аватар
 
u3d 117 1

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

аватар
 
Андрей Кривуля 540 0

Я так понял, что даже если будут все текстуры с Substance Painter - это все дело преобразуется в Vertex Color и будет так же выглядеть в Unreal без текстур? 

аватар
 
Андрей Кривуля 540 0

Круто =) Интересная реализация. Желаю дальнейшего развития проекту =)

Зарегистрируйтесь, чтобы добавить комментарий.
Эту страницу просмотрели: 89 уникальных посетителей