Blender
August 14, 2021

Cycles. Blender. Материалы. ч1

Начало Работы.


Без долгой вводной и воды, разберем азы построения материалов для Cycles. Погнали!


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

Создание новой вкладки из шаблона
Переключение одного из окошек в режим работы с шейдерами

Для удобства работы рекомендую открыть по соседству вкладку с материалами, так просто наглядней.

Основные принципы работы с материалами.

• Материалы хранятся в сцене до тех пор, пока под них назначен хотя бы один объект сцены. Если объектов нет, но материал остался, то при закрытии файла он будет утерян.
• Материалы любят дублироваться сами собой - причин много. Проверяйте, какие материалы назначены на объекты по 20 раз, а лучше - пользуйтесь бесплатным аддоном KitOps, он умеет убирать дублирующиеся материалы.

• В Cycles есть много видов шейдинга, не только Principled BSDF

1 - Слоты материалов. На одном объекте может быть больше одного материала и каждый из слотов может быть назначен на свои повехности.
2 - Добавить/убрать слот материала (давайте всё же звать их ячейками, как-то попроще это), редактировать ячейки можно только в режиме объектов; Blender не даст убрать ячейку когда активирован режим редактирования
3 - Переместить ячейку материала по списку. Это для удобства пользования сделано.
4 - New - создаёт новый материал.
5 - Иконка шарика это выпадающий список материалов в сцене, можно уже созданный материал назначить в выбранную ячейку, чтобы не создавать по-новой, сохранить оперативную память и время, а так же возыметь унифицированный вид материалов в сцене.

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

1 - Имя материала. Дабы не было путаницы, именуйте материалы по-человечески. Это займёт секунду, но упростит жизнь в 200 раз, обещаю.
2 - Fake User. Выше я упоминал, что материал трётся из сцены, если нет назначенного объекта. Так вот - эта кнопка предотвращает такое поведение материала и сохранит его в сцене, даже если больше нет поверхностей, где он применяется.
3 - ДУБЛИРОВАТЬ материал. Да! И это чертовски выручается очень и очень часто! Есть белый пластик, красивый, настроенный, всё сделано как надо, но вот понадобился чёрный. Эта кнопка в такой ситуации ой как выручит.
4 - Отвязать материал от объекта. В сцене материал останется, но на объекте больше не будет применён и при этом ячейка материала очистится.
Чтобы окончательно удалить объект из сцены, переходим в режим
Outliner: Blender File

Детальный вид сцены, включая все материалы, которые в ней содержатся.

Выбираем материал, который нам очень хочется удалить, ПКМ - удалить.


Начинаем собирать сцену и настраивать материалы.

Вся геометрия, что пока что есть. С неё и начнём.

Первым делом: окружение.

Оно пригодится для реалистичных отражений. Яркость и влияние настраивается параметром Strength. Воспользуюсь окружением с бесплатного ресурса https://polyhaven.com/hdris

Неплохой старт.
Добавим первый материал - для фона. В моём случае это будет обычная клеточка и самый стандартный шейдер - Principled BSDF.

Параметры текстур

Вектор - 4 ключевых параметра - два выхода.
Vector: сюда подключаются текстурные координаты.
Выходы: Color - цвет, каналы R, G, B; Alpha - отдельно
Параметры:
• Фильтрация. Несколько режимов. Linear или Smart - годные для большинства ситуаций.
• Метод проекции на 3д вектор. По-умолчанию это плоскости - Flat - но, может быть и кубическая проекция (она же Triplanar), сферическая, цилиндрическая. Без вводных координат не будет работать.
• Интерполяция за пределы. Повторение - стандартная опция и чаще всего самая востребованная. Давайте от неё отталкиваться сначала.
• Источник. Если текстура была перетащена в редактор шейдера так же, как и на анимации сверху, то здесь будет Single Image - одиночная карта. Опционально тут могут быть кадры анимации или видео или что-то еще по желанию, вариантов много, есть из чего выбирать.

Самый важный параметр: Color Space.
Правило простое: все карты, кроме цвета, используют Linear. Цвет - sRGB.
Если будет иначе, результат будет очень странный.

Несколько узлов, которые делают возможным использование BOX проекции текстуры. Value отвечает за масштаб.

Для добавления новых узлов в шейдер используется либо поиск по названию - клавиша Tab, либо верхнее меню:

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

В режиме редактирования, выделяю все полигоны, применяю Smart UV Project
На экране редактирования развертки выделяю все - Ctrl+A, включаю инструмент масштабирования и тяну средней кнопкой до нужного масштаба
Масштаб UV кусочков сильно уполз за пределы 0-1 квадрата текстур. Для нашего сценария такое подойдёт.

Теперь есть цвет и масштаб верный.
Добавлю еще пару объектов в сцену и разберу их материалы.

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

Principled BSDF

Поскольку Cycles в последних итерациях стал PBR движком, то понятия усреднились и стали схожими с теми, что применяются и в других пакетах и игровых движках. Научившись работать с ними, будет очень просто освоить и другие - они все похожи.
Здесь могу порекомендовать почитать хороший материал по PBR от Marmoset:
https://marmoset.co/posts/physically-based-rendering-and-you-can-too/

Principled BSDF объединяет множество параметров под одной крышей, став унифицированным шейдером, который может передавать большую часть материалов, о которых можно подумать.

Основная часть:
• Материалы делятся на 2 типа: металл - диэлектрик. (параметр Metallic в идеале всегда либо строго 0, либо строго 1)
• Base color (он же Albedo) - для деэлетриков задаётся в пределах 25-240; для металлов - 160 и выше, обычно очень светлые тона у металлов.
• Specular - интенсивность отражения. Не его точность-резкость, а именно то, насколько яркий блик.
• Roughness - шероховатость поверхности (дальше мы с неё поработаем активно). Большие значения (или светлые тона на картах) дают шероховатую поверхность, низкие (тёмные) - гладкую. Пределы значений: 0-240, как мне кажется. Выше делать не стоит, это уже будет Vantablack - таких материалов вне лабораторий редко где можно встретить. (ниже будет картинка что это такое)
• Normal - Сюда скармливается карта нормалей. Это микро-фактура, имитация неровной поверхности, которая передаст все блики и детали так, как если бы поверхность была очень детальной и в ней была та геометрия, что заложена в карту нормалей.
Cycles работает с нормалями DirectX формата. Если нормали будут выглядеть странно, можно попробовать инвертировать в текстуре зелёный канал.
Чтобы правильно добавить карту нормалей в Cycles, надо использовать промежуточный узел Normal Map, вот так: (ещё раз напомню про Color Space!)

Карта нормалей -> Normal Map -> Principled BSDF
Vantablack

Дополнительные настройки материала Principled BSDF:

• Specular Tint: цвет блика будет перенимать цвет, заданный в Base Color (это свойство металлизированных поверхностей)
• Anisotropic: искажение блика вдоль поверхности, заметно чаще всего на полированных металлических объектах

courtecy of Evermotion

• Sheen - параметр, актуальный для тканей вроде шёлка и бархата - контурный блик. Параметр отвечает за интенсивность эффекта.
• Sheen Tint - тонирование этого блика в цвет, напрямую зависит от BaseColor

Courtecy of https://www.egneva.com/

• Clearcoat - Представить этот параметр можно буквально как "тонкое покрытие поверх базы"/ "Лак". Задаёт количество покрытия.
• Clearcoat Roughness - шероховатость этого покрытия

Clear coat в реальной жизни.

• IOR - коэффициент преломления лучей, проходящих сквозь поверхность. Для стекла, к примеру: 1.333, для чистого сухого воздуха - 1.000000001~
• Transmission - количество света, которое может пройти сквозь поверхность. Это та самая крутилка, что делает из материала стекляшку.
• Transmission Roughness - шероховатость внутреннего объема, а так же картинки, которая будет просматриваться насквозь.
• Emission - Цвет Самосвечения
• Emission Strength - Самосвечение. Параметр отвечает за интенсивность в условных единицах (но, похоже, что это Ватты)
• Alpha - не трогать до тех пор, пока не понадобится сделать листики или рваные края бумаги или ещё что-то подобное. Этот параметр задаёт буквально отсутствие поверхности в зависимости от того, где на текстуре прозрачности будут черные пиксели. (белые - непрозрачные области)

Детали.

Материал становится живей, когда он не-идеален. Шероховатости, подтёки, пыль, грязючка - всё это есть на всех поверхностях мира. Никаких идеально-белых и идеально-чёрных материалов, все материалы отражают свет, никаких абсолютно-матовых материалов.
Давайте делать. Сперва будет грязь. Можно сгенерировать, можно найти в интернете черно-белую карту пыли или пальчиков.

Совсем другое дело!
Узел "Gamma" позволяет доводить по яркости карту, чтобы получить нужный эффект. В моём случае, когда я работаю с картой несовершенности, мне нужно совсем немного, чтобы сделать поверхность неидеальной.
Продолжим. Добавим карту высот через узел Bump, чтобы добавить неровностей на поверхность (аналог NormalMap, только работает с чёрно-белыми картами). Добавим для внутреннего объема узел Volume Absorption: это ключевой компонент для того, чтобы сделать стекло, воду; узел позволяет задерживать проходящий свет внутри объема объекта, задавая ему цвет.
Цвет для внутреннего объёма зададим градиентом через ColorRamp, а распределение цвета - функцией Fresnel: на границах, где угол падения лучей совсем пологий, относительно камеры, будет эффект интенсивней, а где поверхность перпендикулярна камере - эффект не проявляется (или минимально).

Теперь добавим для фонового материала несовершенностей.
Карта оказалась недостаточно-контрастной, поэтому воспользуемся узлом Bright/Contrast помимо Gamma. Gamma в этой цепочке задаст базовый уровень, контраст будет идти после гаммы.

Внимание на клеточки. Стали заляпанными.

Два тестовых материала. Оба - металлики. Идентичные, с одним различием - Coating.

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