18/06/2019

Создание ассетов с твердой поверхностью в реальном времени с помощью UE4

В прошлом году совместно с друзьями я начал работу над проектом компьютерной анимации при помощи Unreal Engine 4. Для организации рабочего процесса нужно было выстроить целостный производственный процесс, включающий создание ассетов, затенение, освещение, визуальные эффекты и вывод результатов рендеринга. Поэтому я старался использовать несколько видов программных решений. В моей профессиональной деятельности этот проект оказался действительно сложным и интересным опытом.

Цели

Насколько известно, вскоре разработчики игр смогут использовать метод трассировки лучей в режиме реального времени. Поэтому, для экспериментов с особенностями этой технологии я хотел создать соответствующие стандартные ассеты. Однако самая последняя версия Unreal Engine (4.22.0) пока находится на стадии предварительной сборки. Без помощи справочного материала я немного поэкспериментировал с трассировкой лучей, но в процессе возникли некоторые проблемы. Таким образом, эти изображения получены с помощью растеризации.

  

  

Методы создания ассетов с твердой поверхностью в реальном времени

По большому счету, есть 3 метода создания ассетов с твердой поверхностью современного поколения (с режимом реального времени). Представленные ниже методы могут быть использованы с помощью пайплайна слоистого материала для улучшения качества затенения (хотя я не использовал пайплайн слоистого материала в этой сцене).

Традиционный метод запекания моделей — High to Low (от высокополигонального до низкополигонального меша)

Преимущества:

  1. Очень надежный способ.
  2. Подходит для скульптурного меша, полученного из конвертации кривых + меша, экспортированного из коммерческих программ.

Недостатки:

  1. Требуется высокополигональный и топологизированный низкополигональный меш.
  2. Низкое качество детализации при приближении.

Меш нормали со взвешенными гранями + покраска карты нормали

Преимущества:

  1. Весьма эффективный способ.
  2. Не требуется высокополигональный меш.
  3. Гибкость детализации (гибкие возможности текстурирования при помощи карты нормалей и высот).

Недостатки:

  1. Низкое качество детализации при увеличении.

Меш нормали со взвешенными гранями + усовершенствованная деколь + техника текстурирования POM (Parallax Occlusion Mapping)

Преимущества:

  1. Не требуется высокополигональный меш.
  2. Гибкость детализации (гибкие возможности текстурирования при помощи карты нормалей и высот).
  3. Высокое качество детализации при увеличении.

Недостатки:

  1. Необходим профессиональный опыт выстраивания производственного процесса.

В данном случае, моя главная цель — трассировка лучей в реальном времени. Однако я слышал, что в ранней сборке программы деколи и полупрозрачные материалы могут не поддерживаться. Поэтому я использовал второй метод для построения сцены.

Работа над геометрией

Обычно я проектирую и создаю геометрию в 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



 

Recent Posts

Как в НИУ ВШЭ воспитывают новых Кодзим

11/07/2019
Реально ли попасть в геймдев, отучившись 4 года и получив диплом? Чему предстоит обучаться? Какие подводные камни? Что говорят студенты и преподаватели?

От юриста до разработчика игр при финансовой поддержке Unreal Engine

08/07/2019
Ник Пирс поделился замечательной историей о том, как сменить скучную профессию и стать разработчиком игр. 

Создание ИИ сверхскоростных автомобилей с помощью Unreal Engine

04/07/2019
Ведущий программист Dark Future: Blood Red States рассказывает об изящном решении для создания ИИ правдоподобных противников.