
Основная работа над созданием environment artа в рамках этого исследования проходит в Unreal Engine 5, поэтому часть работы по созданию текстур стремится к тому, чтобы быть собранной «в движке». Для этого применяется система Material Layering на базе UE5.

Локация с сабстрейтом Material Layering System
Material Layer System — это Substrate, который на момент версии Unreal Engine 5.6 подключается отдельно в настройках материала. Однако в документации Unreal Engine 5.7 написано что Substrate будет включен по умолчанию.
Material Layering позволяет производить текстурирование не через привычные пайплайны, вроде Base Color, Roughness и Metallic или Diffuse, Specular и Glossiness, а с помощью «слоев» — Material Layers. Собранный материал из нескольких слоев представляет собой Material Instance, то есть количество материалов со слоями может быть бесчисленное множество, что предлагает широкую вариативность в текстурировании. Исходными текстурами для слоев будут служить карты шумов (Noise textures). Они необходимы в этом проекте, так как он нацелен на создание стилизованного окружения.
Пайплайн достаточно прост:
1. Сгенерировать карты шумов в другом ПО 2. Создать Master Material и подключить функцию Material Attributes, чтобы открылась возможность подключить «Слои» 3. Создать Material Layers под каждый вид материала (дерево, растительность, камни и тд) с помощью карт шумов 4. Создать Material Layers Blends для смешивания между собой различных слоев 5. Собрать Master Material Instances из слоев и блендов
2.1. Material Layers и Material Layer Blends
Noise Textures
Substance Designer — подходящая программа для создания карт шумов. Нодовая система этого ПО отлично подходит для того, чтобы генерировать различные карты при помощи нескольких манипуляций и кнопок. В Designer можно создать достаточно простые, но абсолютно разные карты, для которых не нужно подробно изучать программу. Основные ноды, которые я использую: Blend, Blur HQ, Slope, Histogram, Mosaic Grayscale, Flood Fill, Levels, Shape, Transformation 2D и карты Perlin Noise, Clouds, Crystal, Gaussian Blur и Anisotropic Noise. На каждую карту тратится примерно 15 минут. Главное, чтобы они были разными по форме и при этом текстурными и стилизованными, например, в виде мазков кисти или точек.
Генерация карт шумов в Substance Designer
Кроме того, чтобы уменьшить размер карт, рекомендуется разделить карты шумов на 3 канала (Red, Green и Blue). Таким образом, вес карт уменьшится и в дальнейшем работать непосредственно в самом движке будет намного удобнее. Это также можно сделать в Substance Designer с помощью ноды RGBA Merge. На графах я выделила ноды каждого канала.
Noise карты
Noise карты — второй подход
Создание Master Material в UE5
В Unreal Engine 5 нужно создать простой Master Material и в панели Details ставим галочку напротив Use Material Attributes. Таким образом, разблокируется функция Layers в Материале.
Master Material
Для текстурирования локации предварительно были запечены текстуры Normal, Ambient Occlusion (AO) и Curvature. В Master Material MM_Asset, который будет базой для Material Instances вместе с подключенными слоями и блендами, появится возможность добавлять карты Normal и AO, в Material Editor сделать эти текстуры параметрами.
Normal и Ambient Occlusion
В результате, неважно, какой ассет текстурируется, всегда есть возможность в панели Details поменять Normal карту и AO под нужный меш.
MI_Door_01
После этого из Master Material необходимо сделать Material Instance. В нем справа от панели Details откроется панель Layer Parameters. В ней можно добавлять Слои и смешивать их между собой при помощи Блендов.
На скриншоте изображается слой-бэкграунд, или слой-фундамент (MI_Stone), сверху на него накладывается другой слой (MI_Moss) и смешиваются они при помощи простого бленда (MLB_SimpleGradient).
Material Instance и панель Layer Parameters
Создание Material Layers
Создать Material Layers можно также, как и обычный Материал: Material > Layers > Material Layer.
В ходе работы соберется простая локация, которая будет состоять из зданий и покрытых песком и пылью поверхностей, земли, камней и дерева. Для этого необходимо сделать небольшое количество Material Layers под определенные группы материалов: Moss, Stone, Wood, Wallpaint, Sand и Sheen.
Material Layers
В Material Layer нода MakeMaterialAttributes схожа с созданием обычного материала в Unreal Engine 5.
MakeMaterialAttributes
Для того, чтобы сделать слои более комплексными и текстурными, в Material Layer с помощью карт шумов, предварительно сгенерированных в Substance Designer, можно собрать несколько «мазков», дополнительно добавляя к ним скалярные параметры, такие как Tiling, Contrast, Opacity, а также цвет. Таким образом, впоследствии в панели Layers Parameters в Material Instance я могу менять размер «мазков», их цвет и контрастность. Это главное преимущество Material Instance, которое позволяет делать процесс создания локации в Unreal Engine быстрее и комфортнее.
«Мазки» из карт шумов в Material Layer Editor
Нодовая система в шейдинге в Unreal Engine 5 последовательна и многоступенчата, а отдельные выделенные рамками группы представляют собой «мазки» на текстуре. На картинке представлен пример Material Layer для мха и травы (далее ML_Moss). Первой группой идет Initial Brushstrokes. Чтобы их было удобнее визуально разделять, ноды обрамлены, названы, разделены по цветам. Следом подключаются ноды из групп Dots, Handpaint, Splatters, Dot Spots, Roughness и Normal.
Brushstrokes
Текстура шума разделяется на 3 раннее заготовленных текстуры (3 канала R, G и B), каждая из которых, в свою очередь, подключается к таким параметрам, как Opacity, Contrast, Color.
Dots
Handpaint
Splatters
Dots Top, Roughness и Normal
Таким же образом заготавливаются и другие слои: ML_Sheen, ML_Wood, ML_Sand, ML_Wallpaint и ML_Stone.
ML_Sheen
Также карты шумов можно использовать для создания неровностей и шероховатостей, подключив к Normal в MakeMaterialAttributes через ноду PreparePerturbNormalIHQ.
ML_Wood
ML_Wallpaint
ML_Sand
ML_Stone
Создание Material Layer Blend
Material Layer Blend — это функция, основная задача которой является смешивание между собой слои по определенным принципам, заложенным в его графе. Создать его можно также через ЛКМ и Layers.
Простой Material Layer Blend (далее MLB) представлен в виде обычного градиента, который смешивает два базовых слоя (белый и синий), и, при помощи рулек в Material Instance и добавленных скалярных значений Add и Blur, два слоя смешиваются через градиент.
Material Layer Blend — Simple Gradient
Смешивание производится по системе, которая выстраивается также через ноды в Material Editor. На картинках представлены использованные мною MLB.
MLB_SimpleGradient
MLB_Gradient_Texture
MLB позволяет производить смешивание через карты шумов, сгенерированных ранее с помощью нод в группе «Input Noise Texture».
MLB_Mask
Смешивать слои можно через маски. Для дальнейшей работы с текстурированием локации масками в локации служили Curvatures map. Таким образом появляется вариативность в текстурировании границ и краев моделей для большей стилизации.
MLB_VertexPaint_from_Gradient
MLB_SubtleNoise
В MLB_SubtleNoise можно создать маску, и в этой маске будет производится текстурирование с другой картой шумов.
Объединение Material Layer и Material Layer Blend
MI из одного слоя
Для начала необходимо создать MI и поместить в него базовый слой (Background). После его размещение убрать его нельзя, но поменять можно. Базовый слой — камень (ML_Stone).
Изменение ML_Stone
С помощью грамотного построения слоя в ML_Stone открывается несколько групп (заготовленных заранее), и в каждой из них есть параметры, которые можно менять (цвет, прозрачность, масштаб, контрастность). Система слоев предоставляет широкую вариативность непосредственно во время текстурирования.
ML_Sand
Если нажать на знак «+» напротив Material Layers, добавляется новый Layer и автоматически с ним окно для Material Layer Blend. MLB_GradientTexture позволяет через карту шума произвести смешивание двух слоев, а также сделать аккуратный градиентный переход.
2.2. Сборка локации
Для текстурирования локации необходимо сделать предварительную заготовку из низкополигональных и высокополигональных моделей и запеченных карт нормалей, ambient occlusion и curvature. Для дальнейшей работы был собран небольшой ассет пак, состоящий, по большей части, из модульных ассетов.
Custom asset pack
Для придачи более утрированного и стилизованного эффекта, скульптинг ввелся с применением Knife Slice и кисти Trim. Вкупе они создавали эффект резанных краев и острых углов. Далее производилось оптимизирование высокополигональной модели с помощью инструмента Decimate и на выходе получался низкополигональный меш. Не выходя из Zbrush с плагином UV Master можно «порезать» модель на UV островки.
Для работы с Material Layer необходимо было сделать маски Curvature. В том же Zbrush через инструментарий Masking — Mask by Curvature можно быстро подкрасить с Polypaint края и нарисовать маску.
Создание Curvature Map
Затем использовалась простая программа xNormal, специализирующаяся только на запекании текстур. Ее интерфейс интуитивно понятен и прост. Необходимо добавить высокополигональную и низкополигональную модель и выбрать карты, которые нужно запечь.
xNormal
Normal и AO maps
Для создания маски Curvature в разделе «High-Definition Meshes» нужно отжать галку «Ignore per-vertex color», чтобы программа учитывала Polypaint. В «Maps to render» для запекания Polypaint необходимо выбрать «Bake highpoly’s vertex color».
Curvature Map
2.3. Material Layering в окружении
В процессе работы с Material Layers была собрана локация трущоб. Они состоят из модульных старых песчаных домов, которые больше похожи на муравейники или другие природные образования, не созданные человеком. Над главным героем нагромождаются высокие человейники и руины, в которых все еще кто-то живет, поэтому блокинг производился огромными кубами.
Блокинг
Заготовленный ассет пак из модульных мешей позволил быстро заполнить локацию необходимыми зданиями и образованиями и при этом сохранить масштаб и стилизованность.
Ассетирование
Благодаря приготовленным ранее Material Instances, карт Normal, AO и Curvature, процесс текстурирования занял всего несколько часов, и в то же время предоставил широкий диапазон возможного окрашивания моделей. Вариативность выбора текстур, цветов и карт шумов позволяла сделать несколько вариантов текстурирования для одного меша, при этом оставляя процесс таким же быстрым и интуитивным.
Текстурирование





