Подключение текстур к стандартному шейдеру VRayMtl

7b56770f329dc599d230647b524f3a7c.png

Вдохновил меня на написание этой статьи вот такой шейдерный казус, который я увидел на одной из моделей, купленных на этом сайте.

03a3c5f3f5e402fba8e624f566e02e72.jpeg

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

6fbf59ea906316cd6dbb7fa1af8413a5.jpeg

Ну и по теме. Рендер системы появились давно - V-Ray имеет уже почтенный возраст. Первая бета-версия рендера появилась в далеком 2000 году.

В 2000 году интернет не был распространен повсеместно и разработчики "варились в собственном соку", имея возможность обмениваться опытом только на конференциях. По этой причине термины и определения, используемые в том же самом шейдинге, придумывались исходя из ИМХО разработчика, поэтому к 2020 году, мы имеем кучу формулировок и текстур - выполняющих одну и ту же функцию.

Рендер движки для продакшена, теперь тесно "сотрудничают" с реал-тайм движками и наоборот. PBR это попытка привести всю CG отрасль к определенным стандартам и некой универсальности, что бы люди не испытывали "боль" при совместной работе в разном софте и рендер системах.

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

5296034a34944e100e80e8132c87da41.png

Классический PBR Базовый сет это четыре карты: Diffuse, Specular\Metalness и Glossy\Roughness и Normal, но есть еще ряд текстурных, карт, подключение которых, у начинающих пользователей, могут вызвать затруднения, поэтому я решил сделать обзор ряда текстур, которые можно, так или иначе, использовать в стандартном шейдере VRayMtl и разобрать их по слотам подключения.

Слот Diffuse

Слот Diffuse - сюда можно\нужно подключать карты имеющие в своем названии - Albedo, Color (Colour), Diffuse, Base. Иногда эти определения могут быть сокращены до Diff, Col, Alb. Если в текстурном сете есть карты Cavity и Ambient Oclusion, то их можно использовать следующим образом.

В скриншоте ниже, я отобразил возможный метод подключение через стандартную ноду Composite. Подключать эту ноду, которую я назвал Extended Diffuse, так же к слоту Diffuse, вместо простой диффузной карты.

d46a22680447dc59659ff91e4601c4c5.png

Отличие текстурных карт Cavity и Ambient Oclusion состоит в том, что Cavity "работает" на мелкую детализацию - трещинки, морщинки, углубления и прочие дефекты поверхности, а Ambient Oclusion работает на выявление и подчеркивания объема у небольших деталей, которые при расчете GI могут "потеряться" в общем объеме. Обе эти карты можно использовать одновременно или по отдельности, замешав их с основной диффузной картой через ноду Composite в режиме Multiply, а контрастность контролировать через непрозрачность слоя.

Слот Reflect

Сюда подключаем карты Specular или Reflect. Если работа ведется в Metalness WorkFlow, то Reflect должен быть просто белым. Если вы используете Specular WorkFlow, то подключаемая карта может будет серой для неметаллов, так и цветной для металлов. Подробней читать здесь - Что такое PBR? Часть V

В некоторых случаях можно использовать Cavity map, подключив её напрямую к слоту Reflect , что бы убрать отражения в мелких углублениях - это улучшит "читаемость" тонких деталей.

Слот Refract

В этот слот можно подключить карты с названиями Refract, Transmission, Transmittance, Translucency, Scatter Radius. Вне зависимости от названия, эти карты определяют прозрачность поверхности. Белый цвет это полная прозрачность, черный - это непрозрачный материал.

212367d738a68f6c064ebb7b842054cc.jpeg

Карты Translucency и Scatter Radius более актуальны для использования в VrayFastSSS2 и других аналогичных решениях, но и стандартный шейдер VRayMtl поддерживает упрощенный режим SSS, поэтому ничего плохого не случится если вы возьмете в "оборот" и эти карты.

Слот Bump

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

Те самые "синенькие" карты из модели - Normal Map подключаются исключительно через ноду VRayNormalMap. Данная нода поддерживает так же подключение и обычной Bump карты, поэтому в одном шейдере можно совместить несколько рельефных решений.

f1163e2178cf3b968bfe0f704456605c.png

Если вы производите какие-то дополнительные манипуляции с Bump картой, например, её можно смешать с Cavity картой в режиме Multiply или производите еще какие-то манипуляции, то данные решения следует подключать к слоту Bump, через ноду VRayColor2Bump, так как в некоторых случаях шейдер может не "прочитать" ваши композитные решения.

В целом я рекомендую все процедурные карты и растровые карты, после корректирующих или композитных нод, подключать в слот Bump через ноду VRayColor2Bump, это 100% гарантирует корректную работу вашего решения.

b80b136263d21ef7660cd5bd7c6a803d.png

Слот Reflection Glossy

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

Слот Refraction Glossy

Для "размытия" прозрачности - VRayMtl использует только Glossy режим и если вам каким то чудом досталась в пользование карта Roughness для прозрачности, то её следует инвертировать.

Слот Displacement

К этому слоту нужно подключать Height карту. Силу рельефа контролировать через множитель для этого слота, а качество семплирования этой карты можно контролировать здесь: Render Setup > Settings > Default displacement

Чем меньше значение Edge Length тем точней и качественней будет рельеф, но за качество нужно будет "платить" большим расходом оперативной памяти - Displacement это очень прожорливое решение. По дефолту стоит 4, этого вполне достаточно для большинства задач.

Слот Tranclucency

К нему можно подключать цветные карты Scatter color, SSS, которые определяют цвет "внутренностей" материала. В VRayMtl данные карты будут работать только при "включенных" опциях Refract и Translucency. Сама карта, подключенная к слоту Tranclucency, будет обозначаться как Back-side color.

Слот IOR

Обычно, этот параметр не запекается в отдельную карту, его настраивают непосредственно в опциях шейдера, так как эта опция использует порядок цвета, за пределами стандартного динамического диапазона, т.е. больше 1 (> 255 sRGB). При очень большом желании значение IOR можно сохранить в растровой карте через форматы *.hdr или *.exr - эти форматы поддерживают расширенный динамический диапазон.

Слот Fresnel IOR

В некоторых текстурных сетах, может прилагаться данная карта и так же иметь название IOR, но её следует подключать в слот Fresnel IOR. В отличии от IOR, диапазон карты для Fresnel IOR лежит в пределах от 0 до 1, где черный цвет (0) это максимальное значение IOR, белый цвет (1) это минимальное значение IOR=1.

Разницы между IOR и Fresnel IOR нет, в сути это одно и то же, просто у них математика разная. По умолчанию используется IOR и настраивается напрямую в шейдере, специально разделять эти опции и присваивать им разные значения, это не "пибиэрно". В исключительных случаях это можно делать. Об этих случаях я писал здесь.  

Слот Opacity

Слот для подключения карт непрозрачности. Данные карты могут иметь название Opacity, Opaque, в редких случаях - Mask. В этих картах черный цвет, задает полную прозрачность поверхности, а белый полную непрозрачность.

Слот Rougness

Этот слот для подключения карт диффузной шероховатости - Diffuse Roughness. Не стоит путать карту Roughness для размытия отражений и подключать её к слоту Diffuse Roughness напрямую. На моей практике карты для Diffuse Roughness не мне попадались, но в сети используется следующая формула для создания Diffuse Roughness карты

Diffuse roughness = 0.33*Reflection Roughness

Исходник этого решения обсуждается здесь . На практике это можно реализовать через ноды VrayCompTex или Composite. Карта шероховатости для отражения смешивается через умножение с картой цвета со значением 0.33 и подключается в слот Rougness

e58da2394bbd7990aa8cc6910199da49.png

Слот Anisotropy

Мне не попадались "запеченые" карты для анизотропии и не известно, как обстоят дела с анизотропией в игровых движках, от куда собственно и перекочевала традиция "запекать" текстуры. В VRayMtl, анизотропность можно задать через черно-белую карту в диапазоне от 0 до 1, где 0 это отсутствие анизотропии, а 1 максимальное значение. Из практики - значение больше 0.8 ставить не следует.

Слот Anisotropy Rotation

Карты анизотропии, как писал выше, мне не попадались, но вот для контроля направления анизотропии - карты я видел. На сайте poliigon.com, для некоторых металлических шейдеров предлагается в карта Direction.

Для подключения таких, и ей подобных, карт нужно знать следующее - VRayMtl поддерживает только черно-белые текстуры для определения направления анизотропии. Диапазон таких карт от 0 до 1 , где ноль, черный цвет, эквивалентен 0 градусов, а единица, белый цвет, равна значению 360 градусов, поэтому все "цветные" карты, если они вам попались, следует адаптировать и привести к аналогичному решению, как на картинке ниже.

Слот Fog Color

Через этот слот можно задать цвет прозрачности материала. Карты для этого слота могут иметь название: Transmitance color, Observed color, Transmission Color

В Corona renderer — заявленная опция absorption color, употребляется неуместно, правильней было бы использовать термин Observed Color (англ. Observed Color — наблюдаемый цвет, видимый цвет)

Слот Self-Illumination

К данному слоту подключаются карты с названием Emissive или Self-Illumination. Функции этой карты очевидны, они "заставляют" поверхность объекта светиться.

Слот Metalness

Слот служит для подключения карт "металличности." Это черно-белая карта, где черный цвет "сообщает" рендер системе, что это поверхность диэлектрика, а белый цвет, что это поверхность металла. Промежуточные значения, т.е. серый цвет, как правило, не используются. Хотя в некоторых случаях это будет оправдано - если имитировать тонкую оксидную пленку, покрывающую поверхность металла.

ID mask, Mask, RGB mask

В некоторых текстурных сетах могу попадаться цветные и не очень понятные, на первый взгляд, карты. Это могут быть простые RGB маски, где используются три локальных цвета - красный, зеленый или синий. Или сложные композитные решения, в которых "запечены" несколько свойств.

6f35729514d5b714c78859a6526778be.jpeg

"Извлечь" нужную текстуру (свойство) из такой композитной карты можно через ноду RGB Tint заменив нужный цвет на белый цвет. Все остальные компоненты нужно сделать черными.

7e3649f543470e55f284e8cf1336bd18.png

Как правило в названии таких карт, уже обозначены свойства и каналы, в которых эти свойства "лежат", так на примере ниже представлена карта, где на красном канале лежит карта Roughness, а на зеленом Ambient Oclusion. Обычно значения прописываются по порядку расположения каналов в RGB

5e7a62a9713d052fd1b178244320b868.png

Или вот на этом примере

de91b2412369bbbad6f48cf7d5e9b577.png

 

За аббревиатурой RMA - скрываются Roughness, Metalness, Ambient, которые извлекаются каждый по своему каналу RGB.

Fuzz карты

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

f55b493c824f2d6578e519f87cdd1a33.jpeg

USHAKOV | CG CHANNEL

Комментарии (19)

+13
yjinbs
Получается я один обзываю все карты и материалы своими именами, а не оставляю map-19,map-20. и получаю лт за это .лол. Статья огонь!
+3
milrok
не один, но нас таких мало))
+4
supergex
А я наоборот думал, что нас большинство..)
+1
Action-sen
Тоже так думал
0
nicoolin
разделяю твою боль
+1
Terllok
мазохист...
шейдер подписать достаточно
+5
imFeodor
Было дело, тоже думал культурить для себя сцены, но пришёл к выводу, что это самое пустое отнимающее время занятие, всё равно название материалов не читаю. Из сцены беру пипеткой, а по архитектуре материала ориентируюсь по нодовой структуре, где это название в попу не упёрлось. Хотя я большой фанат компакт материала в Максе.
Именую материалы только в случаи если нужно сцены кому-то передать, да и то это делаю чисто из вежливости, а если внутри себя, то нафик это надо. Потому что даже когда сложный материал, названия не спасают, всё равно приходится проверять какая нода как влияет если её включить выключить или покрутить...)))
+5
HammerON
Еще одно добавление по поводу подгрузки карты нормалей: ее нужно загружать в режиме гаммы 1.0. В битмап лоадере надо поставить Override: 1.0

https://yadi.sk/i/jYyHtoCycWG_ag 
+2
Pavel_Ushakov
Все верно, но я об это уже писал в ранних статьях. Это правило распространяется не только для карт нормалей...
0
CESHURIK
корректить под 1,0 надо nORMAL, GLOSSY, IOR. Это для V-ray. Так же обязательно оверрайдится и для редшифта, roughness, metallic, normal
+1
Zolty
Хорошая, полезная статья.
0
paz
вы мне одно скажите. почему в слейт мат эдиторе файл максовский весит в 3 раза больше чем в компактном?
0
Pavel_Ushakov
Это к разработчикам... но если честно не замечал такого. Прям таки в 3 раза?
0
paz
файл с врей матами 137 мб, файл матами короны 443 мб. сохранял под макс 2014
+2
Uraken
ну линии там, плашки эти. Весят много.
0
ArcusCerebellumus
А чего вообще хотел добиться товарищ провокатор? Мне кажется он использует VRay2SidedMtl как Xref чтобы для объектов как бы порты в Slate иметь. Иногда бывает очень удобно так работать, особенно на двух мониторах. Только почему не Xref - не понятно.
0
psalm69
Павел, почему bitmap а не vrayhdri
+1
Pavel_Ushakov
Vrayhdri для эстетов ))) Сильно принципиальной разницы нет.
+ У Vrayhdri есть альтернативные режимы фильтрации текстур, но разницу заметят только перфекционисты.
- Не удобный режим кропа
+ В Vrayhdri можно оверайдить гамму сразу

Если знаешь какие-то нюансы еще, дай знать...
0
Katrin.Davidson
Автору спасибо за статью! можно только попросить обновить картинки, некоторые не отображаются(