BradyAJohnston/nodebpy · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈
nodebpy
使用 Python 代码在 Blender 中更优雅地构建节点树。几何节点、着色器节点和合成器节点均获得全面支持,并全程提供类型提示和 IDE 自动补全功能。
pip install nodebpy
节点的文本版本应带来使用 IDE 自动补全和类型提示编写代码的便利,同时保持整体的紧凑性和可读性,并尽可能贴近通过 GUI 构建节点树的体验。
from nodebpy import geometry as g
with g.tree("AnotherTree", collapse=True) as tree:
rotation = (
g.RandomValue.vector(min=-1, seed=2)
>> g.AlignRotationToVector()
>> g.RotateRotation(rotate_by=g.AxisAngleToRotation(angle=0.3))
)
_ = (
tree.inputs.integer("Count", 10)
>> g.Points(position=g.RandomValue.vector(min=-1))
>> g.InstanceOnPoints(instance=g.Cube(), rotation=rotation)
>> g.SetPosition(
position=g.Position() * 2.0 + (0, 0.2, 0.3),
offset=(0, 0, 0.1),
)
>> g.RealizeInstances()
>> g.InstanceOnPoints(g.Cube(), instance=...)
>> tree.outputs.geometry("Instances")
)

- 每个节点都是以其所创建的节点命名的类型化类——'Random Value' 变为
g.RandomValue()——且节点子类型是类方法:g.RandomValue.vector()。 - 树在
with g.tree(...):上下文中构建;实例化节点类会将其添加到当前树中,且树的接口通过tree.inputs.*/tree.outputs.*声明。 - 节点通过
>>运算符连接,该运算符会自动选择最兼容的插槽对(类似于 Node Wrangler 的 Alt + Right Click 拖拽)——或者通过.i.*/.o.*访问器显式指定插槽。 - Python 的算术、比较和布尔运算符创建对应的
Math/VectorMath/Compare/BooleanMath节点:g.Value(1.0) * 2 + (0, 0, 1)。 - 现有的节点树——包括在 GUI 中手动连接的树——可以通过
to_python()导出回nodebpy源代码。
文档
指南和完整的节点参考位于 bradyajohnston.github.io/nodebpy:
- 编写节点树 — 添加、连接和组织节点
- 数学运算符 — 作为节点的算术、比较和布尔表达式
- 节点 API 设计 — 插槽、访问器、枚举选项和类方法
- 自定义节点组 和 资产节点组 — 作为 Python 类的可重用组
- 节点转代码 — 将现有树转换回
nodebpy代码 - 在您的插件中使用
nodebpy— 安装、捆绑和 Blender 跟踪的版本控制方案 - 比较 — API 与
geometry-script、geonodes、NodeToPython 和 TreeClipper 的关系
与 databpy 类似,该项目最初是 molecularnodes 内部的一个工具,后来被拆分出来,成为一个类型安全且经过充分测试的独立包。
贡献
开发环境搭建、运行测试以及重新生成节点类(src/nodebpy/nodes/ 的大部分内容由 gen/ 包自动生成)在 CONTRIBUTING.md 中有详细说明。