Создание ассетов с твердой поверхностью в реальном времени с помощью UE4
В прошлом году совместно с друзьями я начал работу над проектом компьютерной анимации при помощи Unreal Engine 4. Для организации рабочего процесса нужно было выстроить целостный производственный процесс, включающий создание ассетов, затенение, освещение, визуальные эффекты и вывод результатов рендеринга. Поэтому я старался использовать несколько видов программных решений. В моей профессиональной деятельности этот проект оказался действительно сложным и интересным опытом.
Цели
Насколько известно, вскоре разработчики игр смогут использовать метод трассировки лучей в режиме реального времени. Поэтому, для экспериментов с особенностями этой технологии я хотел создать соответствующие стандартные ассеты. Однако самая последняя версия Unreal Engine (4.22.0) пока находится на стадии предварительной сборки. Без помощи справочного материала я немного поэкспериментировал с трассировкой лучей, но в процессе возникли некоторые проблемы. Таким образом, эти изображения получены с помощью растеризации.
Методы создания ассетов с твердой поверхностью в реальном времени
По большому счету, есть 3 метода создания ассетов с твердой поверхностью современного поколения (с режимом реального времени). Представленные ниже методы могут быть использованы с помощью пайплайна слоистого материала для улучшения качества затенения (хотя я не использовал пайплайн слоистого материала в этой сцене).
Традиционный метод запекания моделей — High to Low (от высокополигонального до низкополигонального меша)
Преимущества:
- Очень надежный способ.
- Подходит для скульптурного меша, полученного из конвертации кривых + меша, экспортированного из коммерческих программ.
Недостатки:
- Требуется высокополигональный и топологизированный низкополигональный меш.
- Низкое качество детализации при приближении.
Меш нормали со взвешенными гранями + покраска карты нормали
Преимущества:
- Весьма эффективный способ.
- Не требуется высокополигональный меш.
- Гибкость детализации (гибкие возможности текстурирования при помощи карты нормалей и высот).
Недостатки:
- Низкое качество детализации при увеличении.
Меш нормали со взвешенными гранями + усовершенствованная деколь + техника текстурирования POM (Parallax Occlusion Mapping)
Преимущества:
- Не требуется высокополигональный меш.
- Гибкость детализации (гибкие возможности текстурирования при помощи карты нормалей и высот).
- Высокое качество детализации при увеличении.
Недостатки:
- Необходим профессиональный опыт выстраивания производственного процесса.
В данном случае, моя главная цель — трассировка лучей в реальном времени. Однако я слышал, что в ранней сборке программы деколи и полупрозрачные материалы могут не поддерживаться. Поэтому я использовал второй метод для построения сцены.
Работа над геометрией
Обычно я проектирую и создаю геометрию в 3 шага. Что считается вполне нормальной практикой.
Формирование сцены. Самый первый этап. Он демонстрирует структуру сцены.
Детализация. На этой стадии я вырезаю меши и фаски кромок, чтобы создать более подробный ассет. Но даже представленное ниже изображение не очень детализировано. Тем не менее, этот меш я доработаю на этапе текстурирования.
Завершение. Очищаю меши, разворачиваю UV-преобразование и корректирую нормали со взвешенными гранями.
Ранее я публиковал процесс проектирования. Однако вы можете ознакомиться с ним и здесь:
Материалы
После развернутого UV-преобразования я проверил плотность текстуры каждого меша. Затем обнаружил, что даже текстура с разрешением 4K не может удержать важные детали. Поэтому я отделил два набора текстур для одного меша.
В данном случае представлены 5 различных материалов: белая краска, яркий металл, темный металл, черная резина (пластик), латунь.
Все подробные карты нормалей окрашены в Substance Painter. Думаю, это самая важная часть работы в данном пайплайне. Как правило, мы используем некоторые научно-фантастические альфа-карты (многие из которых можно приобрести в онлайн-магазине ассетов) для проектирования детальной нормали. Однако в некоторых случаях существует проблема несовпадающего стиля. В основном она касается статических, а не процедурных карт. Это означает, что нет параметра для смещения альфа-форм. По этой причине я решил создать собственный стиль. Затем возникла другая проблема: за короткий период времени я не мог создать настолько огромную библиотеку. Поэтому совместил возможности Substance Designer и Substance Painter. Ниже изложена основная идея.
В этом проекте я использую очень простой цвет. Поэтому на ранней стадии разработки изображения кажутся черно-белыми. Однако впоследствии я использовал некоторые красные/синие/черные/желтые полосы и деколи, чтобы разбавить черно-белый визуальный эффект.
Производительность графического процессора и алгоритм освещения прошлого поколения не позволяли представить чистые и отражающие материалы. Таким образом, мы достигли хороших результатов рендеринга с помощью высокодетализированных текстур. В играх предыдущего поколения несложно найти примеры небрежных и неприглядных материалов. Однако теперь они выглядят намного более аккуратными и красивыми.
Кристаллический материал
Трудно объяснить создание этого материала с помощью текста и изображения, но я постараюсь сделать все возможное:
(пояснения на изображении)
Я поместил нод Френеля в цветовую схему текстуры ramp (линейный градиент) для получения простого эффекта смещения цвета. По этой причине материалы показывают разные цвета под разными углами.
Я использовал две разные текстуры и функцию bump offset (смещение рельефа) для создания параллактического смещения прожилок в кристалле (? parallax crack). Этот способ имитирует визуальную глубину при перемещении камеры.
Металлический:1, Шероховатость:0, Зеркальный умножитель:1
Прозрачность и рефракция обусловлены функциональным нодом Френеля. Используя этот метод, я получил переход между центром и боковой поверхностью. Также я ввел карту толщины, чтобы исправить непрозрачность кромки кристаллического меша.
Освещение
Освещение зависит от дизайна потолка. Поэтому перед погружением в UE4, я спроектировал освещение с помощью Octane Render. Визуализация в автономном режиме получается достаточно точной. Поэтому я могу использовать ее в качестве референса.
Эта сцена имеет очень небольшое пространство. Однако сверху представлено 8 основных источников света. В данной ситуации я не мог сделать их полностью стационарными. По этой причине решил их разделить: 4 были стационарными, а остальные 4 — передвижными.
В UE4 при работе с металлами параметр просчета освещения обладает некоторыми проблемами. В моем случае, я не могу получить необходимые результаты при использовании настроек по умолчанию. Поэтому я увеличиваю диффузию в 3 раза в разделе меш и в 1,3 раза в lightmass. Если не акцентировать внимание на данный недостаток, настройки просчета освещения довольно просты.
Оригинальный материал на 80.lv