Самый простой способ создания новых входов и выходов у нодовых групп – нажать кнопку с плюсиком в режиме редактирования нодовой группы (tab) в N-панели в разделе “Group”. Однако при создании нодовых групп средствами Blender Python API этот способ недоступен.
Для того чтобы создать вход или выход для нодовой группы, надо помнить, что входы и выходы создаются не у конкретного нода, а для всего нодового дерева, которое заключено в нодовую группу.
Указатель на нодовое дерево для нодовой группы мы можем получить через ее свойство “node_tree”
1 2 3 |
bpy.context.object.active_material.node_tree.nodes['NodeGroup'].node_tree # bpy.data.node_groups['NodeGroup'] |
Для этого нодового дерева и нужно создавать входы и выходы.
Для создания входа мы будем использовать метод “new()” свойства “inputs”:
1 |
bpy.context.object.active_material.node_tree.nodes['NodeGroup'].node_tree.inputs.new(type='NodeSocketShader', name='New Intput') |
В параметрах метода мы передаем тип создаваемого входа “NodeSocketShader” и имя, которое мы ходим назначить для него.
Всего в API предусмотрено 4 возможных типов входов и выходов:
- NodeSocketShader – шейдерный
- NodeSocketVector – векторный
- NodeSocketFloat – для чисел с плавающей точкой
- NodeSocketColor – для цвета
и еще один недоступный для обычного выбора:
- NodeSocketInt – для целых чисел
Новый выход создается точно так же как и вход, через метод “new()” только уже для свойства “outputs”:
1 |
bpy.context.object.active_material.node_tree.nodes['NodeGroup'].node_tree.outputs.new(type='NodeSocketShader', name='New Intput') |
Создаваемые таким образом входы и выходы сразу же отображаются на ноде Node Group, а также появляются на нодах Group Input и Group Output.