Создание входов и выходов для нода Capture Attribute в Blender Geometry Nodes

Начиная с версии Blender 4.2 нод Capture Attribute функционально изменился. Если раньше у этого нода всегда был только один вход Value и только один выход Attribute, кроме стандартного входа-выхода геометрии, предназначенные для записи атрибутов, то начиная с версии 4.2 количество входов-выходов для записи атрибутов сделано динамическим.

Теперь входы-выходы на этом ноде создаются аналогичным образом, по тому же принципу, как в нодах типа Group, Group Input и Group Output.

Однако есть определенные отличия. Если в групповых нодах входы-выходы создаются через встроенный объект Interface, для нода Capture Attribute такого объекта не предусмотрено. Входы и выходы в ноде Capture Attribute создаются при помощи объекта capture_items.

Добавим в сцену любой меш и назначим ему модификатор Geometry Nodes. Добавим нод Capture Attribute и включим его в нодовое дерево.

Рассмотрим теперь работу с нодом Capture Attribute через Blender Python API.

Для начала получим указатель на сам нод Capture Attribute в нодовом дереве Geometry Nodes. Указатель на Geometry Nodes и на нодовое дерево GN:

Получим указатель на нод Capture Attribute:

Список элементов для записи атрибутов, собственно он и формирует необходимые входы-выходв, мы можем получить через объект capture_items:

Пройдем по уже имеющимся элементам:

У нас имеется один элемент с именем “Index” с целочисленным типом данных INT.

А вот входов-выходов (сокетов) у нас имеется три:

У нода есть стандартный сокет для проброса геометрии меша Geometry, сокет Index для созданного нами заранее элемента записи атрибута, и сокет типа CUSTOM, такой же, как на групповых нодах, который предназначен для создания новых сокетов пользователем вручную.

Для создания нового элемента через Blender Python API мы можем использовать метод new() объекта capture_items, указав в параметрах требуемые тип и имя.

Например, создадим новый элемент для сохранения атрибута цвета.

Обратите внимание, что socket_type мы указали как тип требуемого сокета “RGBA”, а не самого элемента “Color”.

Для удаления элемента мы можем воспользоваться методом remove все того же объекта capture_items. В параметре item метода нужно передать указатель на удаляемы элемент.

Здесь мы удалили элемент с индексом номером 0, тот что был создан нами заранее вручную.

0 0 голоса
Article Rating
Подписаться
Уведомить о
guest

0 Комментарий
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии