Material Layering на базе UE5

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

big
Original size 4116x2214

Локация с сабстрейтом 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 минут. Главное, чтобы они были разными по форме и при этом текстурными и стилизованными, например, в виде мазков кисти или точек.

0

Генерация карт шумов в Substance Designer

Кроме того, чтобы уменьшить размер карт, рекомендуется разделить карты шумов на 3 канала (Red, Green и Blue). Таким образом, вес карт уменьшится и в дальнейшем работать непосредственно в самом движке будет намного удобнее. Это также можно сделать в Substance Designer с помощью ноды RGBA Merge. На графах я выделила ноды каждого канала.

0

Noise карты

0

Noise карты — второй подход

Создание Master Material в UE5

В Unreal Engine 5 нужно создать простой Master Material и в панели Details ставим галочку напротив Use Material Attributes. Таким образом, разблокируется функция Layers в Материале.

0

Master Material

Для текстурирования локации предварительно были запечены текстуры Normal, Ambient Occlusion (AO) и Curvature. В Master Material MM_Asset, который будет базой для Material Instances вместе с подключенными слоями и блендами, появится возможность добавлять карты Normal и AO, в Material Editor сделать эти текстуры параметрами.

Original size 2560x1392

Normal и Ambient Occlusion

В результате, неважно, какой ассет текстурируется, всегда есть возможность в панели Details поменять Normal карту и AO под нужный меш.

Original size 2560x1389

MI_Door_01

После этого из Master Material необходимо сделать Material Instance. В нем справа от панели Details откроется панель Layer Parameters. В ней можно добавлять Слои и смешивать их между собой при помощи Блендов.

На скриншоте изображается слой-бэкграунд, или слой-фундамент (MI_Stone), сверху на него накладывается другой слой (MI_Moss) и смешиваются они при помощи простого бленда (MLB_SimpleGradient).

Original size 2550x1456

Material Instance и панель Layer Parameters

Создание Material Layers

Создать Material Layers можно также, как и обычный Материал: Material > Layers > Material Layer.

В ходе работы соберется простая локация, которая будет состоять из зданий и покрытых песком и пылью поверхностей, земли, камней и дерева. Для этого необходимо сделать небольшое количество Material Layers под определенные группы материалов: Moss, Stone, Wood, Wallpaint, Sand и Sheen.

Original size 851x231

Material Layers

В Material Layer нода MakeMaterialAttributes схожа с созданием обычного материала в Unreal Engine 5.

Original size 2341x1392

MakeMaterialAttributes

Для того, чтобы сделать слои более комплексными и текстурными, в Material Layer с помощью карт шумов, предварительно сгенерированных в Substance Designer, можно собрать несколько «мазков», дополнительно добавляя к ним скалярные параметры, такие как Tiling, Contrast, Opacity, а также цвет. Таким образом, впоследствии в панели Layers Parameters в Material Instance я могу менять размер «мазков», их цвет и контрастность. Это главное преимущество Material Instance, которое позволяет делать процесс создания локации в Unreal Engine быстрее и комфортнее.

Original size 1830x678

«Мазки» из карт шумов в Material Layer Editor

Нодовая система в шейдинге в Unreal Engine 5 последовательна и многоступенчата, а отдельные выделенные рамками группы представляют собой «мазки» на текстуре. На картинке представлен пример Material Layer для мха и травы (далее ML_Moss). Первой группой идет Initial Brushstrokes. Чтобы их было удобнее визуально разделять, ноды обрамлены, названы, разделены по цветам. Следом подключаются ноды из групп Dots, Handpaint, Splatters, Dot Spots, Roughness и Normal.

Original size 2560x1393

Brushstrokes

Текстура шума разделяется на 3 раннее заготовленных текстуры (3 канала R, G и B), каждая из которых, в свою очередь, подключается к таким параметрам, как Opacity, Contrast, Color.

Original size 2560x1393

Dots

Original size 2560x1389

Handpaint

Original size 2329x1390

Splatters

Original size 2340x1384

Dots Top, Roughness и Normal

Таким же образом заготавливаются и другие слои: ML_Sheen, ML_Wood, ML_Sand, ML_Wallpaint и ML_Stone.

0

ML_Sheen

Также карты шумов можно использовать для создания неровностей и шероховатостей, подключив к Normal в MakeMaterialAttributes через ноду PreparePerturbNormalIHQ.

0

ML_Wood

0

ML_Wallpaint

Original size 2560x1389

ML_Sand

0

ML_Stone

Создание Material Layer Blend

Material Layer Blend — это функция, основная задача которой является смешивание между собой слои по определенным принципам, заложенным в его графе. Создать его можно также через ЛКМ и Layers.

Простой Material Layer Blend (далее MLB) представлен в виде обычного градиента, который смешивает два базовых слоя (белый и синий), и, при помощи рулек в Material Instance и добавленных скалярных значений Add и Blur, два слоя смешиваются через градиент.

Original size 2560x1392

Material Layer Blend — Simple Gradient

Смешивание производится по системе, которая выстраивается также через ноды в Material Editor. На картинках представлены использованные мною MLB.

Original size 2560x1390

MLB_SimpleGradient

0

MLB_Gradient_Texture

MLB позволяет производить смешивание через карты шумов, сгенерированных ранее с помощью нод в группе «Input Noise Texture».

Original size 2560x1393

MLB_Mask

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

Original size 2560x1392

MLB_VertexPaint_from_Gradient

Original size 2560x1393

MLB_SubtleNoise

В MLB_SubtleNoise можно создать маску, и в этой маске будет производится текстурирование с другой картой шумов.

Объединение Material Layer и Material Layer Blend

Original size 2560x1393

MI из одного слоя

Для начала необходимо создать MI и поместить в него базовый слой (Background). После его размещение убрать его нельзя, но поменять можно. Базовый слой — камень (ML_Stone).

Original size 2560x1392

Изменение ML_Stone

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

Original size 2560x1392

ML_Sand

Если нажать на знак «+» напротив Material Layers, добавляется новый Layer и автоматически с ним окно для Material Layer Blend. MLB_GradientTexture позволяет через карту шума произвести смешивание двух слоев, а также сделать аккуратный градиентный переход.

Original size 2560x1393

2.2. Сборка локации

Для текстурирования локации необходимо сделать предварительную заготовку из низкополигональных и высокополигональных моделей и запеченных карт нормалей, ambient occlusion и curvature. Для дальнейшей работы был собран небольшой ассет пак, состоящий, по большей части, из модульных ассетов.

Original size 4076x2246

Custom asset pack

0
0

Для придачи более утрированного и стилизованного эффекта, скульптинг ввелся с применением Knife Slice и кисти Trim. Вкупе они создавали эффект резанных краев и острых углов. Далее производилось оптимизирование высокополигональной модели с помощью инструмента Decimate и на выходе получался низкополигональный меш. Не выходя из Zbrush с плагином UV Master можно «порезать» модель на UV островки.

Для работы с Material Layer необходимо было сделать маски Curvature. В том же Zbrush через инструментарий Masking — Mask by Curvature можно быстро подкрасить с Polypaint края и нарисовать маску.

Original size 1501x798
0
0

Создание Curvature Map

Затем использовалась простая программа xNormal, специализирующаяся только на запекании текстур. Ее интерфейс интуитивно понятен и прост. Необходимо добавить высокополигональную и низкополигональную модель и выбрать карты, которые нужно запечь.

0

xNormal

0

Normal и AO maps

Для создания маски Curvature в разделе «High-Definition Meshes» нужно отжать галку «Ignore per-vertex color», чтобы программа учитывала Polypaint. В «Maps to render» для запекания Polypaint необходимо выбрать «Bake highpoly’s vertex color».

0

Curvature Map

2.3. Material Layering в окружении

В процессе работы с Material Layers была собрана локация трущоб. Они состоят из модульных старых песчаных домов, которые больше похожи на муравейники или другие природные образования, не созданные человеком. Над главным героем нагромождаются высокие человейники и руины, в которых все еще кто-то живет, поэтому блокинг производился огромными кубами.

0

Блокинг

Заготовленный ассет пак из модульных мешей позволил быстро заполнить локацию необходимыми зданиями и образованиями и при этом сохранить масштаб и стилизованность.

0
0

Ассетирование

Благодаря приготовленным ранее Material Instances, карт Normal, AO и Curvature, процесс текстурирования занял всего несколько часов, и в то же время предоставил широкий диапазон возможного окрашивания моделей. Вариативность выбора текстур, цветов и карт шумов позволяла сделать несколько вариантов текстурирования для одного меша, при этом оставляя процесс таким же быстрым и интуитивным.

0

Текстурирование

0
Original size 3500x1883
Chapter:
1
2
3
4
5
We use cookies to improve the operation of the HSE website and to enhance its usability. More detailed information on the use of cookies can be fou...
Show more