NodeBook

Преобразование индекса IOR в индекс Specular отражений

В официальной документации Blender приводится способ получения величины Specular, если известна величина IOR для отражений PBR-материалов. Для того чтобы получить значение Specular из значения IOR нужно воспользоваться формулой:

Эту формулу не сложно создать через ноды:

Shadow catcher в EEVEE

В рендер-движке Cycles есть удобная возможность отрендерить объект с тенью на прозрачном фоне с помощью материала с функцией рендера только падающих на него теней “shadow catcher”. В рендер-движке EEVEE такой функции у материалов нет. Однако в EEVEE можно собрать свой “shadow catcher” на основе нодов.

Готовый материал “EEVEE Shadow Catcher” можно скачать в библиотеке BIS.

Освещение текстурой из лампы

В Blender Cycles при использовании стандартных источников освещения типа Light можно освещать объекты, используя любую текстуру, а не только отдельный цвет.

Добавим в сцену любой объект, например сферу:

shift+a – Mesh – UVSphere

и назначим ей простой диффузный материал.

Процедурные градиенты

Градиент, помимо ноды “Gradient Texture”, можно получить с помощью достаточно простых формул. Рассмотрим математику на примере сферического градиента.

  1. Равномерный градиент

Создается на основе формулы конуса, направленного вершиной вниз.

Пикселизирование текстуры

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

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

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

Тайлинг процедурных текстур в Blender

Процесс создания отдельных элементов процедурных текстур в Blender достаточно прост – подбираем нужную формулу, воплощаем ее с помощью математических нодов, и в результате получаем нужный рисунок. Однако созданная подобным образом текстура обладает одним свойством – она не тайлится. И хотя тайлинг – циклическое повторение участка или целой текстуры, по большей части считается вредным, и хорошим тоном в 3D считается не допускать текстурного тайлинга, иногда, например при создании узоров или орнаментов, он бывает необходим.

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

Создание процедурных текстур в Blender

Все процедурные текстуры в Blender основаны на математике. Даже такие нерегулярные структуры, как Voronoi и Noise, на самом деле сгенерированы по четким математическим формулами. Внутри каждого базового нода из редактора материалов Blender зашит точный математический алгоритм, в результате работы которого и получается нужное изображение.

Задать подобный алгоритм в привычной математической записи в Blender нельзя. Однако среди прочих нодов Blender предоставляет пользователю ноды группы Math – оболочку над простейшими математическими операциями. С помощью этих нодов можно самостоятельно строить сложные математические алгоритмы, генерирующие интересные текстуры.

Вращение текстуры нодами

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

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

При помощи связки других нодов можно реализовать нужный функционал, лишенный недостатка нода Mapping. Рассмотрим, как построить связку нодов для вращения текстуры вокруг оси Z объекта на случайную величину.