SuperAPI AI 工具集

blender-geometry-nodes

设计与创作

查看项目

更新于 10-16 19:37

技能介绍

用途

该项目围绕 Blender 5.2 的 Geometry Nodes(几何节点)提供系统化的构建与使用指引。它适用于希望通过脚本、JSON 规范和节点工具来程序化生成、修改、实例化与导出几何体的流程,帮助使用者在版本迭代频繁的环境中准确操作节点插槽和数据流。

主要能力与核心概念

资料中强调了几何体沿左侧到右侧通过圆形插槽流动,字段(菱形插槽)是在消费节点上按其域和上下文逐元素求值的函数。域包括 Point、Edge、Face、Face Corner、Spline、Instance、Layer 等。Capture Attribute 可在拓扑变化前冻结字段,Evaluate on Domain 用于在域之间转换。属性分为内置(position、normal、sharp_face、material_index、UVMap 等)和通过 Store Named Attribute 定义的命名属性;命名属性在修改器之后仍然保留,并可传递给着色器和导出器。实例化保持轻量(一个网格、多个变换),只在必要时使用 Realize Instances,并建议尽可能晚地实现。

区域与高级类型

资料列出多种区域和类型:模拟区域(GeometryNodeSimulationInput/Output)用于逐帧状态如生长、粒子、侵蚀;重复区域(GeometryNodeRepeatInput/Output)用于迭代 N 次;For Each Element 用于逐元素运行子图;闭包与捆绑(5.0+)用于传递函数和结构化数据;列表(5.2)提供真正的数组操作;SDF 网格(4.x–5.x)用于平滑布尔、重网格化、圆角、体素效果;物理(5.2 实验性)提供基于节点的布料/毛发;Gizmo 提供视口手柄。区域需要 input.pair_with_output(output) 配对,并在输出节点上设置项目。

使用方式

通过 scripts/gn_builder.py 构建节点树。先使用 --describe 查询精确插槽名称,例如查询 GeometryNodeDistributePointsOnFaces 和 GeometryNodeInstanceOnPoints。然后编写 JSON 规范并应用,例如 --spec scatter.json --apply Ground --set Density=20 Seed=3 Mask=@paint_mask。--set Name=@attr 可将命名属性连接到修改器输入。结果会报告评估后的顶点/面计数和节点警告。规范格式见脚本文档字符串,完整示例在 references/recipes.md 中。

适用场景

适合需要程序化生成几何体、散布实例、实现模拟生长、递归细分、逐元素处理、SDF 操作和节点工具工作流的用户。也适合需要将几何节点数据传递到着色器或导出到 glTF 的场合。

规则与限制

资料中给出多项规则:随机性应始终暴露 Seed,并使用 Random Value 配合 ID/Index 字段以保持稳定;使用 Object Info(Relative)和实际单位实现与缩放无关的设置;材质需在树内设置且必须存在于文件中;着色需显式添加 Set Shade Smooth 或存储 sharp_edge;UV 需用 Store Named Attribute 存储,否则会丢失;性能上避免实现数百万实例,散布优先使用 Points 加实例,谨慎使用 Merge by Distance,模拟区域需要烘焙才能回放和导出。另有关于 5.2 版本 API 变化的注意事项,如使用 getattr(mod.properties.inputs, ident).value 替代 mod["Socket_2"],以及随机值插槽的变更。缺失的事实(如具体收费、价格、平台限制)暂未提供。