Создание метро в UE4: текстурирование и сборка сцены
Катерина Река воссоздала в 3D киевское метро и подробно рассказала об этапах текстурирования и сборки проекта.
Введение
Меня зовут Катерина Река, мне 21 год. Вообще-то я учусь на астронома, но в прошлом году уверенно мигрировала в сферу CG и планирую здесь остаться. Я закончила два онлайн-курса в киевской школе ArtCraft — «3D для игр и кино» и «3D PRO. Game Environment Pipelines». Мой проект метрополитена — это дипломная работа для второго курса. Я делала его под руководством моего преподавателя Александра Шаповалова, которому безмерно благодарна за инструкции и советы на всех этапах работы. Он научил нас продумывать все наперед и оптимизировать время, занимаясь моделированием объектов окружения.
В целом, я увлекаюсь моделированием около года. За это время я успела сделать пару проектов на фрилансе и принять участие в создании лоупольного мультфильма для Планетария при поддержке Украинского культурного фонда. На данный момент я продолжаю активное обучение.
Начало работы над проектом Метрополитена
У меня не было особого опыта работы с UE4, предстояло изучить много нового. Поэтому главной целью было научиться грамотно выстраивать свой рабочий процесс, собирать сцену, выставлять там освещение и работать с материалами, экспериментировать с различными техниками. К поликаунту особых требований не было, главное — правильно все оптимизировать.
Небольшой спойлер: в результате мы получили нечто большее, чем просто навык — понимание, что любая задача может быть решена, если ты не боишься трудностей.
Наставник предложил нам список тем, из которого каждый студент мог выбрать проект по душе. Тогда я каждый день проводила около часа в метро, добираясь в университет, и каждый раз размышляла, как реализовать в 3D все, что попадается мне на глаза. Поэтому выбор был очевиден, когда я увидела вагон метро среди других позиций списка преподавателя.
Референсы
На курсах мы постоянно слышим, что подбор референсов — важный этап, от которого может зависеть финальный результат. Поэтому я потратила несколько дней, собирая их по всему Интернету. Я выяснила, какие типы поездов есть в нашем метро и чем они отличаются, а если каких-то изображений не могла найти в гугле — фотографировала их самостоятельно. Для удобства работы с референсами я использовала программу PureRef.
Вряд ли его видно в кадре, но я использовала огнетушитель, который моделировала ранее, чтобы лучше понять его устройство. Мне нравится работать с окружением — это отличная возможность более детально изучить мир вокруг.
Кроме того, я советую всем студентам составлять подробный план перед началом работы — это сэкономит время в будущем.
Моделирование
Создавать сцену было легко, самым комплексным объектом можно считать огнетушитель на заднем плане.
Я работаю в Maya, и почти все модели с UV разверткой были сделаны в ней. ZBrush пригодился для скульптинга сидений и экспериментов со сварочными швами на поручнях. В целом, я оставила всего три типа сидения с разными складками, которые зеркалила и меняла местами, чтобы создать иллюзию разнообразия.
Часть геометрии я создала и обработала в ZBrush (боковые части сидений, поручни, лампы), а для остального использовала классический подход со сглаживанием фасок через bevel.
В поезде метро много повторяющихся объектов и нужно было оптимизировать их загрузку в UE4. Для этого мне пришлось познакомиться с 3ds Max, чтобы использовать великолепный скрипт TS Tools. Он позволяет передавать координаты объектов в сцене напрямую в движок — это значительно экономит место и сокращает время при экспорте мэшей.
Текстурирование
Все карты были запечены в Marmoset Toolbag. Я всегда запекаю ID карту с высокополигональных элементов — так в будущем удобнее текстурировать лоу-поли.
Поскольку на курсе мы учились работать в связке с UE4, объекты в проекте условно делятся на три категории:
- Уникальные объекты, которые запекались и текстурировались в Substance Painter (двери, сиденья, лампы).
- Объекты, для которых выпекалась только карта нормалей (например, окна и все поручни).
- Объекты, которые текстурировались с помощью инструментов UE4 и заготовленных тайловых материалов (пол, стены и потолок).
При экспорте из Substance Painter все текстуры сразу паковались под UE4 (AO, Roughness и Metalness по каналам RGB; это ч/б текстуры, так что неплохим решением было запаковать их в три канала и объединить в одну текстуру) для оптимизации их хранения.
Здесь все тоже довольно просто. Для сидений я почти не использовала готовые смарт-материалы. Я создала слой с базовым цветом, а также несколько слоев с немного измененными оттенками, которые проявила через dirt smart mask. Это нужно для того, чтобы создать вариации оттенков, ведь в реальности не так много материалов, которые имеют строго один цвет.
Также я использовала базовые материалы кожи из Substance Painter, отключая всё, кроме канала normal и roughness. В одних местах я настраивала шероховатость, чтобы создать потертости, а ближе к углам — добавляла блеска, чтобы имитировать изношенность.
Что касается устройства связи с машинистом, то запеченная ID карта пригодилась для назначения по ней готовых смарт-материалов. В Substance Painter можно наносить надписи, печатая их напрямую, но кириллица там не поддерживаются, поэтому для всех надписей я создала альфу в Photoshop и подключила ее к кисти.
Лампа и двери текстурировались одинаково. В проекте много идентичных элементов, поэтому было важно не создавать никаких уникальных паттернов, повторение которых будет заметно, когда мы выставим все эти объекты близко друг к другу.
В UE4 можно создавать основные материалы и делать из них инстансы — в них корректируются значения конкретных параметров, которые выведены в мастер-материале. Поэтому я решила текстурировать все металлические детали прямо в движке, создав отдельный материал для металла. Например, для оконных рам я запекла только карту нормалей и вывела параметр для работы с цветом, рафнесом и возможность варьировать нормал.
Таким же образом я создала мастер-материал для стен и пола. Для дополнительной грязи на объектах я блендила два разных материала друг с другом. Из-за того, что они были разложены на UV не под тайл, на стыке модулей пола появились швы из-за добавленных шероховатостей. Чтобы избавиться от них, я использовала absolute world position node вместо обычного texture coordinate node в настройках материала.
Я также добавила параметр настройки цвета, чтобы иметь возможность корректировать его прямо в движке без перехода в Photoshop, и использовала как Vertex Paint, так и маски на базе АО для создания разнообразия в цвете линолеума. Так я смогла имитировать следы старения в местах, где движок генерировал AO.
Я люблю изучать новые программы в процессе работы, даже если это позволит мне добавить только одну незначительную деталь. Например, выпуклости на линолеуме — их не видно, но они подчеркивают работу рафнеса. На полу есть карта нормалей, созданная полностью в Substance Designer. В будущем я планирую использовать его чаще.
Просматривая референсы, я пришла к выводу, что в старых вагонах линолеум выцветает под ногами сидений и отрывается в местах рядом с металлическими поручнями. Для первого эффекта я использовала Vertex Paint, а второй был создан с помощью декалей и масок. Я вручную нарисовала их в Photoshop и добавила возможность менять рафнес, цвет и комбинировать текстуру альбедо в мастер-материале.
Я также создала отдельный материал в UE4 для ламп и добавила с его помощью эффект мерцания света.
Что касается всех рекламных объявлений, я нашла их в Интернете. Я вспомнила популярные в Украине бренды, реклама которых часто встречаются в метро, и нашла их флаеры. Когда-то у нас был популярен социальный проект под названием «Гусь в метро», и мне он очень понравился, потому что он забавным образом учил людей правилам хорошего поведения в общественном транспорте. Поэтому я добавила его в свой проект.
Кроме того, в нашем метро нередко оставляют нелегальные рекламные объявления в стыках между дверьми или приклеивая их непосредственно к платным объявлениям, так что это я тоже отобразила. Я сделала эти объявления в Photoshop на основе часто встречающихся текстов и меняла шрифты для разнообразия. Мой наставник очень помог мне с граффити, потому что когда-то он этим увлекался. Все листовки были собраны на одной текстуре в Photoshop, после чего я раскидала их по сцене в виде декалей.
Наклейки на окна также делались вручную в Photoshop — я старалась выбирать шрифты как можно ближе к тем, которые видела в метро. Стеклянный материал был взят из Advanced Material Pack, который недавно был доступен бесплатно на UE4 Marketplace.
Сборка сцены
В сцене не так много уникальных объектов, но множество разбивочных деталей делает это менее заметным. Чтобы скрыть лишний заливочный свет, я создала оболочку-болванку вокруг поезда. Поскольку во время поездки мы всегда видим соседние вагоны, я решила учесть и это. Чтобы не загружать движок дубликатами, мне посоветовали поместить боксы с изображением интерьера поезда с динамичной перспективой, а также применить к нему emission, чтобы сделать их более заметными.
Зная, что никто не сможет рассмотреть соседнии вагоны вблизи, я не пыталась воспроизвести их очень детально. Я разместила бокс со скриншотом вагона на фоне и использовала motion animation из Maya. Анимация, которую я сделала вручную, получилась довольно неряшливой. На помощь пришло понимание, что любое движение — это набор математических функций. Я взяла периодические функции косинуса и синуса и преобразовала их до неузнаваемости, добавив слагаемые, возведенные в степень, и поиграв с фазой колебаний. И с помощью этих функций я создала анимацию через редактор Expression для translateY, translateX, rotateX, rotateY, которую я экспортировала в UE4.
Чтобы создать иллюзию движения по туннелю, я смоделировала простую форму с проводами и запекла карту нормалей с картой высоты. Затем, с помощью блупринтов, я реализовала анимацию текстуры по одной оси, что создало эффект движения вагона сквозь туннель.
Со светом также не возникло проблем. В основном я освещала сцену двумя видами источников. Точечным для имитации освещения от ламп и заливочным, чтобы корректировать общую освещенность сцены. Затем я продублировала и расставила все источники в нужных местах. Также важно было сохранить возможность менять все параметры источников разом, так что я сохранила их как инстансы. Интенсивность света я выставляла на глаз, и в итоге остановилась на значении температуры в 4000К.
Видео я создала в UE4 Sequencer, но по техническим причинам пришлось познакомиться с Adobe Premiere. Там я объединила все отдельные секвенции в одно видео, сделала эффект затухания на переходах и скорректировала экспозицию с помощью пост-эффектов. При этом было очень интересно познакомиться с основными принципами видеомонтажа (например, существуют правила объединения кадров по размеру, направлению движения, фазе движения и так далее).
Катерина Река, 3D Художник
Интервью провел Арти Сергеев
Источник 80.lv