← ClaudeAtlas

geometry-nodes-pythonlisted

Programmatically construct Geometry Nodes trees in Blender 5.x via bpy.data.node_groups, interface socket creation, node instantiation by RNA name, link wiring, and applying as a NODES modifier. Includes Bundles for grouped sockets.
TMHSDigital/Blender-Developer-Tools · ★ 13 · AI & Automation · score 66
Install: claude install-skill TMHSDigital/Blender-Developer-Tools
# Geometry Nodes in Python ## Trigger Use this skill when the user: - Wants to build a Geometry Nodes tree from a script rather than the editor - Mentions `GeometryNodeTree`, `node_groups.new`, `tree.interface`, `tree.links.new` - Needs to apply a generated GN tree as a modifier on an object - Asks about Bundles, Repeat Zones, or for-each Element zones from Python ## High-level shape The Python pattern for building a Geometry Nodes tree has four phases: 1. Create the node group and its interface (input and output sockets). 2. Instantiate nodes by their exact RNA bl_idname. 3. Wire nodes with `tree.links.new`. 4. Add a NODES modifier on the target object that points at the group. ```python import bpy def build_displace_tree(): tree = bpy.data.node_groups.new(name="MyDisplace", type='GeometryNodeTree') tree.interface.new_socket( name="Geometry", in_out='INPUT', socket_type='NodeSocketGeometry', ) tree.interface.new_socket( name="Strength", in_out='INPUT', socket_type='NodeSocketFloat', ) tree.interface.new_socket( name="Geometry", in_out='OUTPUT', socket_type='NodeSocketGeometry', ) group_in = tree.nodes.new('NodeGroupInput') group_out = tree.nodes.new('NodeGroupOutput') set_pos = tree.nodes.new('GeometryNodeSetPosition') noise = tree.nodes.new('ShaderNodeTexNoise') multiply = tree.nodes.new('ShaderNodeMath') multiply.operation = 'MULTIPLY'