Мы делали ремастер
целый год
Gamedev
XYZ

PBR для новичков — материалы, пайплайны и текстурные карты

Всё о работе с физически корректной визуализацией от преподавателя курса «Процедурный трип» Антона Агеева.

В июне на нашем YouTube-канале прошёл стрим с Антоном Агеевым, который уже больше семи лет занимается текстурами в игровой индустрии и успел поработать с Nival, Playrix и Game Insight. Антон рассказал, что такое PBR, разобрал параметры материалов, основные пайплайны работы и дополнительные текстуры.

На стриме он работал в Substance Painter и Marmoset Toolbag, но все принципы применимы и в других утилитах. Ниже пересказываем самые важные моменты стрима.

Что такое PBR

PBR расшифровывается как Physically Based Rendering — физически корректная визуализация. То есть, рендеринг материалов происходит с учётом законов физики. Основное преимущество материалов с этой технологией в том, что их можно использовать и в программах для рендеринга, и в игровых и неигровых движках — от одной утилиты к другой пайплайн материала не меняется.

Применяя одни и те же текстуры [PBR] в разных движках, вы будете получать немного разный результат, но если они правильно откалиброваны, то их суть будет оставаться неизменной и они будут выглядеть хорошо и в Unity, и в Unreal Engine, и в любом не-real time рендере с трассировкой.Антон Агеев

Антон Агеев

Типы материалов

Существует два основных типа материалов: диэлектрики и металлы. Их отличие во взаимодействии с освещением состоит в том, что металлы не пропускают внутрь себя свет.

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

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

При падении света на материалы обоих типов действует эффект Френеля. Согласно ему степень отражений зависит от угла падения света на поверхность. Чем острее угол — тем больше света отразится. Отражающая же способность диэлектриков равна количеству света, которое отражает материал при освещении под прямым углом.

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

В реальности по закону сохранения энергии количество отражённого света не может превысить количество поглощённого. В Marmoset Toolbag есть специальный чекбокс Conserve Energy, который «следит» за выполнением этого закона. Если он включён и сумма зеркальных и диффузных отражений равна 1 или больше, то диффузные отражения начинают затухать. А если зеркальные отражения равны 1, то диффузные отражения вообще перестают на что-то влиять. То есть сохраняется «реалистичность» материала.

Такая ситуация, то есть высокий показатель зеркальных отражений и отсутствие диффузных, характерна для металлов.

Когда вы настраиваете металлы, цвет диффузных отражений нужно убирать.

Антон Агеев

Параметры материала:

Albedo (диффузный цвет). Это сила и цвет диффузных отражений. У металлов их нет, поэтому Albedo у них чёрный. В текстуре Albedo в PBR, в отличие от пастгена, не должно быть запечённого освещения, бликов и теней. Цвет должен выглядеть так, будто взят с поверхности, которая обращена к камере под прямым углом и освещена 100% белым рассеянным светом. В Albedo лучше избегать ахроматических и «открытых» цветов, корректный диапазон для этого параметра — 50-245 в sRGB.

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

Диапазон корректных значений для диэлектриков — 2-14%. 8-14% отражают редкие материалы вроде рубина или алмаза, а у большинства других показатель находится в диапазоне 4-6%. Диапазон металлов — 60-100%. 100% отражают некоторые чистые металлы, но они встречаются редко, так что лучше держаться в пределах 96%.

Как только Reflectivity падает ниже 60%, тут же должен подключаться цвет Albedo, потому что материалов, которые просто поглощают столько света и ничего не отдают назад, не существует.

Антон Агеев

Чистых материалов с коэффициентом отражений 14-60% почти не бывает. Такое значение может получиться только при сильном загрязнении или окислении. Также Reflectivity металлов в большинстве случаев никогда не меняется.

Microsurface (шероховатость/микрорельеф/глянцевость поверхности). Этот параметр указывает, насколько гладкой или шероховатой является поверхность вашего материала.

Очень часто новички путают Reflectivity и Microsurface, потому что им кажется, что если отражения чёткие, то материал отражает хорошо, а если размытые, то материал отражает плохо, хотя процент отражений никак не меняется. Гладкие поверхности просто отражают свет под правильными углами, а матовые — с большим количеством искажений.

Антон Агеев

Пример влияния рельефа на отражения

В работе с Microsurface тоже лучше избегать крайних значений. Для большинства материалов корректным диапазоном будет 0,1-0,9.

Пайплайны материалов

Существует два основных пайплайна, которые основаны на базовых параметрах: Specular/Gloss и Metallic/Roughness. Под пайплайном здесь имеется в виду не порядок действий при работе, а набор текстур материала.

Specular/Gloss. В этом пайплайне используется три основных текстуры: Diffuse, Specular и Glossiness.

С одной стороны, это простой для понимания пайплайн, с другой — сложный для настройки.

Антон Агеев

Параметр Diffuse отвечает за силу и цвет диффузных отражений. Specular — за силу и цвет зеркальных. Проверить правильность этого параметра относительно материала можно с помощью специальных таблиц, где за Specular отвечает цвет напротив буквы S. А параметр Glossiness отвечает за то насколько гладкая и шероховатая поверхность материала.

Калибровочная таблица от Quixel

Metallic/Roughness. Этот пайплайн, по словам Антона, сложнее для понимания, но проще для применения. За параметр Albedo в нём отвечает текстура BaseColor, за Reflectivity отвечает Metallic, а за Microsurface — текстура Roughness. Условно, Roughness и Glossiness — это инвертированные текстуры, то есть низкое значение первой соответствует высокому значению второй и наоборот.

Когда параметр Metallic равен 1, то текстура BaseColor отвечает за отражающую способность материала и работает аналогично параметру Specular из Specular/Gloss. Если же он равен 0, то BaseColor отвечает за силу и цвет диффузных отражений, то есть материал отражает свет как диэлектрик.

В данной системе мы не можем настроить числовое значение отражающей способности для диэлектриков, потому что, когда BaseColor отвечает за диффузное отражение, нет «крутилки», которая отвечает за процент отражения. Но на глаз отличить разницу этого показателя у диэлектрика сложно, поэтому в пайплайне отказались от этой настройки в угоду оптимизации — отражающая сила в нём заблокирована на 4% и её нельзя изменить.

Антон Агеев

Также, по словам Антона, многие считают, что Metallic не может быть равен промежуточному значению, но на самом деле «лок» на 0 или 1 обычно продиктован техническими ограничениями.

Правильность выставленных параметров в Substance Painter можно отследить с помощью фильтра PBR Validate. Его нужно применить поверх всего, что есть в документе — тогда некорректные с физической точки зрения зоны будут окрашены в красный цвет.

Пример использования PBR Validate

Преимущества и недостатки пайплайнов

У Specular/Gloss несколько минусов. Во-первых, он сложнее для новичков, потому что в работе с ним нужно постоянно сверяться с таблицами и следить за значением Specular. Во-вторых, он более ресурсоёмкий, потому что использует две цветные текстуры — цвет есть и у Diffuse, и у Specular.

Но в нём можно настроить числовое значение отражающей способности диэлектриков. Таким образом, если в одной текстуре используются несколько типов диэлектриков, можно более тонко настроить отражения для каждого из них.

В обоих пайплайнах в местах перехода одного материала в другой появляется «окантовка» шириной в один полупрозрачный пиксель, но в Specular/Gloss она не так заметна, потому что окрашена в чёрный, а в Metallic/Roughness у неё белый цвет.

«Окантовка» в Metallic/Roughness

Избежать этого можно, если повысить разрешение текстуры, или с помощью эффектов. Сначала нужно размыть текстуру Metallic, а затем с помощью фильтра Histogram Scan уменьшить или увеличить радиус размытия.

Дополнительные текстуры — что это и как этим пользоваться

Помимо основных Albedo, Reflectivity и Microsurface существуют и необязательные вспомогательные текстуры, которые делают процесс работы удобнее или дополняют материал.

Curvature Map — это «карта кривизны», чёрно-белая текстура, на которой яркость пикселя показывает изменение кривизны поверхности. С помощью Curvature Map можно получить маски внутренних (Cavity) и внешних (Concavity) углов, а получить эту текстуру можно из Normal Map через конвертацию. О том, что такое Normal Map, мы подробно писали здесь.

Пример Curvature Map и зависимости цвета и кривизны

Для создания текстуры Антон сначала добавил на модель пустую маску, а затем добавил на неё карту Curvature. После этого он применил эффект Levels, который позволил специальным ползунком регулировать значение текстуры.

Ambient Occlusion — это текстура «самозатенения», которая может использоваться и как дополнительная, и как одна из основных текстур материала. В Marmoset Toolbag для неё есть отдельный слот, в котором её можно дополнить текстурой Cavity.

[Она показывает] тени, которые возникают в условиях полностью рассеянного освещения, то есть когда нет направленного источника, а есть просто среднее освещение вокруг, и есть места на модели, куда свет попадает меньше или больше.

Антон Агеев

На основе инвертированной AO с Curvature Map можно создать, например, текстуру загрязнения. Антон объяснил, как это работает, на примере модели канистры — грязь скапливается сильнее в труднодоступных местах, как и свет.

Position Map — эта текстура содержит несколько градиентов, которые проходят вдоль одной из осей модели. Она используется для создания различных эффектов вроде того же загрязнения.

World Space Normal — это текстура нормалей в мировых координатах. Она используется для создания базовых масок по схожему с Position Map принципу, но вместо однородного градиента World Space Normal учитывает топологию модели.

Её можно даже использовать в качестве Normal Map до тех пор, пока объект не поворачивается, так как в WSN сохранены данные мировых координат нормалей.

Color ID — это цветная текстура. Она содержит цветные маски, которые можно в любой программе конвертировать в чёрно-белые. Чаще всего её используют в двух случаях: при большом количестве деталей, которые не поддержаны геометрией, и моделировании однотипных ассетов с похожими материалами.

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

Антон Агеев

Пример Color ID на той же канистре

Thickness — «текстура толщины», на которой обозначается толщина поверхности в конкретном месте. Чем темнее пиксель — тем тоньше. Она запекается похожим с Ambient Occlusion образом. Если инвертировать нормали Ambient Occlusion, то получится текстура Thickness.

Она используется в основном для материалов с эффектом поверхностного рассеивания. Например, для человеческой кожи, некоторых камней и фруктов.

Малахитовая лягушка с текстурой Thickness

Автор статьи: Валентин Шакун

Материал подготовлен командой XYZ Media.

Наши каналы в Telegram и на YouTube.

0
3 комментария
Популярные
По порядку
Владислав Крот

У меня вопрос такой. За что материал заминусовали? Только из-за того что это XYZ, так у них медиа отдел отделен от школы

Ответить
3
Развернуть ветку
Lime is Fine

отделение блоком подписи не считается

Ответить
0
Развернуть ветку
Государственный инструмент

Да

Ответить
0
Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку
Читать все 3 комментария
null