Material Layering на базе UE5

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

big
Original size 4116x2214

Локация с сабстрейтом Material Layering System

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 нужно сделать эти текстуры параметрами и подключить их к ноде SetMaterialAttributes. Если соответствующие ноды отсутствуют, добавить их можно в настройках самого SetMaterialAttributes.

Original size 2560x1392

Normal и Ambient Occlusion

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

Original size 2560x1389

MI_Door_01

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

На скриншоте изображается слой-бэкграунд, или слой-фундамент (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 — это функция, основная задача которой является смешивание между собой слоев по определенным принципам, заложенным в его Material Editor. Создать его можно также через ПКМ и 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

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

Сравнение базового текстуринга и текстуринга с Material Layers

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