ITADN
BradyAJohnston/nodebpy · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

nodebpy

Run
Tests

使用 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

databpy 类似,该项目最初是 molecularnodes 内部的一个工具,后来被拆分出来,成为一个类型安全且经过充分测试的独立包。

贡献

开发环境搭建、运行测试以及重新生成节点类(src/nodebpy/nodes/ 的大部分内容由 gen/ 包自动生成)在 CONTRIBUTING.md 中有详细说明。