Получить внутренние узлы в Blender Frame Node
Я хочу разобрать Cycles shader в своем Game Engine. У меня есть кадр, который является входом для шейдера GLSL в движке: Я хотел бы перебрать каждый из узлов внутри фрейма. Как? Я ничего не нашел в: https://www.blender.org/api/blender_python_api_2_78a_release/bpy.types.NodeFrame.html?highlight=frame
1 ответ
Решение
Узел фрейма не хранит список своего содержимого, но каждый фрейм знает, кто его родитель. Придерживаясь терминологии блендера, используемой в другом месте, узел фрейма является родителем узлов, которые находятся внутри него.
Чтобы получить список содержимого фрейма, вы можете перебрать дерево узлов и найти узлы, у которых фрейм является родительским.
import bpy
mat_nodes = bpy.data.materials['Material'].node_tree.nodes
frame_node = mat_nodes['Frame']
frame_children = []
for n in mat_nodes:
if n.parent == frame_node:
frame_children += [n]