Параллакс нод на closures и repeat zone
Помните мой аддон Parallax Node?
Аддон решает классическую проблему в Blender: в шейдерные нодовые группы нельзя передать изображение как входной параметр. Почему? Потому что в шейдерах не просто ноды с картинками, а семплеры изображений. Хотя логически очень хочется иметь сокет для картинки, как в Geometry Nodes ну или, например, как в Unity. Но что имеем, то имеем. Мой аддон обходит эти ограничения таким образом: он под капотом создает копии нодовых групп, подставляя в них разные изображения.
Я сделаль такой-же функционал с Closures и Repeat Zone. Вот файлик, в который можно потыкать:
blend
parallax_test.blend1.85 Mb
А дальше разберемся, как это устроено.
В версии без Closures, основная группа нодов делает некоторую подготовительную работу, затем итерирует несколько раз нодовую группу (которая дублируется аддоном), сдвигающую UV координаты. Чем больше итераций - тем точнее сдвиг.
Итерация:
Здесь мы заменим изображение на Evaluate Closure. А сокет Сlosure выведем наружу.
Кучу нодовых групп заменяем одной и кладем ее внутрь цикла Repeat. Количество итераций и closure выводим "наружу":
Затем создаем Closure зону с изображением внутри:
Самое крутое в Repeat zone, то что шейдер не перекомпилируется, когда меняешь количество итераций. Кроме того, в шейдерах количество итераций repeat zone это не статичный параметр. Т.е. можно подключить текстуру, которая будет задавать количество итераций в конкретном месте:
Теперь, если вам нужен еще материал с параллаксом, вы можете использовать эту же нодовую группу, подключив к ней другое изображение в зоне Closure. А значит, можно обойтись без аддона — всё делается штатными средствами Blender. Closures решили проблему, которая годами мучила нодовых колдунов. (Ну и Repeat zone тоже круто)
shader nodes
parallax
pom