Agent Skills › EL4CTEO/blender-skills › blender-geometry-nodes

blender-geometry-nodes

GitHub

Blender 5.3 Geometry Nodes 开发技能,涵盖节点构建、属性域、实例化及SDF网格等核心概念。提供JSON转节点树生成器与Socket检查工具,支持程序化资产生成、散射效果及参数化工具开发。

skills/blender-geometry-nodes/SKILL.md EL4CTEO/blender-skills

Trigger Scenarios

需要生成程序化几何体或环境资产 配置Geometry Nodes参数化输入 处理网格属性、实例化或SDF网格操作

Install

npx skills add EL4CTEO/blender-skills --skill blender-geometry-nodes -g -y
More Options

Use without installing

npx skills use EL4CTEO/blender-skills@blender-geometry-nodes

指定 Agent (Claude Code)

npx skills add EL4CTEO/blender-skills --skill blender-geometry-nodes -a claude-code -g -y

安装 repo 全部 skill

npx skills add EL4CTEO/blender-skills --all -g -y

预览 repo 内 skill

npx skills add EL4CTEO/blender-skills --list

SKILL.md

Frontmatter
{
    "name": "blender-geometry-nodes",
    "license": "MIT",
    "metadata": {
        "author": "blender-agent-skills",
        "version": "1.2.0"
    },
    "description": "Geometry Nodes in Blender 5.3 - fields, domains, attributes, instancing, zones (simulation\/repeat\/for-each), closures\/bundles, lists, SDF grids, node tools, baking, plus a JSON-to-node-tree builder and socket inspector. Use for scattering, procedural assets\/environments, parametric tools and modifier inputs."
}

Geometry Nodes

The execution model is in blender-core. Build trees with scripts/gn_builder.py, a compact JSON spec that's far cheaper than raw bpy. Look up exact socket names first, because they change between versions:

scripts/gn_builder.py -- --describe GeometryNodeDistributePointsOnFaces GeometryNodeInstanceOnPoints
scripts/gn_builder.py -- --spec scatter.json --apply Ground --set Density=20 Seed=3 Mask=@paint_mask

--set Name=@attr feeds a modifier input from a named attribute. The result reports evaluated vert/face counts and node warnings. The spec format is in the script docstring; full examples are in references/recipes.md.

Core concepts (get these right or nothing works)

  • Geometry flows left→right through sockets with circle shapes. Fields (diamond sockets) are functions evaluated per element on the node that consumes them, in that node's domain/context.
  • Domains: Point, Edge, Face, Face Corner, Spline, Instance, Layer. Capture Attribute freezes a field at a point in the graph (before topology changes), and Evaluate on Domain converts between domains.
  • Attributes: built-ins (position, normal, sharp_face, material_index, UVMap...) plus named ones via Store Named Attribute. Named attributes persist after the modifier. That's how GN data reaches shaders (Attribute node) and exporters (glTF export_attributes, which exports names starting with _).
  • Instances are cheap (one mesh, many transforms). Realize Instances only when you must edit per-instance geometry or export a single mesh. Realize as late as possible.
  • Inputs exposed on the group interface become modifier inputs (5.2: mod.properties.inputs.<identifier>.value). Panels group them, menu sockets give enums.

Zones and advanced types

Feature Nodes Use
Simulation zone GeometryNodeSimulationInput/Output (paired) per-frame state: growth, particles, erosion; bake to keep
Repeat zone GeometryNodeRepeatInput/Output iterate N times (L-systems, relaxation, recursive subdivision)
For Each Element GeometryNodeForeachGeometryElementInput/Output run a sub-graph per element (per building lot, per island)
Closures / Bundles (5.0+) NodeClosureInput/Output, NodeCombineBundle/NodeSeparateBundle, Evaluate Closure pass functions/structured data around; reusable "strategy" node groups
Lists (5.2) GeometryNodeFieldToList, ListGetItem, ListLength, SortList, FilterList real arrays, not fields
Grids/SDF (4.x–5.x) MeshToSDFGrid, SDFGridBoolean, SDFGridFillet, SDFGridOffset, GridToMesh smooth booleans, remeshing, fillets, voxel effects
Grids/lists/curves (5.3) GridSolvePoisson, RasterizePoints, GridTopologyBoolean, GridDeactivateVoxels, GetGridNames, CombineList, ConstructCurves, GeometryMaterials, FunctionNodeGetVectorComponent fluid-like/voxel effects, fixed small lists, curves from position lists
Physics (5.2, experimental) GeometryNodeXPBDSolver + bundles node-based cloth/hair, see blender-simulation
Gizmos GizmoLinear/Dial/Transform viewport handles for inputs
Zones need input.pair_with_output(output) (spec key pairs), plus items on the output node (repeat_items, state_items, ...; spec 4th node field).

Procedure

  1. Sketch the data flow: source geometry → selection/masks (fields) → generate/instance → transform/randomize → realize/merge → set materials/shading → output.
  2. --describe every node type you'll use, then write the spec and build. Check node_warnings and the evaluated counts.
  3. Expose only meaningful inputs (density, seed, scale range, materials), with min/max set.
  4. Look at it (look), check blender-asset-qa if the result will be exported (realized geometry), and check blender-game-optimization for instance counts and tris.
  5. Ship: either keep it procedural (the .blend/asset library), or apply the modifier / visual_geometry_to_objects for exporters.

Rules

  • Randomness: always expose a Seed, and use Random Value with the ID/Index field so results stay stable when counts change.
  • Scale-independent setups use Object Info (Relative) and real units. Apply the object scale or read it explicitly.
  • Materials: Set Material inside the tree. The material must exist in the file, and instances keep their own materials.
  • Shading: GN output loses auto-smooth unless you add Set Shade Smooth + (5.x) the Smooth by Angle essentials group, or store sharp_edge.
  • UVs: primitives output UVMap via their UV output. Store it with Store Named Attribute (Face Corner, 2D Vector, name UVMap) or it's dropped.
  • Performance: avoid realizing millions of instances, prefer Points + instances for scatter, use Merge by Distance sparingly, and simulation zones need baking for playback/export (object.geometry_node_bake_single or modifier bakes).
  • Node tools (ng.is_tool = True, is_mode_edit etc.) turn a group into an operator in the 3D View menus, for editing workflows.

Gotchas

  • 5.2: mod["Socket_2"] no longer works. Use getattr(mod.properties.inputs, ident).value, and .type = "ATTRIBUTE" + .attribute_name for attribute inputs. Compare and Random Value sockets changed: Random Value now has single dynamic Min/Max/Value sockets typed by data_type. Link by name, and --describe when unsure.
  • 5.3: Import PLY's output is Geometry (was Mesh) and is a point cloud for Gaussian-splat files. Curve to Mesh adds Miter Scale; Realize Instances adds Preserve Normals (negative-scale instances).
  • Sockets that are disabled for the current mode/data type are still in node.inputs with the same name. The builder picks the enabled one. Set data_type/mode props first (the builder sets props before links).
  • nt.interface.new_socket(...) is the 4.0+ API (ng.inputs.new is gone).
  • Exporters see the evaluated mesh. Instances become glTF instancing (export_gpu_instances) or are realized on export.

Version History

  • b1b21df Current 2026-11-15 13:19

Same Skill Collection

skills/blender-addon-development/SKILL.md
skills/blender-animation/SKILL.md
skills/blender-asset-qa/SKILL.md
skills/blender-character-rigging/SKILL.md
skills/blender-clothing/SKILL.md
skills/blender-core/SKILL.md
skills/blender-environment-kits/SKILL.md
skills/blender-export-pipelines/SKILL.md
skills/blender-facial-shapekeys/SKILL.md
skills/blender-game-optimization/SKILL.md
skills/blender-hair-grooming/SKILL.md
skills/blender-hardsurface-modeling/SKILL.md
skills/blender-lighting-lookdev/SKILL.md
skills/blender-pbr-materials/SKILL.md
skills/blender-pipeline-automation/SKILL.md
skills/blender-rendering/SKILL.md
skills/blender-retopology-uv/SKILL.md
skills/blender-scene-setup/SKILL.md
skills/blender-sculpting/SKILL.md
skills/blender-simulation/SKILL.md
skills/blender-stylized-npr/SKILL.md
skills/blender-texture-baking/SKILL.md
skills/blender-texturing/SKILL.md
skills/blender-time-of-day/SKILL.md
skills/blender-video-editing/SKILL.md
skills/blender-weather-fx/SKILL.md
skills/blender-workflow-recipes/SKILL.md

Metadata

Files
0
Version
b1b21df
Hash
64cf8856
Indexed
2026-11-15 13:19

Accueil - Wiki
Copyright © 2011-2026 iteam. Current version is 2.156.0. UTC+08:00, 2026-11-16 00:51
浙ICP备14020137号-1