Геймдев
#статьи

Что такое PBR-материалы

Как создавать их на основе фотографий и дополнительно настраивать в Unreal Engine 5.

Иллюстрация: Оля Ежак для Skillbox Media

В работе с реалистичной 3D-графикой очень важно учитывать, как свет взаимодействует с той или иной поверхностью. Иначе как понять, например, что перед вами именно необработанная, а не покрытая столярным клеем доска? В 3D эту задачу берут на себя PBR-материалы.

Из этого материала вы узнаете:


Что такое PBR

PBR (от англ. physically based rendering) — это метод наложения шейдеров и рендеринга, обеспечивающий взаимодействие света с материалом в соответствии с законами физики. Впрочем, встречаются проекты и со стилизованной графикой, в которых применяют такой тип рендеринга, чтобы подчеркнуть акцент некоторых материалов при освещении и продемонстрировать современные технологии.

PBR-материалы — один из главных элементов фотореализма. Они наделяют поверхность определёнными свойствами, за счёт которых трёхмерный объект выглядит практически как настоящий.

Слева объект с обычными текстурами, справа — с применением PBR-свойств
Изображение: Joe «EarthQuake» Wilson / Marmoset

Сходства и отличия PBR и PBS

В 3D-графике иногда встречается аббревиатура PBS (от англ. physically based shading) — шейдинг, основанный на законах физики. Фактически оба термина — PBR и PBS — почти идентичны и описывают физические свойства ассетов. Правда, упоминание о PBS встречается, когда речь идёт о шейдерах текстур, а PBR больше связан с рендерингом и освещением.

Для чего нужны PBR-материалы

Рендеринг в движке, будь то Cycles (Blender) или Unreal Engine 5, имитирует физику реального мира, в том числе в отношении света. В реальной жизни законы физики не меняются, как и тип поверхностей предметов. На их внешний вид может повлиять только освещение — жёсткий, рассеянный, цветной свет, — но свойства поверхности остаются прежними.

И PBR-материалы помогают сохранить эти свойства в 3D независимо от условий освещения, что усиливает эффект реализма.

Элементы PBR, которые могут повлиять на итоговый материал

Физика световых лучей

Отражение

В зависимости от матовой или глянцевой поверхности объекта отражение бывает рассеянным или зеркальным соответственно. Зеркальное отражение на идеально ровной поверхности работает по принципу закона отражения. В результате появляются небольшие, но яркие блики, в зависимости от того, под каким углом зритель смотрит на объект. От матовой поверхности лучи света отражаются по принципу модели освещения Ламберта, то есть равномерно под любым углом. Но, независимо от структуры объекта, все поверхности отражают одинаковое количество света. Параметр отражения в 3D можно настроить с помощью карты Specular или Metallic.

Модель освещения Ламберта хорошо работает только на ровной поверхности (например, матовое покрытие коробки) и полностью игнорирует то, что в 3D называют шероховатостью (Roughness), гладкостью (Smoothness), глянцевитостью (Glossiness) или микроповерхностью (Microsurface). Чтобы подчеркнуть такие свойства, в дополнение к основной карте отражения используют дополнительную карту глянцевитости (Glossiness Map) или шероховатости (Roughness Map) — в зависимости от подхода к текстурированию.

С более подробным описанием процесса отражения лучей в реалистичной графике можно ознакомиться в лекции Эндрю Прайса «Секреты фотореализма в 3D для начинающих».

Шкала отражений шейдеров Metallic и Roughness
Изображение: Compositing Mentor

Поглощение и рассеивание

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

Когда свет рассеивается, направление лучей становится хаотичным в зависимости от фактуры материала, но интенсивность излучения при этом не меняется. В результате подобного явления мы видим, как просвечиваются листья деревьев или уши на солнце. В 3D-графике это явление называется Subsurface scattering (SSS), то есть подповерхностное рассеивание.

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

Из этого следует, что свойства поглощения и рассеивания света зависят от толщины объекта. Чтобы подчеркнуть это явление в 3D, художники используют дополнительные карты толщины (Thickness Map), а для оттенения отдельных участков — карту прозрачности (Transfluency Map), которую мы упоминали в одном из прошлых материалов. Иногда этого можно достичь с помощью шейдеров — например, в Unreal Engine можно настроить подтон основной текстуры, который будет проявляться во время просвечивания.

Поверхность объекта с использованием Thickness Map
Изображение: SideFX Labs

Преломление

Преломлением в физике называют изменение направления светового луча во время перехода из одной среды в другую. Примером такого явления может стать искажённое отражение окружения на гладкой поверхности или визуально кривая ложка в стакане с водой.

Чтобы узнать величину искажения, в 3D используют индекс преломления, он же IOR (от англ. Index of Refraction). В физике у каждой субстанции есть свой индекс преломления. В 3D его не запекают в текстуру, а настраивают непосредственно в самом игровом движке или в системе рендеринга, вводя в настройках шейдеров значение из таблицы. Также IOR используют для расчёта отражений или нулевого значения Френеля, речь о котором пойдёт чуть ниже.

Изображение: Erik Keller

Закон сохранения энергии

В современные движки и системы рендеринга уже заложен фреймворк для взаимодействия света с материалом, основанный на принципе сохранения энергии. Это значит, что материал не может отразить больше света, чем было изначально. Как и IOR, этот параметр можно отрегулировать непосредственно в программе.

Пример настройки отражения материалов в соответствии с законом сохранения энергии в Blender (движок Cycles)

Природа материала: проводники и диэлектрики (металлы и неметаллы)

Перед тем как приступить к созданию PBR-материалов, художник сразу должен определиться, какая поверхность будет в итоге — металлическая или нет. Если это металл, важно определить наличие следующих особенностей будущего материала:

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

Известно, что обработанные металлы отражают свет на 100%. Цветные металлы поглощают свет на разных частотах видимого излучения. Часть лучей поглощается и перерабатывается в энергию. В результате отражённый свет формирует итоговый оттенок металла. Например, золото поглощает синий цвет, поэтому мы видим его жёлтым. Вот почему при создании PBR-материалов металлов используют не цветные изображения в карте Diffuse, а шейдер Base Color.

Значения цветового спектра RGB для некоторых диэлектриков и металлов на основе таблицы рендеринга UE4
Источник: 3D and AR software — Adobe Substance 3D. Инфографика: Майя Мальгина для Skillbox Media

Если металл создаётся на основе набора карт Diffuse/Specular/Glossiness, то Diffuse Map будет чёрного цвета, а участки отражения отмечаются характерным цветом в карте Specular. Но на сегодняшний день для создания металлических поверхностей художники всё чаще отдают предпочтение подходу Base Color / Metallic / Roughness, так как технически он более прост в исполнении и занимает меньше ресурсов.

Сравнение подходов использования карт Specular и Metalness

В отличие от металлических поверхностей, на неметаллах происходит преломление света. Преломлённый свет рассеивается и (или) поглощается и зависит от альбедо материала.

Подчеркнуть природу диэлектриков и проводников также поможет эффект Френеля. Когда свет попадает на поверхность под углом 90°, края объекта отразят все световые лучи, при этом в центре (0°) отразится лишь определённый их процент в зависимости от природы самого материала. Это значение называют F0, то есть нулевое значение Френеля.

Диапазон F0 для большинства неметаллов варьируется от 0,02 до 0,05 (линейные значения), за исключением драгоценных камней (0,08). Для металлов — в пределах 0,5–1,0.

Во многих системах рендеринга F0 рассчитывается автоматически, достаточно указать данные индекса преломления в шейдере. А в некоторых программах и вовсе существуют утилиты с готовыми шаблонами для определённого типа материалов.

PBR-текстуры на основе фотографии

Сейчас практически на любом портале для 3D-художников доступны готовые наборы PBR-материалов для разных задач. Но что, если проект хочется дополнить уникальными материалами на основе собственных фотографий? Сделать это не так сложно, как кажется, но нужно соблюдать несколько правил.

Как сфотографировать поверхность для будущей текстуры

Неважно, какую поверхность вы хотите увековечить в текстуры — кору дерева, почву или кирпичную стену, — съёмку лучше всего проводить в облачную погоду. Это условие обеспечивает естественное рассеянное освещение. Если на улице солнечно — снимайте объект в тени. Таким образом освещение будет равномерным, без пересветов и слишком контрастных теней. Если же съёмка проводится в помещении, следует позаботиться о расстановке ламп с рассеянным светом.

Во время снимков поверхности важно не допустить искажений, поэтому камера должна находиться под прямым углом. Помимо штатива, рекомендуется использовать объектив 50 mm. Он даёт хороший фокус, не искажая фотографию, и улавливает мельчайшие детали. Если вы снимаете на смартфон, подберите в настройках камеры самый оптимальный режим, приближённый к этому фокусу. PBR-текстуры заочно подразумевают высокое разрешение, поэтому не забудьте выставить его в настройках.

Примечание. Чтобы установить фокус 50 mm в iPhone, коснитесь выбора фокуса в режиме камеры в нижней части экрана. Удерживая кнопку управления масштабированием, перемещайте ползунок до значения 2,2. Данная функция доступна для моделей с двойной и тройной камерой.

В качестве основы для будущего материала мы сняли кору старого дерева
Фото: Skillbox Media

Обработка снимка

Готовый снимок необходимо обработать в Photoshop или в другом редакторе следующим образом:

  • Нужно определить, какая область изображения будет в итоговой текстуре. С помощью инструмента кадрирования (квадрат) — обрезать лишнее и установить нужное разрешение. В качестве универсального размера можно остановиться на 2K (2048×2048 пикселей).
  • В качестве основы для PBR лучше взять Albedo Map, которая не предполагает слишком ярких и тёмных участков. Даже если объект был снят в облачную погоду и на снимке нет засвеченных областей, затемнённые места (трещины, сколы, швы) нужно немного осветлить в графическом редакторе или специальной программе для текстур.
Руководство по созданию карты альбедо в Photoshop и сравнение полученного результата в программах CrazyBump и PixPlant
  • Если изображение предназначено для тайлового текстурирования, желательно, чтобы количество уникальных деталей (крупная трещина посередине или сбоку, массивный участок мха, царапина и так далее) было сведено к минимуму. В противном случае при текстурировании большой площади эти акценты будут выглядеть неестественно. Чтобы быстро избавиться от них, в Photoshop выделяем проблемную область инструментом «Лассо», нажимаем Shift + F5, выбираем опцию «С учётом содержимого» и подтверждаем действие. Редактор аккуратно заполнит фоном пространство.
Текстура до и после редактирования
Изображение: Skillbox Media
  • Для того чтобы будущая текстура получилась без стыков, её нужно сделать бесшовной. Такая коррекция доступна не только в Photoshop, но и в других программах — к примеру, в PixPlant или Materialize.
Создание бесшовной текстуры в Photoshop

На основе полученной текстуры можно сгенерировать остальной набор технических карт. Существует много программ, где доступна подобная операция, например Substance 3D, Autodesk Mudbox или ShaderMap. В рамках этого материала рассмотрим создание набора текстур в бесплатной программе Materialize, которую легко освоить начинающему пользователю.

Создание PBR-текстур в Materialize

Интерфейс программы
Скриншот: Materialize / Bounding Box Software

Интерфейс Materialize достаточно простой для понимания. Сбоку находится трёхмерная рамка с плоскостью, которая визуализирует все изменения с материалом. В верхнем левом углу расположены окна, в которые нужно загружать карты. Буквы на панелях означают операции:

  • P (Paste) — вставить изображение из буфера обмена;
  • С (Copy) — копировать;
  • O (Open) — открыть файл;
  • S (Save) — сохранить изображение.

Нижние кнопки также связаны с основными действиями:

  • Quick Save — быстрое сохранение;
  • Preview — предпросмотр;
  • Edit — вызов редактора настроек текстуры;
  • Clear — удалить карту.

Для начала загрузим в слот Diffuse Map карту альбедо, в нашем случае — отредактированную. После загрузки её можно дополнительно изменить в настройках Edit. Например, подкрутив ползунок Remove Shadow можно осветлить тёмные участки, не прибегая к Photoshop.

Интерфейс настроек диффуз-текстуры в Materialize. По умолчанию плоскость визуализирует результат наполовину, чтобы его можно было сравнить с оригинальным значением
Скриншот: Materialize / Bounding Box Software

Так как на древесных стволах встречаются выпуклые участки, создадим карту высот, которую в дальнейшем сможем использовать в качестве карты смещения. Нажимаем Create в окне Height Map, и программа сгенерирует текстуру на основе оригинальной (или изменённой, если оригинальная карта была изменена в настройках) Diffuse Map.

Светлые пятна карты формируют выпуклые участки, поэтому во время экспериментов с настройками убедитесь, что они не затрагивают щели и впадины. Делать тёмные участки слишком резкими не стоит, иначе вся поверхность покроется острыми шипами. Чтобы понять, насколько корректно выставлены настройки, нажимаем на Show Full Material. В опциях в нижней левой части экрана можно указать примитив, на котором будет визуализирован материал. Для большей наглядности в данном примере выбран цилиндр (Cylinder), и на этой модели видно, что смещения в геометрии конкретно для этого материала незначительны.

Настройка Height Map и её визуализация на цилиндре
Скриншот: Materialize / Bounding Box Software

Аналогичным способом создаём карту нормалей (Normal Map). Как и в Height Map, здесь есть готовые шаблоны для будущей поверхности:

  • Default — по умолчанию;
  • Smooth — гладкая;
  • Crisp — шершавая;
  • Mids — среднее значение.
Ствол дерева достаточно рельефный, поэтому в примере выставлен шаблон Crisp и немного увеличен параметр Angular Intensity
Скриншот: Materialize / Bounding Box Software

Чтобы добавить текстуре затенений, создаём карту Ambient Occlusion (AO Map).

Визуализация материала с Ambient Occlusion
Скриншот: Materialize / Bounding Box Software

Если бы древесина была обработанной, потребовалась бы карта отражения (в Materialize её создают в окне Metallic). Но в данном случае можно лишь подчеркнуть матовость, добавив шероховатости (в Materialize это Smoothness Map).

Настройка Smoothness Map
Скриншот: Materialize / Bounding Box Software

Осталась последняя карта — Edge Map. Она не входит в основной набор, но с её помощью можно дополнительно подчеркнуть мелкие детали поверхности.

Краткое объяснение работы Edge Map в Materialize

Материал готов. Теперь нужно выбрать расширение файла, в котором будут экспортированы итоговые текстуры (в данном случае — PNG), и нажать кнопку Save Project. Набор карт вместе с проектом сохранится в выбранной папке.

Визуализация итогового материала в Materialize
Скриншот: Materialize / Bounding Box Software

Примечание. В Materialize есть инструмент для создания бесшовных текстур. Открываем меню Tile Map, выбираем количество тайлов (2 или 4, как было в видеоруководстве по Photoshop выше). Во время прокрутки ползунков Overlap X и Overlap Y края изображения начнут смещаться, после чего можно добавить параметр Edge Falloff, который сгладит стыки. Этот способ хорошо работает с геометрическим рисунком. Если поверхность неоднородная, лучше прибегнуть к ручной коррекции.

Чтобы оценить результат, перенесём набор в Unreal Engine 5. На сайте Materialize можно скачать шейдеры для Unreal Engine и создать материал по их образцу в движке.

Примечание. Ассеты Materialize, как и любые другие файлы с расширением .uasset, нужно загружать в проект не путём перетаскивания в Content Browser, а копированием всех папок в директорию Content (проекта, а не самого движка).

Импорт материалов в игровой движок Unreal Engine 5

Открываем проект и создаём материал, предварительно загрузив папку с созданными текстурами в Content Browser и скопировав в папку Content на жёстком диске ассеты от Materialize. В папке Shaders находим материал Materialize_Standart_Displace и открываем его Material Graph. Выделяем всю цепочку нодов и копируем её (Ctrl + C). Заходим в редактор нодов собственного материала, вставляем шейдеры и добавляем сгенерированные карты в ноды, соответствующие названию текстур.

Текущую структуру материала можно немного упростить. На результат это не повлияет, но нодов станет меньше. Если материал предполагает тайлинг, левую связку параметров заменяем нодами TexCoordinate и UVTiling (в последнем можно указать, сколько раз текущее изображение нужно размножить). Оба этих элемента подключим к объединяющему ноду Multiply и свяжем со всеми UV-слотами текстур.

В данном материале отсутствует текстура Metallic Map, поэтому мы удалили эту цепочку. Но так как поверхность в любом случае должна отражать свет, нужно обязательно указать значение для шейдера металла. Для этого создаём нод Constant, вписываем в него значение 1 и присоединяем к шейдеру Metallic.

Цепочку нодов с картой Height Map, которую мы планировали использовать в качестве карты смещения, тоже придётся удалить. С появлением Nanite прежняя технология тесселяции, которая поддерживала такой тип текстур, стала неактуальной, а значит, избавляемся и от Tess Multiplier. В теории Height Map можно было бы подключить как карту высот/параллакса, но для наглядности нам нужно продемонстрировать выступающий рельеф материала, а не его имитацию. В этом поможет новая система геометрии движка. А пока применяем все настройки кнопкой Apply и сохраняем материал.

Скриншот: Unreal Editor / Epic Games

Чтобы понять, как материал будет смотреться в сцене при стандартном освещении Skylight, создадим примитив (первый раздел Shapes) в режиме Modeling. В нашем случае это будет цилиндр. Теперь в меню режима выбираем опцию Remesh и увеличиваем количество трианглов. Не стоит опасаться огромного количества полигонов: в дальнейшем геометрию можно упростить. Перетаскиваем на новый объект готовый материал (это можно сделать и на стадии создания меша, перетащив его в соответствующий слот).

Цилиндр после установки материала
Скриншот: Unreal Editor / Epic Games

Находим в Modeling Mode инструмент Displace (раздел Deform) и нажимаем на него. Объект сразу стал слишком деформированным из-за установок по умолчанию. В первом параметре Displacement Type выбираем Texture 2D Map. Прокрутив чуть ниже, находим слот Displacement Map и перетаскиваем в него готовую карту.

Теперь можно поработать с основными настройками смещения карты (Displace Intensity и Displacement Map Base Value), увеличивая или уменьшая рельефность объекта. В текущей карте изначально зафиксировано незначительное смещение, поэтому выкручивать ползунки на высокие значения нет смысла: появятся дефекты геометрии, да и чрезмерно выпуклая поверхность в данном случае будет казаться неестественной. Если бы в качестве основы был меш плоскости и текстура с каменным ландшафтом, её можно было бы «выдавить» сильнее.

На выделенном материале можно заметить небольшое смещение геометрии, схожее с тем, что было в Materialize
Скриншот: Unreal Editor / Epic Games

Примечание. Закончив редактирование параметров смещения, не забудьте оптимизировать меш функцией Simplify в меню моделирования. После этого откройте свойства созданного Static Mesh и отметьте галочкой пункт Enable Nanite Support.

Настройка поддержки Nanite для мешей в Unreal Engine (пункт выделен красным)
Скриншот: Unreal Editor / Epic Games

Существует и другой способ настройки смещения геометрии через карту смещения — создание динамического меша с помощью блюпринтов. Подход отличается лишь гибкостью в настройках.

В результате мы создали PBR-материал дерева на основе фотоснимка, который в дальнейшем применили на простой объект. С помощью новых инструментов геометрии Unreal Engine 5 удалось подчеркнуть неоднородную поверхность материала.

Создание PBR-материала с тесселяцией Nanite в Unreal Engine 5.4

С обновлением 5.4 редактор Unreal Engine 5 стал поддерживать русский язык. Но, учитывая, что не все пользователи готовы переносить свои билды на эту версию или менять язык интерфейса, для удобства в статье представлены русскоязычные названия функций и их аналог на английском языке в скобках. Если название какой-то функции в движке ещё не перевели, сохраняется оригинальное название.

В версии 5.4 появился новый подход к тесселяции Nanite с применением карт Displacement. Эта техника подойдёт для создания поверхностей не только реалистичного ландшафта, но и статических сеток (мешей). Рассмотрим, как с её помощью можно подчеркнуть реализм PBR-материалов и придать поверхности осязаемый объем с помощью нодов в редакторе материалов, не прибегая к режиму моделирования.

Важно!

В настоящий момент тесселяция Nanite считается экспериментальной функцией движка. Представленный ниже способ поддерживают не все видеокарты. Даже при соблюдении всех условий и применении созданного материала с поддержкой Nanite, статическая сетка объекта может исчезнуть. Подобное явление у нас происходило с видеокартой Radeon RX Vega, но на ноутбуке с GeForce RTX 4070 метод работал без нареканий.

На форумах пользователям, столкнувшимся с этим явлением, рекомендуют обновить драйвера графического процессора, но, судя по ответам, это не всегда помогает решить проблему. Из этого можно сделать вывод, что из ситуации есть два выхода: либо перейти на более современное оборудование, либо использовать ранее описанный способ тесселяции с задействованным режимом моделирования, который по-прежнему остаётся актуальным.

Перед созданием нового материала потребуется совершить несколько действий.

Во вкладке Правка (Edit) открываем меню Плагины (Plugins) и в поисковой строке набираем Nanite, после чего высветится плагин Nanite Displaced Mesh. Ставим напротив него галочку и даём редактору перезапуститься.

Как упоминалось выше, тесселяция Nanite в 5.4 пока считается экспериментальной функцией, и пользователи отмечают, что она может не работать при непосредственном подключении через интерфейс редактора. Гораздо надёжнее подключить её вручную, что можно сделать двумя способами.

1. Ввести в консоли движка команду r.Nanite.Tessellation 1. Минус в том, что таким образом её нужно активировать каждый раз при открытии редактора.

2. Открыть файл DefaultEngine.ini проекта, который можно найти по адресу \unreal projects\название_проекта\Config. Находим абзац [/Script/Engine.RendererSettings] и вставляем под ним следующие строки:

r.Nanite.AllowTessellation=1

r.Nanite.Tessellation=1

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

В Каталоге ресурсов (Content Browser) создаём папку для будущего ассета и отдельную папку для текстур. Мы возьмём тот же набор текстур дерева, сгенерированный нами ранее. Но, в целом, для этого способа подойдёт любой набор текстур, в том числе те, которые можно найти в Starter Content. Главное, чтобы в нём была карта, подходящая для свойств смещения. Помимо Displacement Map, можно использовать карту высот/параллакса или особые карты с зашифрованными каналами красного, зелёного и синего цвета (чаще всего используются в играх или в ассетах Quixel).

Создаём новый материал и заходим в Граф материалов (Material Graph). После подключения экспериментального плагина Nanite в главном ноде появится новый слот Displacement. Создаём простую структуру материала, связывая карты с соответствующими слотами, как при обычной сборке материалов. Слот карты высот соединяем со слотом Displacement, который по умолчанию пока неактивен. Чтобы включить его, переходим в общие Сведения (Details) материала (клик ЛКМ по полю графа), набираем в поисковой строке Nanite и проставляем галочки напротив пунктов Enable Tessellation и Used with Nanite.

Чуть выше этих опций находятся те самые настройки смещения: Magnitude отвечает за его интенсивность, а Center содержит центральное значение точки карты высот, которое может варьироваться от 0 до 1. Для более простой настройки этих параметров создаём Экземпляр Материала (Material Instance). Применяем экземпляр на выбранную нами ранее статичную сетку. Выделяем меш, двойным нажатием ПКМ по значку объекта в категории Static Mesh открываем его свойства в Сведениях (Details) и в новом окне ставим галочку напротив опции Включить поддержку Nanite (Enable Nanite Support), как в предыдущем примере. Сохраняем ассет, возвращаемся в сцену и видим, что контуры статической сетки стали слегка неровными.

Скриншот: Unreal Editor / Epic Games

Чтобы усилить эффект, открываем инстанс-материал и в Сведениях (Details) ставим галочку напротив Displacement Scaling. Изменяем значения двух параметров до тех пор, пока нас не устроит конечный результат.

Можно добавить нод Texture Coordinate и связать его с картами, чтобы уменьшить рисунок текстуры на объекте, а также добавить переменные к различным характеристикам для более упрощённого регулирования свойств материала в реальном времени.

Данный подход к созданию PBR-материала со свойствами смещения самый простой, но одновременно упрощённый в плане точности. Тайловая текстура может обрываться на объектах в местах швов UV-развёртки, что негативно отражается на общем виде материала — в частности, на его рельефе, созданном с помощью Nanite Displacement. В этом случае лучше выбрать подход с использованием нодов WorldAligned, которые проецируют текстуру на статические сетки. Схема графа будет сложнее, при этом ноды WorldAlignedTexture (Normal, Reflection и прочие) можно связывать не напрямую с изображением текстуры, а с нодами TextureObject или TextureObjectParameter (для экземпляров материала), в которые уже можно добавить желаемую карту.

Пример сборки материала коры на основе метода WorldAligned. Более подробно об этом подходе можно узнать из видеоурока в полезных ссылках ниже
Скриншот: Unreal Editor / Epic Games

Итог

Способ, продемонстрированный в данном руководстве, — не истина в последней инстанции, и при углублённом изучении данной темы можно выработать свой подход к созданию PBR-материалов. Совершенству нет предела, главное — помнить о том, что свойства поверхности таких материалов должны соответствовать реальным прототипам при любом освещении.

Хотя наличие PBR-материалов существенно повышает реалистичность компьютерной графики, у подхода есть как положительные, так и отрицательные стороны.

Плюсы PBR-материалов:

  • Возможность создавать реалистичные ассеты. С ними зрителю проще идентифицировать поверхность объекта в 3D: доспехи из стали действительно кажутся стальными из-за того, что корректно переданы свойства металлов.
  • Поверхность не теряет своих свойств, независимо от системы освещения.
  • Универсальность. Неважно, в какой программе сделан набор PBR-текстур, его можно загрузить в любую систему рендеринга или игровой движок, что упрощает рабочий процесс.
Скриншот: Unreal Editor / Epic Games

Минусы PBR-материалов:

  • В готовых картах уже есть определённый набор данных, изменить которые без дополнительных манипуляций довольно сложно. Например, если художник хочет внести изменения в отдельные карты (уменьшить рельефность или усилить шероховатость), ему придётся дорабатывать их в отдельном порядке. Соответственно, другим техническим картам тоже могут потребоваться изменения.
  • Несмотря на универсальность материалов, у каждого движка или системы рендеринга существует свой набор технологий (как в случае с характеристиками смещения в Unreal Engine 5), поэтому не исключены дополнительные манипуляции с шейдерами. К тому же без шаблона начинающему пользователю будет сложно собрать материал с нуля.
  • Создание собственных PBR-материалов потребует теоретических знаний физики в отношении освещения. Если художник допустит ошибку, материал будет выглядеть неестественно.

Полезные ссылки с ресурсами о PBR

  • Энциклопедия по PBR с уклоном в Unreal Engine. В документе можно найти исчерпывающую информацию по физическим свойствам различных материалов, а также значения, которые можно задать в переменных для шейдеров.
  • Руководство по настройке шейдеров из официальной документации Unreal Engine 5.
  • Подборка уроков по созданию и настройке материалов в Unity.
  • Видеоурок с подробным объяснением настроек шейдеров для материалов в UE4/UE5 (канал Braytonks3D).
  • Подробный видеоурок по созданию материала в Unreal Engine 5.4 с Nanite Displacement и проецирующими нодами WorldAligned (канал O. Song).
  • Лекция о PBR с уклоном в Blender (канал Blender Guru).

Любите игры? Попробуйте себя в геймдеве!

❓ Кто вы: геймдизайнер, разработчик, концепт-художник? Узнайте на бесплатном курсе

😼 Узнать, кто я →
Кто вы в мире геймдева? Узнайте на бесплатном курсе ➞
Вы на практике попробуете 3 профессии: геймдизайнера, 2D-художника и разработчика на Unity. Создадите свою первую игру в стиле Mario. Подробности — по клику.
Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована