pbr textures что это

Что такое PBR? Часть V

Ранее в блоге.

Часть I — кратко затронул историю становления термина PBR и вывел главный тезис. PBR это не шейдер и не текстура или какой-то отдельно взятый рендер движок — это в первую очередь принципы и основы современной компьютерной графики, кто-то называет это философией.

Часть II — была посвящена такому понятию как PBS — Физически корректный шейдинг, как неотделимая часть физически корректного рендеринга. Кратко рассмотрел, что такое BRDF функции.

Часть III Реализация GTR (GGX) функции в V-ray. Альтернативные, физически корректные, BRDF модели. Аналитические BRDF модели (Merl библиотека). Коммерческие BRDF решения — VRscans (VrayScanedMtl)

Часть IV.I — PBR шейдинг в Дисней. Реализация в V-ray
Часть IV.II — PBR шейдинг в Дисней. Реализация в V-ray
Часть IV.III — PBR шейдинг в Дисней. Реализация в V-ray

Часть V — PBR текстуры (Заключительная часть цикла)

Финал

Финальная статья цикла, будет посвящена PBR текстурам. Сразу определю — PBR или «не PBR» текстур не бывает. Бывают текстуры отвечающие или не отвечающие PBR принципам.

Изначально, была идея написать статью исключительно о PBR текстурах. Она возникла после того, как я прикупил сборник как бы PBR текстур от CGAxis — не покупайте и даже не качайте с торентов этот сборник, если вам действительно нужны PBR текстуры.

Про этот сборник с большой натяжкой можно сказать, что его содержимое отвечает всем PBR принципам. По факту этот сборник откровенный «шлак», на который, в маркетинговых целях, налепили трендовую аббревиатуру «PBR».

PBR текстуры

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

Через растровую текстуру можно задать не только сложный диффузный цвет поверхности, но и «запечь» некоторые её свойства. Использование текстур, в которых «запечены» свойства материала, пришло в массы из игровой индустрии. По сложившейся практике пользователю, предлагается три базовые текстурные карты — Diffuse, Specular\Metalness и Glossy\Roughness, по ситуации, подключают дополнительные технические карты — Opacity, Normal, Height, Ambient occlusion, Cavity, Emissive maps. Классический сет это четыре текстуры: Diffuse, Specular\Metalness и Glossy\Roughness, Normal

Важным недостатком так называемых «PBR текстур» является отсутствие гибкости. Так например — карта Glossy\Roughness предлагает мне уже зафиксированные значение шероховатости поверхности. А что если мне нужно сделать больше глянца, как быть? Понятно что мне, как пользователю с опытом, не составляет труда «подкрутить» все эти карты до нужного результата, а как быть менее опытным коллегам? Поэтому мне не особо понятен тот хайп, который был в свое время поднят вокруг PBR текстур.

PBR текстуры для меня, в первую очередь, это решение все же узкоспециальное, для таких направлений как VR, реал-тайм и игровые движки, где нужно максимально упростить и унифицировать шейдерные вычисления, когда текстуры запекаются комплексно для всей модели сразу. В этом контексте — PBR текстуры это простое и универсальное решение, своего рода кроссплатформенный набор «Сделай сам».

3d модель, шейдер которой сделан с соблюдением PBR принципов, будет рендериться, в любой современной рендер системе, без необходимости конвертировать материалы или что либо в них перенастраивать. Особенно если часть свойств шейдера, было зафиксировано (запечено) в текстурах, о которых я говорил выше. Это важное и ценное качество для 3d модели, особенно когда вы продаете её на стоке [Посмотреть стрим о 3D стоках]. Покупатель будет понимать, что купив ваш продукт, он получит универсальное шейдерное решение, которое будет давать одинаковый результат при рендеринге в независимости от используемой рендер системы.

Есть два шейдерных решения так или иначе поддерживаемых в большинстве рендер движков — Specular workflow и Metalness workflow. Эти решения отличаются набором необходимых текстур и соответственно слотами размещения. Итоговая разница не существенна, но заметна в ряде деталей. Забегая вперед сразу скажу, что Metalness workflow более удобен, более экономичен в расходовании видеопамяти (актуально для игровых движков), прост и поэтому стал теперь доминирующим рабочим пространством.

Specular workflow

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

Для Specular workflow используется базовый сет из следующих растровых карт

Metalness workflow

Для Metalness workflow используется базовый сет из следующих растровых карт

В чем разница этих решений?

Очевидно, что некоторые текстуры подключаются к разным слотам шейдера и в принципе отличаются по содержанию. Разница между Glossy\Roughness картами небольшая: Glossy map это инвертированная Roughness map, переключение между режимами Glossy\Roughness поддерживается не во всех движках, но в любом случае адаптировать эту карту под нужный режим не составит труда при помощи Photoshop. Карта нормалей (Normal Map) не меняется в обоих решениях. Принципиальное отличие только в двух текстурах Diffuse и Specular\Metalness.

Для рабочего процесса Specular workflow — диффузная карта «закрашивается» черным в тех местах, где поверхность должна проявлять «металличность», там же, где поверхность является диэлектриком, задается необходимый цвет. Через текстурную карту Specular задается степень зеркальности объекта для диэлектрических участков через оттенок серого, а для металлических участков через необходимый цвет металла.

У рабочего процесса Metalness workflow— диффузная карта полностью цветная, как для металлических участков шейдера, так и на участках с диэлектрическими свойствами поверхности. Через черно-белую текстурную карту Metalness мы «сообщаем» рендер движку, где метал, где диэлектрик. По сути карта Metalness выполняет функции маски, а вся необходимая информация «снимается» с карты Diffuse.

Считается что Metalness workflow экономичней в контексте расходования видеопамяти, так как черно белая маска практически ничего «не весит». Я сравнил два сета и действительно сет для Metalness workflow на 20% легче сета Specular workflow.

Недостатки и тонкости работы с Metalness и Specular workflow

Я не буду перетряхивать все рендер движки, на предмет того, как у них организовано подключение так называемых PBR текстур и ограничусь только V-ray.

Классическая схема подключения текстур в Specular workflow

Недостатком этой схемы является то, что она предполагает полное отключение опции IOR, что фактически делает это решение физически некорректным, но…

Некоторые ресурсы предлагают адаптированный к V-ray сет для Specular workflow. В этом сете есть дополнительная IOR карта, которую нужно подключать к слоту Fresnel IOR и так же немного измененная по цвету Specular карта. Такое решение делает шейдер более корректным и отвечающим принципам PBR.

Хотя визуальная разница между этими двумя решениями будет едва ли заметна неискушенному пользователю.

Для подключения текстурных карт в режиме Metalness workflow, необходимо на вкладке BRDF переключиться в режим Use Roughness

Здесь тоже, всё не «слава богу», но получше чем у Specular workflow. Работа со множителем IOR в этом режиме возможна и я могу установить необходимое по ситуации значение, без использования дополнительных текстурных карт. Но, как мне «посчастливилось» выяснить, комплексное значение IOR у металлов значительно ниже чем у диэлектриков. И в примере который я сейчас разбираю, так же есть необходимость подключения дополнительной карты с разными значениями IOR для металла и для окислившейся поверхности (диэлектрика).

В связи с этим фактом, что у металлов есть комплексное значение IOR, которое хоть и не значительно, но влияет на результат, для Вас готовится отдельная статья по металлам, где я обновлю свое мнение и добавлю новую информацию по настройке металлов в V-Ray Next.

В статье Understanding metalness вы можете найти табличку, скриншот которой представлен ниже, Vlado (папа V-ray) вычислил комплексные значения IOR для ряда металлов которые можно\нужно использовать в совместно со включенной опцией Metalness.

Эти значения, в большинстве случаев, чуть больше единицы. Но как раз из-за этого что IOR метала значительно ниже значений у неметаллов, то имеет смысл заморочиться над этой разницей, для достижения максимальной реалистичности и физической корректности шейдинга в режиме Metalness workflow.

Поскольку карта с необходимым значением IOR, к этому сету не прилагалась, я сделал кастомное решение используя ноду Mix и карту Metalness в качестве маски для разных значений IOR. Значения для IOR я поставил следующие:

IOR 1.05 = 0.9524 RGB для металлической поверхности (среднее значение из таблицы Vlado)
IOR 1.5 = 0.6666 RGB для окиси на поверхности металла (диэлектрик)

После всех тестов, я отдаю свое предпочтение схеме — Metalness workflow + IOR map, так как она наиболее близка к физически корректном решению. Но и другие схемы вполне рабочие, разница будет заметна только на мелких деталях, да и то, только на композитных материалах, которые я выбрал для обзора, где одновременно используется два типа материала — метал и диэлектрик. В простых, однородных, материалах эти нюансы будут менее всего заметны.

Так же сделал рендеры с контрастной световой схемой, что бы сравнить все четыре схемы с оригинальным превью, эксперимент не удался…

Тут сложно дать однозначный и объективный комментарий и сделать какое то сравнение, так как у меня нет возможности задействовать HDRi карту, которая использовалось для рендеринга оригинального превью у шейдера. Так что «ноу комментс…» Оригинал поярче, но не факт что у превью не «подкручивали» цветность.

Что еще нужно знать при работе с так называемым PBR текстурами?

Та информация, которую я прояснил, в процессе работы с материалами к этой статье, стала откровением… Всю свою сознательную трудовую жизнь, когда уже многие начали работать в гамме 2.2 и я в том числе, все текстуры по умолчанию подгружались в этой гамме. Единственной картой, которая нуждалась в корректировке была карта нормалей (Normal Map) её нужно было подгружать в линейной гамме — 1.0

Когда я более подробно стал изучать PBR тему и работу с текстурами в частности, я был удивлен, когда узнал что и остальные текстуры, кроме Specular и Diffuse, необходимо было подгружать в линейной гамме.

Почему так?

Это связано с тем что все черно-белые текстуры, если грубо, участвуют в математических вычислениях. Так например в карте Metlaness, черный пиксель означает 0, белый пиксель означает 1. Математика это линейные вычисления, поэтому шейдерные вычисления так же происходят в линейном пространстве и только два шейдерных компонента — Specular и Diffuse должны быть в представлены гамме 2.2 поскольку это визуальные составляющие и их обработка происходит в нелинейном пространстве.

Specular workflows

Metalness workflow

Это правило, распространяется и на все другие шейдерные компоненты, которые реализуются через черно-белые растровые текстуры — они все должны подгружаться в гамме 1.0 не зависимо от того используете ли вы текстуры из PBR сборников или делаете что-то свое.

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

Яндекс.Дзен | ВКонтакте | YouTube | Instagram

Источник

Текстурирование, или что нужно знать, чтобы стать Художником по поверхностям. Часть 3. PBR и материалы

В прошлой части тутора мы разобрали принцип работы масок, что такое «текстура», и что абсолютно для всего используются каналы — параметры пикселя. Теперь рассмотрим всеми любимый PBR И соберем текстуры для создания мокрого грязного асфальта.

В этом уроке я буду очень много ссылаться на другие туторы и источники информации, чтобы максимально сократить объем самого тутора. Большая часть ссылок будет предоставлена в начале тутора, поэтому, если вы не понимаете чего-то из этого тутора — перейдите по ссылкам и почитайте информацию там. Когда будете готовы — возвращайтесь к тутору и продолжайте познавать азы художника по поверхностям. Если какие-то ссылки будут не доступны, пжлста, сообщите мне об этом в личку или в комментариях. Я обязательно поправлю это недоразумение.

Также, если что-то совсем будет не понятно — очень прошу сообщить об этом, чтобы я мог раскрыть эту тему более подробно.

Часть 1. Пиксель здесь
Часть 2. Маски и текстуры здесь
Часть 3. PBR и Материалы — вы ее читаете.
Часть 4. Модели, нормали и развертка здесь.
Часть 5. Система материалов здесь.

Расшифровывается эта аббревиатура так: Physically Based Rendering. Что в переводе значит «Основанный на физике рендер».

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

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

А суть остается неизменной — то, как мы видим объекты, выстраивается из того, как свет отражается от поверхности. И стандарт PBR описывает то, какие параметры должны учитываться, чтобы свет выглядел максимально кинематографично.

Расписывать о том, по каким правилам конструируется свет, как он отражается и отражается ли вообще, я не стану. Про то, как работает на уровне физики свет есть куча статей:

Параметры. Или как настраивается PBR.

Мы рассмотрим PBR с точки зрения общей концепции и на уровне работы с каждым параметром отдельно через каналы пикселей.

Из прошлой части тутора помним, что PBR на самом деле создается через суммирование параметров (вдаваться в формулы не стоит). То есть, PBR состоит из набора параметров:

Что касается Normal Map, то ее техническая реализация (какие каналы за какой наклон отвечают) разнится от настроек рендера. Так, например, в Unreal Engine 4 Зеленый канал отвечает за отрицательное значение наклона по вертикали, а в Unity за положительное.

Более подробную информацию можно прочитать здесь.

Еще есть огромная всеобъемлющая статья о том, как запекать Normal Map и как с ней вообще работать, на сайте render.ru здесь.

Ссылка на форум обсуждения карт нормалей и высот (параметр Height) здесь.

И википедийное описание рельефного текстурирования здесь.

Теперь стоит отметить, что рендер (отображение), основанный на физике, имеет несколько различных реализаций. Все они схожи между собой и пользуются все теми же каналами пикселей для корректировки конечного результата. Обычно разделяют 2 типа реализации:

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

В первом типе учитываются параметры Color-Metal-Roughness, во втором — Diffuse-Specular-Glossiness.

Оба типа реализации используют одинаково 3 параметра — АО, Normal map, Height.

Причем, в современном PBR параметр Height (высота) смешивается и прячется в Normal Map. По факту, проще выразить неровность через одну карту Normal Map, чем высчитывать еще и глубину/высоту пикселя, или что-то еще в дополнительных каналах. Все проще, чем кажется, и мудрить с десятками параметров лучше не стоит.

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

Итого, конечный результат картинки состоит из наложения параметров в одном пикселе:
pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

Давайте рассмотрим теперь то, как это работает в Substance Painter. Для этого мы снова создаем новый проект с обычным плейном и стандартными настройками (о них я рассказывал во второй части туторов). И создадим новый слой заливки:
pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

Теперь рассмотрим стандартную текстуру нормалей из набора Substance Painter «Niche Rectangle Top Wide», которая располагается под тегом Hard Surface:
pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

Далее мы перенесем эту карту нормалей в параметр слоя Base Color (из предыдущего урока мы должны помнить, как это делать). Так выглядит карта нормалей, если воспринимать ее, как изображение (изображение выше). Но теперь удалим ее из параметра BaseColor (мы это сделали для общего ознакомления), нажав на крестик в параметре:
pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

И перенесем ее в параметр Normal:
pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

Ваш конечный результат сразу обновился. Теперь, если зажать Alt и ЛКМ — можно крутить камерой и смотреть на плейн под разными углами. Свет, отраженный от пикселей, начнет переливаться, создавая иллюзию глубины. Как будто на плейне действительно есть какие-то впадины и выпуклости. Все это заметно под углом от 90 до 140-150 градусов. И чем больше угол наклона, тем больше становится понятно, что это расчет видеокарты, который определяет, как должен отражать свет каждый пиксель, чтобы создавать эту иллюзию. В качестве исходных значений мы передаем в видеокарту 3 параметра в виде каналов пикселя (иначе говоря, текстуру Normal map):

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

Теперь давайте извращаться. Удалим из параметра Normal эту карту и укажем ее в канале Metallic. Канал у Metallic один, а карта нормалей имеет 3 канала, соответственно, вставляя карту нормалей в этот параметр, Substance Painter обрежет 2 лишних канала (предполагаю, что GB) и оставит только один для расчетов:

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

В конечном результате видно теперь, что больше нет никаких выпуклостей и впадин, но сама поверхность стала походить на какую-то металлическую плату. Вы так же можете посмотреть, как будет выглядеть параметр Metallic один, без остальных параметров (BaseColor и прочих), переключив режим отображения на 1 канал Metallic (если вы ничего не меняли, то во вьюпорте справа сверху есть возможность переключения отображения):

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

Выбираем металлик и получаем следующий результат:

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

Как видим, это один канал в градациях серого, который определяет, какие пиксели должны выглядеть как металл, какие — как нечто среднее, а какие — не металл. 0 — не металлический. 1 — металлический.

Аналогично и с каналом Roughness — любая текстура подойдет для работы с ним. В зависит от того, какой конечный результат вам потребуется. Можете попробовать самостоятельно воткнуть в канал Roughness любую доступную вам текстуру и посмотреть на результат.

Сложные материалы

Под словом «материал», обычно подразумевается коллекция готовых параметров, совокупность которых дает кинематографичный результат — материал (иначе говоря, фактуру, поверхность).
Возьмем, к примеру, вот это кожаное кресло:

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

Визуально, кресло состоит из 3 материалов:

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

Подведем промежуточный итог:

Практика

А что нам нужно для того, чтобы собрать мокрый грязный асфальт со следами шин?

Для начала нам нужно определиться с количеством материалов, которые будут использоваться в нашем туторе:

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

Наша цель сейчас не создавать очень качественные текстуры, а познакомиться с тем, как можно с помощью параметров PBR и масок создать нечто интересное. Поэтому на данном этапе мы не будем пользоваться генераторами масок или грязи, а все будем делать вручную, чтобы понять суть. Когда вы понимаете суть, основу всего этого, вы сможете пользоваться генераторами куда более качественно, чем просто начнете их выкручивать в надежде получить идеальную маску / материал.

Если вы уже посмотрели файлы, то, наверное, обратили внимание на маску для шин. Она подготовлена отдельно, так как я не смогу ее сгенерировать на ходу в Substance Painter, поэтому я воспользовался рисунком шин, найденным в интернете и подготовил его через Photoshop для работы в Substance Painter:

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

Теперь создадим новый проект и добавим все наши файлы в него. Для этого мы выбираем стандартные настройки, но теперь нам нужно при создании проекта еще указать наши текстурные карты:

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

В проекте создадим 3 папки под каждый материал и проименуем их, чтобы не путаться:

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

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

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

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

Теперь создадим в каждой папке по 1-ому слою. А точнее, создадим слои и распределим их в папки. Не забываем о нейминге, чтобы потом не путаться (не смотря на то, что визуально не совсем понятно, что слои в папках — поверьте, они в папках):

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

Все новые слои имеют базовые средние параметры. Поэтому Base Color серый, нормаль не отображает выпуклостей, а Metallic и Roughness не создают впечатления какого-либо материала.
И сейчас нам нужно это исправить, указав в каждый параметр соответствующую текстуру (на примере асфальта):

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

Ваша задача сейчас распределить все текстуры материалов в нужные параметры слоев. После того, как вы все это проделаете, назначим маску для резины и создадим эффект следов. Так как у нас уже есть черная маска у папки, то нам нужно просто подключить файл со следами колесиков к этой маске. Для этого кликаем ПКМ по маске и выбираем Add Fill:

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

И в параметрах GrayScale указываем маску:

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

В результате на асфальте появятся следы резины, но их будет достаточно сложно разглядеть, так как это все таки PBR и кинематографичность (. ). Чтобы их увидеть, нужно Plane повернуть под определенным углом:

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

Сейчас эти два слоя (асфальт и резина) находятся на одном уровне. Но мы-то знаем, что резина находится НА асфальте, а значит, слой с резиной должен быть физически выше. И вот теперь мы воспользуемся тем самым параметром Height.

Найдите его в параметрах слоя Rubber и выкрутите его на максимум, чтобы прочувствовать, как он работает. Покрутите камерой, чтобы увидеть, как свет начал обрабатывать пиксели, которые вы настроили своими руками. Прочувствуйте свою мощь! =)

Ну а теперь выровняйте параметр на 0.1, чтобы это было не так явно и более правдоподобно:

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

Теперь настроим грязь. Исходя из реальности, можно предположить, что грязь должна забиваться в трещины асфальта в первую очередь. Но у нас нет маски, чтобы мы могли проявить слой грязи в трещинах. Однако решение есть — мы можем взять BaseColor асфальта и на его основе сделать маску для грязи.

Как это работает? Если посмотреть на BaseColor асфальта, то можно обратить внимание, что чем темнее пиксель, тем больше он похож на трещину. То есть, в этом изображении все темное — это трещины, а все светлое — это поверхность. И если мы хотим воспользоваться изображением, как маской, то нам достаточно было бы инвертировать цвета (темное сделать светлым и наоборот) пикселей, и у нас получилась маска для грязи.

Для этого отключим отображение слоя с асфальтом (нажав на глазик у папки с асфальтом), чтобы было проще воспринимать то, что мы делаем.

Далее, укажем, что в маске грязи должен быть файл и присоединим к ней файл Asphalt_BaseColor:

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

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

Теперь наша задача заставить эту текстуру восприниматься иначе — инвертировать цвета и усилить их, чтобы маска проявила грязь в трещинах. Проще всего это сделать с помощью дополнительного эффекта «Уровни» (Levels). Добавляем к маске дополнительный фильтр «Levels» так же, как мы добавляли Fill (ПКМ — Add Levels). И выкручиваем параметры примерно, как на картинке ниже:

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

И нажимаем на кнопку ниже «Invert» для инвертирования уровней интенсивности канала:

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

Теперь грязь располагается именно там, где нам нужно — в трещинах асфальта:

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

Включаем асфальт и присматриваемся к нашим трудам:

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

Но это слишком просто. Поэтому, давайте теперь добавим на наш асфальт оранжевую разметку. Для этого нам необходимо будет:

Вы так же можете отрегулировать параметры Metallic и Roughness на свой вкус, чтобы создать реалистичную краску. Я не стал этого делать, чтобы сократить время тутора.

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

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

Настало время ручного рисования. Выделите маску папки RoadLine и начертите на плейне полосу разметки. У меня получился примерно такой результат:

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

Теперь стоит добавить еще одну маску на сам слой с краской, чтобы создать ощущение отвалившейся краски. Для этого мы не будем создавать папку, а создадим маску прямо на слое и добавим любую стандартную маску Substance Painter. Чтобы сделать это — добавьте маску, а потом добавьте заливку (ПКМ по маске и Add Fill). В заливке укажите Текстуру Dirt 4, которая находится под тегом Procedural:

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

И смотрим результат:

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

Не забываем, что у слоя с краской нужно указать высоту. Предлагаю указать 0.05 — среднее между резиной и асфальтом.

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

Ну и какой асфальт без воды?

Для этого создайте самостоятельно папку вместе со слоем. Пока НЕ добавляйте никаких масок.

Установите папку в иерархии на самый верх. Ведь вода же сверху, правильно? У слоя выкрутите на максимум Metallic и на минимум Roughness. Далее укажите высоту воды, равную 0.15.

И теперь отключите канал Color, нажав на кнопку, выделенную синей рамочкой:

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

Что произошло? Произошло смешение все нижних слоев согласно маскам и слоя с водой. Но у воды теперь нет канала цвета, а значит, она не может красить в нужные ей цвета пиксели. За то все другие каналы влияют на пиксели текстуры, и асфальт стал максимально мокрым и неприятным, как будто и вовсе не асфальт =)

pbr textures что это. Смотреть фото pbr textures что это. Смотреть картинку pbr textures что это. Картинка про pbr textures что это. Фото pbr textures что это

Теперь домашнее задание: наложите маски так, чтобы асфальт был не полностью мокрым, а с небольшими лужами. Помните, что лужи не имеют неровностей на поверхности — подумайте, как нужно смешать слои так, чтобы лужи были гладкими. И что для этого нужно еще сделать? Я уверен, вы справитесь =)

В этом туторе мы разобрали то, как создавать текстуры. В целом, правильно применяя параметры, вы уже можете начинать текстурировать и даже смело можете назвать себя джуниор-художником по текстурам.

Мы узнали, как работает PBR.

Параметры в PBR необязательно должны быть уникальны. Это все еще обычные параметры, которые мы можем указывать через каналы пикселей.

Одни и те же текстуры мы можем использовать по разному. Это дает нам преимущество — нам не нужно загружать память лишними файлами с большим количеством пикселей, а достаточно загрузить один файл и подсказать программе, как его рассчитать.

Мы познакомились с материалами и тем, как они собираются. Теперь вы знаете, что не обязательно быть супер-крутым фотошоп-мастером, а достаточно найти готовые параметры, чтобы программа смогла из них представить корректно материал.

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

Программы Quixel и Substance Painter

Я всегда рекомендую новичкам, которые занимаются именно созданием текстур из материалов (не самих материалов), начать работать с Quixel. Поскольку эта программа умеет уже сотню готовых пресетов, которые очень легко контролируются и настраиваются, а через маски можно добиваться того же результата, что и у нас на практике через Substance Painter.

Что касается Substance Painter, то его сила начинает проявляться, когда в работу включается третья программа Substance Designer. Designer позволяет создавать свои материалы путем генерации нужных нам поверхностей. Дизайнер крут тем, что вы можете создать «умные материалы», которые будут иметь настройки внутренних масок, которые будут контролировать количество и качество внутренних материалов. То есть, «умные материалы» в данном случае — это контейнер, который содержит в себе несколько материалов и предустановленные маски, которые регулируются формулами и алгоритмами, которые художник прописывает в Designer.

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

О PBR и переводе этой аббревиатуры

Очень часто PBR переводят, как физически корректный рендер. Я же считаю, что здесь важен точный перевод, потому что переводы типа «Физически корректный» в корне не верны, так как рендер в данном случае именно основан на физике, но не обязан быть корректным по отношению к физике. Вы можете сделать металл = 1, и шероховатость, равную 1, и включить дополнительно кучу других параметров, и это уже будет не корректный с точки зрения физики материал, а основанный когда-то на нем и переделанный вами в свой собственный набор параметров. То есть, создавая материалы на основе PBR, вы можете абсолютно полностью игнорировать законы физики и создать материал, который будет уникальным в своем роде.

Например, рисованные в своей стилистике камни. Как физически корректно мы должны отображать выдуманный материал, который не существует в природе?

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *