В Blender версии 4.5 и более ранних, в композиторе было предусмотрено всего-лишь одно нодовое дерево на сцену. Для его инициализации в композиторе нужно было отметить галочку «Use Nodes» в заголовке рабочей области. Нодовое дерево создавалось автоматически, и сразу же привязывалось к сцене. Начиная с версии Blender 5.0, разработчики сделали возможность создания нескольких вариантов нодовых деревьев для композитора. Соответственно изменился и способ создания нодовых деревьев в композиторе.
Для обычного пользователя изменилось не много. Для создания нодового дерева в композиторе в Blender 5.0 вручную, теперь, точно так же как для обычных материалов, нужно в заголовке рабочей области нажать на кнопку «New». При этом создается новое нодовое дерево и автоматически привязывается к сцене.
Рассмотрим теперь, как создать новое нодовое дерево для композитора Blender 5.0 при помощи Blender Python API.
В первую очередь нужно отметить одно важное изменение: если раньше мы получали указатель на нодовое дерево композитора из сцены через ее свойство с именем «node_tree«, то с версии 5.0 название свойства изменено на «compositing_node_group».
В Blender 4.5 и ранее:
|
1 2 3 |
bpy.context.scene.node_tree # bpy.data.scenes['Scene'].node_tree |
В Blender 5.0:
|
1 2 3 |
bpy.context.scene.compositing_node_group # bpy.data.node_groups['Compositor Nodes'] |
Для создания нодового дерева в Blender 4.5 и ранее, нужно было установить свойство сцены «use_nodes» в значение True. Все остальное делалось автоматически.
|
1 |
bpy.context.scene.use_nodes = True |
В Blender 5.0 мы можем воспользоваться оператором new_compositing_node_group(), который при вызове создаст нодовое дерево для композитора, получить его указатель и связать с нужным свойством в сцене.
|
1 2 3 4 5 6 |
bpy.ops.node.new_compositing_node_group() ptr = next((g for g in bpy.data.node_groups if g.type == 'COMPOSITING'), None) # bpy.data.node_groups['NodeTree'] bpy.context.scene.compositing_node_group = ptr |
Или же мы можем сделать все сами, без использования оператора.
Для начала создадим нодовое дерево нужного типа. Здесь мы сразу получаем указатель на него и нам не нужно искать его среди других нодовых групп.
|
1 2 3 4 5 6 |
node_tree = context.blend_data.node_groups.new( name='Compositing Node Tree', type='CompositorNodeTree' ) # bpy.data.node_groups['Compositing Node Tree.001'] |
Теперь создадим нужные ноды.
Для начала — нод Output. Здесь мы должны создать не только сам нод, но и выходной сокет для всего нодового дерева, который и будет работать через Otuput нод.
|
1 2 3 4 5 6 7 |
output_node = node_tree.nodes.new('NodeGroupOutput') output_node.location = (200, 0) node_tree.interface.new_socket( name='Image', in_out='OUTPUT', socket_type='NodeSocketColor' ) |
Создадим также Viewer нод.
|
1 2 |
viewer_node = node_tree.nodes.new('CompositorNodeViewer') viewer_node.location = (200, -100) |
И нод RenderLayers.
|
1 2 |
render_layers_node = node_tree.nodes.new('CompositorNodeRLayers') render_layers_node.location = (-200, 0) |
Теперь соединим линками нод RenderLayers и выходные ноды Viewer и Output.
|
1 2 |
node_tree.links.new(render_layers_node.outputs['Image'], output_node.inputs['Image']) node_tree.links.new(render_layers_node.outputs['Image'], viewer_node.inputs['Image']) |
И наконец привяжем созданное нодовое дерево к композитору сцены.
|
1 |
bpy.context.scene.compositing_node_group = node_tree |
Таким образом мы создали нодовое дерево для композитора в Blender 5.0 и в дальнейшем можем работать с ним так, как нам требуется — добавлять или удалять ноды и создавать линки.

.blend file on Patreon