Nodes

Нодвембер

“Нодвембер” (Nodevember) – месячный челлендж, в ходе которого участникам предлагается каждый день создавать один процедурный объект для Blender. Это может быть материал, шейдер, объект,  все, что угодно, лишь бы оно было процедурным. “Все, что состоит из нодов, все это – нодвембер”.

Сайт-визитка: nodevember.io

Преобразование индекса 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

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

Как превратить одиночный элемент BIS в паттерн

Одиночный процедурный элемент из библиотеки BIS можно легко превратить в равномерный повторяющийся паттерн.

Для примера загрузим из библиотеки круговой элемент и разместим его по центру объекта.

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

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

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

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

Нодовый дисплейс в Blender 2.8

В Blender 2.8 нодовый дисплейс в рендер-движке Cycles был изменен со скалярного на векторный. Если просто подсоединить черно-белую карту высот на вход Displace нода MaterialOutput, как это делалось в Blender 2.7, она не даст нужного результата.

Для того, чтобы нодовый дисплейс в Blender 2.8 рассчитывался корректно, нужно преобразовать карту высот в вектор с помощью двух нод: CombineXYZ и VectorDisplacement. Карту высот нужно подключить на вход Y нода CombineXYZ, а его выход Vector соединить со входом Vector нода VectorDisplacement. После чего соединить выход Displacement нода VectorDisplacement со входом Displacement нода MaterialOutput.

Декоратор для отложенного обновления нодового дерева

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

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

Автор кода: Skarn

Класс для создания нодов по их типу

Класс для удобного создания нодов по их типу.

Автор кода: Skarn

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

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

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

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