Blender动画节点插件开发文档

Blender动画节点插件开发文档
推荐:将 NSDT场景编辑器 加入你的3D开发工具链

欢迎阅读动画节点中的节点开发简介 2.0 或更高版本。在本指南中,您将学习如何开始使用 编写自己的节点(我建议您在尝试之前先学习一下 修改现有节点!它将由多个部分组成。每个部分 将更详细地介绍,以便您能够写更多 最终是复杂的节点。以下教程希望您有一个 Python的基本知识。

现在您已准备好创建实际文件。自动画节点 2.0 以来 有两种不同类型的源代码文件:

  • Python文件:这些只是普通的python文件。大多数节点应该是 在这种类型的中,只有极少数节点不是。我建议 始终在此阶段选择此类型。以后很容易更改它,如果 必要。.py
  • 文件:Cython是另一个编程 建立在 Python 之上的语言。主要好处是它可以 编译成机器代码,可以使其比普通Python快得多 法典。对于大多数节点来说,这绝对是矫枉过正,性能优势将 只有计算成本高昂的操作才可见。你也只能工作 与 Cython 文件一起设置完整的工作环境。.pyx

第一个节点

我们要创建的第一个简单节点将能够复制 一个对象到另一个具有偏移量的对象的位置。

首先按照上述规则为此节点创建一个文件。然后复制 这个小模板代码放入文件中:

import bpy
from animation_nodes.base_types import AnimationNode

class TemplateNode(bpy.types.Node, AnimationNode):
    bl_idname = "an_TemplateNode"
    bl_label = "Template"

    def create(self):
        pass

    def execute(self):
        pass

这个模板是我个人用于所有新节点的模板,它非常 很容易建立在它上面。

现在我们必须为新节点选择一个名称。这里最重要的是 因为这是节点的标识符,当您更改时 稍后,使用此节点的所有文件都将被破坏。它也应该有 一个前缀,这样其他附加组件就不会有问题。所以 确保给它起一个好名字,尽可能准确地告诉它 节点确实如此。以后可以更改类名和属性 如有必要,没有问题。这是我们特定 例:bl_idnamean_bl_label

class CopyLocationWithOffsetNode(bpy.types.Node, AnimationNode):
    bl_idname = "an_CopyLocationWithOffsetNode"
    bl_label = "Copy Location with Offset"

下一步是创建我们需要的套接字。因此就有了功能。在我们的示例节点中,我们需要三个输入。一 源对象、一个目标对象和偏移量。所以让我们创建 那些:create(self)

def create(self):
    #               Type      Name   Identifier
    self.newInput("Object", "Source", "source")
    self.newInput("Object", "Target", "target")
    self.newInput("Vector", "Offset", "offset")

创建套接字时,我们必须至少指定三个参数:

  • 类型:这将决定将创建哪个套接字,每个套接字都有一个 不同的颜色。有很多套接字类型。以下是一些常见的: , , , , , ...ObjectVectorFloatIntegerObject List
  • 名称:此名称将显示在Blender的节点编辑器中。
  • 标识符:标识符对我们来说还不是很重要。不管你怎么做 如果不是绝对必要,不应该改变,但改变它并没有那么糟糕 作为更改 .通常将此标识符用作变量 稍后在代码中命名。bl_idname

最后但并非最不重要的一点是,我们必须在函数中放入一些代码。如 一旦节点有输入套接字,这个函数就必须有参数。在 这种情况我们需要三个参数,名称应该对应于套接字 标识符。顺序也必须相同。在函数体中,我们可以做 无论我们想要什么这些对象。我们必须注意的一件事是 对象可以是 。在发生任何其他事情之前必须检查这一点 因为如果节点中出现错误,整个节点树会突然停止 加工。executeNone

def execute(self, source, target, offset):
    if source is None or target is None:
        return

    target.location = source.location + offset

此节点现在已完全正常运行。以下是所有代码 再次使用此节点。

import bpy
from animation_nodes.base_types import AnimationNode

class CopyLocationWithOffsetNode(bpy.types.Node, AnimationNode):
    bl_idname = "an_CopyLocationWithOffsetNode"
    bl_label = "Copy Location with Offset"

    def create(self):
        self.newInput("Object", "Source", "source")
        self.newInput("Object", "Target", "target")
        self.newInput("Vector", "Offset", "offset")

    def execute(self, source, target, offset):
        if source is None or target is None:
            return

        target.location = source.location + offset

我们将在下一部分中继续处理此节点。

3D建模学习工作室翻译整理,转载请标明出处!

上一篇:Blender动画节点插件开发文档介绍 (mvrlink.com)

下一篇:Blender动画节点插件开发文档-输出 (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号