Конвертируем 3ds Max - Vray модели в Unreal Engine 4 за 1 клик
Всем привет, недавно мне надоела Корона, вейп и все ГПУ рендеры разом, поэтому я неожиданно стал делать мобильную игру на 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: полетаем? 

Комментарии (39)

0
Zloi_Silver
страница не найдена ссылочку поправьте плизз ))
+1
niak_ris
поправил
0
Zloi_Silver
а из короны он не перекидывает? понятно, что можно из короны в vray, а потом уже в UE, но без танцев с бубном можно?
+2
niak_ris
можно сделать, но мне пока не нужно, может быть попозже сделаю
0
Zloi_Silver
если бы сделали, был бы мега признателен))
+1
Yehat
Хорошая статья!
+9
ilia.garbuzov
Ох уж это заголовки из желтых газет=) в один клик
0
BlessOd
вертекс колор использован интересно. Но вот мне интереснок ак вы статику будете перекидывать в один клик с разверткой. Обыный флатен мапинг? или будете в анриале использовать автоматический анврап?
ну в целом для среднего результата сгодтся, но качество делается только руками.
0
niak_ris
Для большинства объектов достаточно на первый канал кинуть бокс маппинг, второй канал для ЛМ генерит сам UE, а прожигать АО в альфу - развертка не нужна. Таким образом 90% объектов в игре делаются автоматически - понятное дело что основные объекты типа дорог, газонов и зданий нуждаются в текстурах, но это всего несколько объектов. Задача скрипта - исключить тонны ручной работы на мелких объектах.
0
BlessOd
это все применимо для игры!
>я сделаю экспорт какого нибудь интерьера
вы понимаете что там все статика и то что автоанврап всегда дает качество ниже среднего?
автоанврап это тотже флатен усовершенствованый, он рвет ЮВ и количество косяков на томже диване будет зашкаливать.
+1
niak_ris
поэтому в наше время можно не парится с УВ и загонять освещение в Vertex Color
+2
BlessOd
А что такое "Dniwe_ebanoe" :)
+14
niak_ris
днище автомобиля, которое не хотело импортится в анрил по какой то своей причине, после переименования сразу заработало )
0
DoCentttt
dniwe, наверно, правильно.
+1
niak_ris
http://i.imgur.com/80XGF17.png
вот диван только что первый попавшийся конвертнул, видео сейчас пережмется и зальется на ютуб
0
BlessOd
Эх тут говрить не о чем, вы смотрите со стороны гейм дева я с другой стороны.
Диван диваном а то что АО страшное просто вас не смущает?
а то что для мягких теней нада будет статик обьект? как следствие автоанврап нагадит на диван.
ПОтом закащик попросит вас сделать с десяток текстуа на него с выбором скейла текстуры.
0
niak_ris
какой ещё статик? это и есть статик. Вместо АО я могу запечь Global Illumination.
0
BlessOd
я вам про Ивана...
Воркфлоу годный, использование вертексКолора интересное.
Просто мое имение что это мало применимо к архитектурным проектам.
0
niak_ris
Ок, я продемонстрирую, когда будет свободная минутка
+1
olegwer
Кусок геймплея приложил бы : )
Норм статья.
0
niak_ris
Геймплей попозже )
+1
DronD
Да вы мастер придумывать имена )
+5
+1
niak_ris
Многолетний опыт практикующего мага 3д макс высшей категории позволяет простыми заклинаниями решать большинство проблем в 3д продакшене
+1
In-design
А не проще подождать, когда Datasmith выйдет? Там даже конвершен матов из короны в UE будет.
0
niak_ris
наврядли они будут запекать всё в вертекс колор ) Там будет хайпольное тяжеленное запеченное нечто, которое будет годиться только для 980 GTX, никаких поддержек shadow map и т п. Я уже сейчас могу тоже самое сделать и для короны и для вирея.
0
In-design
Комментарий удален
0
In-design
Сделайте!
Главное - чтобы всё было однокнопочное, удобное, и не содержало косяков при конверции.
0
Levan_ko
Интересно посмотреть на игру)
у самого 2 уже есть и еще несколько в разработке
для мобильных устройств предусмотрен специальный алгоритм сжатия текстур, и он довольно хорошо справляется
0
Kenzo80
А как же Substance Painter?))
+2
jppasha
поигрался в лабиринт на превьюхе , спасибо :)
0
Motocat
Реально полезная статья, спасибо )
+1
Quasar
А если это стена из двух треугольников? Как будешь запекать GI на нее?) Vetex color полезен, но не для этого)
+1
Alleandra3D
Вы - крутой! :-)
+1
dontpiter
Мда... осталось найти юзеров, которые захотят играть в такой "графоний"
0
MaxiM11
спасибо
0
Esviliance
скрипт не запускается под 3ds max 2017 и 2018, под какой разрабатывался?
0
niak_ris
надо новую версию скачать, всё запускается, я прост каждый день новые релизы пилю
0
KiroXan
Спасибо за статью)
0
andesps
а я бы погамал это чудо. еще бы под VR запилить)