Как вы уже догадались из названия, в данном уроке мы будем создавать процедурный материал ткани. Это будет один материал с четырьмя различными текстурами для различных типов ткани. На этом со вступительной частью закончим и перейдем непосредственно к уроку.
Финальный результат
Видеоурок
Текстовый урок
Для данного урока я подготовил небольшую сцену, в которой присутствует плоскость с модификатором ткани. Не забудьте выполнить развертку плоскости перед тем, как приступать к симуляции ткани. На изображении ниже вы можете видеть настройки симуляции:
В качестве текстуры ткани будет выступать нод Wave texture. Добавьте также ноды Texture Coordinate и Mapping и выставите настройки в соответствии с изображением:
Продублируйте ноды Mapping и Wave texture и измените настройки нода Mapping: вращение по оси Z — 135° и масштаб по оси X — 1:
Теперь смешайте оба паттерна с помощью нода MixRGB (режим Subtract). В итоге мы получим текстуру похожую на ткань:
Так как мы собираемся создать еще несколько паттернов, выделите ноды Mapping, Wave и Mix и объедините их в группу (назовите ее pattern 1). Подключите входы Scale обоих нодов Wave к входным значениям группы:
Продублируйте только что созданную группу нодов и переименуйте ее в pattern 2. Также создайте для нее нового пользователя нажав кнопку 2 справа от названия группы нодов:
Измените масштаб по оси X для первого нода Mapping на 1 и масштаб по оси Y на 0.01. Для первого нода Wave установите все оставшиеся параметры в 0:
Подключите нод ColorRamp и измените положения его ползунков, чтобы создать более контрастный паттерн:
Установите оба значения Scale равными 80 и на этом мы закончили со вторым паттерном:
Продублируйте вторую группу, установите значения Scale равными 40 и назовите ее pattern 3:
Измените настройки нода ColorRamp и подключите нод Math (режим Power) между нодами ColorRamp и Wave Texture. Это подымет детализацию текстуры и сделает белые области больше:
Теперь займемся созданием паттерна войлока. Добавьте ноды Texture Coordinate и Mapping и измените масштабы последнего по осям X, Y и Z на 7, 10 и 10:
Добавьте ноды Wave texture и Math и установите значение как показано на изображении. С помощью нода Math мы снова увеличиваем контрастность текстуры:
Создайте 4-ю группу и назовите ее pattern 4:
Теперь выделите все 4 группы и создайте из них новую группу. Подключите входы и выходы как показано на изображении:
Теперь приступим к созданию самого материала. Добавьте ноды Noise Texture, Hue Saturation Value и MixRGB. Соедините их как показано на изображении:
Снова создайте группу нодов из только что созданных, подключите входы Color к входному значению группы и назовите его Cloth Color:
Установите любой цвет для ткани:
Добавьте шейдер Translucent и смешайте его с шейдером Diffuse с помощью нода Add Shader:
Добавьте шейдер Glossy, установите шероховатость равную 0.4 и смешайте его при помощи нода Mix Shader с предыдущими шейдерами. В качестве фактора смешивания подключите нод Layer Weight. Подключите вход Blend к входному значению группы и назовите его Facing Glossy:
Проделайте такую же процедуру как и в предыдущем шаге, только в качестве фактора смешивания подключите не выход Facing, а Fresnel. Также, подключите значение шероховатости нового шейдера Glossy к входному значению группы и назовите его Fresnel Roughness. На данный момент материал выглядит не очень, но поверьте, все будет хорошо :)
Добавьте нод MixRGB, подключите его как показано на изображении и установите второй цвет белым. Этим мы придадим цвет отражениям. В большинстве случаев отражения белые, но в данном будет лучше, если отражения будут иметь другой цвет:
Добавьте новый шейдер Transparent и смешайте его с остальными при помощи нод Mix. В качестве фактора используйте нод Math (режим Greater Than). Подключите оба входных значения нода Math к входам группы и назовите их Pattern и Transparency:
Остался последний штрих и мы закончили. Добавьте нод Math (режим Multiply), подключите верхнее его значение к входу группы Pattern, а для второго создайте новое входное значение группы и назовите его Displacement. Выходное значение подключите к выходному значению группы и также назовите его Displacement:
Выйдите из групп и давайте приступим к настройке материалов:
Вот пример настройки материала с первым паттерном. Конечно же, вы можете изменить его на любой другой:
Здесь вы можете видеть результат всех 4-х паттернов:
На этом урок закончен! Надеюсь он вам понравился. Обязательно поделитесь своими результатами в комментариях.
Спасибо! Очень хороший урок. Особенно работа с группами нодов — очень полезно.
Спасибо за урок!
Зделайте урок в Blender 3D кейс из игры CS:GO
Спасибо! Урок замечательный!!!
Урок тяжёлый но результат стоит таких трудов. Спасибо!
Спасибо за урок!
Вот с нодами наворотил, вот наворотил !!! аж нихрена непонятно …
подразумеваю группу fabric. остально нормуль.
Спасибо!
Спасибо Артем,
так все доходчиво и понятно.
Успехов тебе.
При подключении Mapping полосы пропадают. Глюк?
Нет.
Объясню по-другому: в превью материала текстуру видно, а на объекте нет.
Так укажи координаты.
Добрый день Артем. Неправильно этот убер шейдер работает. Много недочетов. Пока расскажу о первом. Если у нас объект на который накладывается материал квадратный, то паттерны ведут себя правильно. Тоесть не теряют своей формы. Если объект прямоугольный, то паттерн растягивается, чего быть не должно! (Ткань все-таки). В данном примере использован паттерн1. Вверху куб, внизу прямоугольник. Как видно на прямоугольнике внизу, паттерн растянулся по оси х. Как быть? (Кстати рендер вверху тоже не ахти из-за проблем с Noise Texture, но уже не в паттерне, а в самом материале ткани).
Развертку поправить. Или использовать другие координаты (Generated, Object).
Точно, спасибо. Я совсем забыл что нужно развертку после масштабирования обновлять. Теперь паттерн сохраняет форму. А вот Noise текстура, которая находится в Fabric группе поплыла. Вот собственно изображение, нижний прямоугольник. Нужно как-то контролировать scale этой текстуры. Иначе на ткани появятся большие темные пятна. Я сначала не мог понять в чем дело. Вобщем проблема в ней.
Вывести для нее значение в группу и подгонять быстренько под каждый объект. [b]Либо[/b] (чтобы не заниматься фигней) использовать координаты объекта, а не UV.
При использовании текстурных координат объекта, паттерн ложится на меш под углом. Помогло вывести vector и scale Noise текстуры и подключить на UV. Спасибо большое за помощь.
спасибо, урок интересный.
Зделайте урок в Blender 3D кейс из игры CS:GO
Спасибо! Очень хороший урок. Особенно работа с группами нодов — очень полезно.
Спасибо за урок!
Вот с нодами наворотил, вот наворотил !!! аж нихрена непонятно …
подразумеваю группу fabric. остально нормуль.
Спасибо!
Урок тяжёлый но результат стоит таких трудов. Спасибо!
Спасибо! Урок замечательный!!!
Спасибо Артем,
так все доходчиво и понятно.
Успехов тебе.
Добрый день Артем. Неправильно этот убер шейдер работает. Много недочетов. Пока расскажу о первом. Если у нас объект на который накладывается материал квадратный, то паттерны ведут себя правильно. Тоесть не теряют своей формы. Если объект прямоугольный, то паттерн растягивается, чего быть не должно! (Ткань все-таки). В данном примере использован паттерн1. Вверху куб, внизу прямоугольник. Как видно на прямоугольнике внизу, паттерн растянулся по оси х. Как быть? (Кстати рендер вверху тоже не ахти из-за проблем с Noise Texture, но уже не в паттерне, а в самом материале ткани).
Развертку поправить. Или использовать другие координаты (Generated, Object).
Точно, спасибо. Я совсем забыл что нужно развертку после масштабирования обновлять. Теперь паттерн сохраняет форму. А вот Noise текстура, которая находится в Fabric группе поплыла. Вот собственно изображение, нижний прямоугольник. Нужно как-то контролировать scale этой текстуры. Иначе на ткани появятся большие темные пятна. Я сначала не мог понять в чем дело. Вобщем проблема в ней.
Вывести для нее значение в группу и подгонять быстренько под каждый объект. [b]Либо[/b] (чтобы не заниматься фигней) использовать координаты объекта, а не UV.
При использовании текстурных координат объекта, паттерн ложится на меш под углом. Помогло вывести vector и scale Noise текстуры и подключить на UV. Спасибо большое за помощь.
При подключении Mapping полосы пропадают. Глюк?
Нет.
Объясню по-другому: в превью материала текстуру видно, а на объекте нет.
Так укажи координаты.
спасибо, урок интересный.