SuperAPI AI 工具集

procedural-blender-nodes

设计与创作

查看项目

更新于 10-24 16:16

技能介绍

用途定位

该技能面向在 Blender 中用 Python 构建程序化节点系统的工作,覆盖 Geometry Nodes 生成器与修改器、Shader Node 材质、模拟与动画。其核心思路是把节点系统当作对某个效果的说明:先明确它必须产出什么几何、材质和运动,运行在什么输入上(曲线、网格、点集或空输入),艺术家应能改动哪些参数,以及用什么镜头或用途来评判效果。

主要能力

  • 技术选型:从 subject-routing 参考中选择技术与起始模板,包括曲线空间布局、表面散布、实例化装配、网格建模、解析动画、模拟区和纯着色器等路线。
  • 组库复用:通过 nodes_tools.py 搜索或 library-index 查找现成节点组并实例化,避免重建库中已有且经过测试的内容。
  • 用 nodekit 构建:编写 Python 构建脚本,用 Graph 创建节点组(含输入描述、范围与面板,以及每个区块的边框),由顶层修改器组组合,脚本创建场景并保存 .blend 文件。交付物是 .blend 中的节点图,脚本保证其可复现。
  • 快速验证:用 try 命令先做一个部件及其测试输入、一次渲染,查看图像后再逐部分扩展,整体评判而非只看局部。
  • 分层细化:按轮廓与比例、布局与密度、材质、灯光与观感、运动顺序推进;若有参考,则用随时间或跨视角的测量来校准,而非只看单帧。
  • 控制面板设计:Primary 面板放少量宏观控制,各部件有详细面板,预设以 JSON 保存,并可用 sweep.py 扫描每个主控项的效果。
  • 验证:validate.py 重新打开保存的文件,检查零节点警告、零 lint、求值时间和相机间隙;在其他输入上运行效果;动画需渲染连续序列检查滑动、跳变与闪烁;重建两次并对比节点图转储。

使用方式

脚本需在本技能目录下运行,依赖 Python 3 和 Blender 5.2+(通过 $BLENDER、PATH 中的 blender 或 macOS 应用定位),nodes_tools.py 会自行启动 Blender。构建脚本通过 nodekit.graph.Graph 创建 Geometry、Shader 或 Compositor 树;套接字按名称在启用套接字中查找(重复项用 "Value#1" 形式),节点属性需在设置输入前通过 props= 指定,因为属性会改变存在的套接字。共享节点组用 @nodegroup 或 nodekit.graph.once 只构建一次,避免在其它组使用后原地重建导致接口被清空并静默断开链接。

适用场景

适合需要以可读、可复用、可验证的方式构建程序化 Blender 节点效果的场景:从参考视频、图像或描述重建节点系统,修复或移植已有节点脚本,制作用参数面板驱动的生成器或材质,以及需要确定性、可重开验证和时间连续性检查的交付。

限制与约束

文档明确列出若干会破坏 Blender 5.2 脚本的硬性规则:修改器输入不是 ID 属性,需用 set_modifier_inputs;不要在共享组被使用后原地重建;Transform、Resample、Set Curve Normal 的模式切换及 Remove Named Attribute 的模式是输入套接字而非节点属性;纹理输出命名为 "Factor";字段默认套接字忽略常量需链接节点;后台模式下驱动器仅更新窗口场景,需先设置 bpy.context.window.scene 再 frame_set,并用 bpy.ops.render.render(scene=...) 渲染;EEVEE 世界体积会遮蔽太阳,距离雾需在合成器中对预乘几何处理;始终以 blender -b --factory-startup --python script.py -- args 运行,负值 CLI 参数写成 --x=-1。每个输入和组都需有描述,且要求零节点警告、零 check_groups lint。交付时应区分已实现与近似或超出范围的内容,例如不能把解析摇摆称为布料模拟,也不能把纹理遮罩称为建模几何。