推荐:将 NSDT场景编辑器 加入你的3D开发工具链。
https://ted.sinoccdc.cn/
附加组件
创建一个目录,其加载项名称以 为前缀,即 。目录应遵循以下基础 结构:an_an_
an_
├── __init__.py
├── auto_load.py
├── ui/
│ ├── __init__.py
│ ├── node_menu.py
├── sockets/
│ ├── __init__.py
│ ├── …
├── nodes/
│ ├── __init__.py
│ ├── …
不要在扩展名称中使用。animation_nodes
稍后我们将解释需要在这些文件中添加的内容。可以从动画节点复制文件auto_load.py源在没有任何更改的情况下,文件位于目录中。这 文件将帮助我们自动注册和加载类,所以它不是 强制性的,但建议使用。要使自动加载正常工作,每个 具有定义 Blender 类的文件的目录需要有一个空文件,即您在上面的子目录中看到的文件。animation_nodes__init__.py
此结构适用于简单扩展。更复杂的扩展, 利用Cython应该遵循更复杂的结构。此结构是 稍后在赛通中描述部分.
初始化
在顶级文件中,我们需要做三件事:__init__.py
确保动画节点已加载且可用。
初始化自动加载程序并注册/注销类。
更新套接字信息。仅当您定义新套接字时,才需要这样做。
”’
Copyright (C) 2020
Created by
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
”’
bl_info = {
"name": "Animation Nodes Test Extension",
"author": "",
"version": (1, 0, 0),
"blender": (2, 90, 0),
"location": "Animation Nodes",
"description": "A Test Extension For Animation Nodes.",
"warning": "",
"doc_url": "",
"tracker_url": "",
"category": "Nodes",
}
import bpy
import addon_utils
from . import auto_load
try: import animation_nodes
except:
animation_nodes = addon_utils.enable("animation_nodes", default_set = False, persistent = True)
if not animation_nodes:
raise Exception("Could not load Animation Nodes.")
auto_load.init()
animation_nodes.sockets.info.updateSocketInfo()
def register():
auto_load.register()
def unregister():
auto_load.unregister()
Nodes
将节点添加到目录或其任何子目录中。这 目录及其子目录应各自有一个空文件 正如我们之前提到的。检查nodes__init__.py节点开发指南 有关如何创建节点或检查动画节点源的信息 有关如何编写节点的示例。
笔记
绝对进口
在动画节点源中,动画节点对象是相对导入的。 这不适用于扩展。您必须绝对从 模块。因此,如果您在 动画节点源:animation_nodes
from .. perlin_noise cimport perlinNoise1D
它应该翻译成:
from animation_nodes.algorithms.perlin_noise cimport perlinNoise1D
执行代码中的扩展模块
您可以使用该模块(别名也为 -) 节点的执行代码。那是因为它是默认导入的。挨次 要使用扩展模块,您必须告诉动画节点通过导入它 重写方法。所以代码应该是:animation_nodesANgetUsedModules
def getUsedModules(self):
return ["an_"]
插座
在目录或其任何子目录中添加套接字。这 目录及其子目录应各自有一个空文件 正如我们之前提到的。sockets__init__.py
用户界面
为了将您的节点添加到菜单中。在目录中的文件中,定义一个绘制函数,该函数绘制其他菜单或绘制节点 直接插入运算符。然后,在寄存器函数中,附加此绘制 函数到任何动画节点菜单或直接添加菜单。为 实例中,以下文件定义一个新菜单并绘制节点插入 其中的运算符。然后,定义一个绘制此菜单的绘制函数,即 然后追加到菜单,即节点添加菜单。菜单 将位于您追加到的菜单的末尾。node_menu.pyuiNODE_MT_add
import bpy
from animation_nodes.ui.node_menu import insertNode
class TestExtensionMenu(bpy.types.Menu):
bl_idname = "AN_MT_test_extension_menu"
bl_label = "Test Extension Menu"
def draw(self, context):
layout = self.layout
insertNode(layout, "an_TestExtensionNode", "Test Extension Node")
def drawMenu(self, context):
if context.space_data.tree_type != "an_AnimationNodeTree": return
layout = self.layout
layout.operator_context = "INVOKE_DEFAULT"
layout.separator()
layout.menu("AN_MT_test_extension_menu", text = "Test Extension Menu", icon = "SCRIPTPLUGINS")
def register():
bpy.types.NODE_MT_add.append(drawMenu)
def unregister():
bpy.types.NODE_MT_add.remove(drawMenu)
如果我想将菜单添加到动画节点中的矢量菜单中,我会 而是附加到菜单。有关完整列表 菜单和有关如何定义更复杂的菜单的更多示例,请检查动画节点源中的文件AN_MT_vector_menunode_menu.py这里.
Cython
如果您想编写自己的Cython代码并定义自己的Cython。 结构,您可以使用动画节点中的设置脚本,在这种情况下, 您的项目应遵循以下基础结构:
an_
├── setup.py
├── _export_c_setup.py
├── conf.default.json
├── an_
│ ├── …
├── _setuputils/
│ ├── …
内部目录是上面所示的目录。 目录、、 和应从动画节点复制an_
头文件
为了构建你的扩展,Cython需要查看 动画节点。因此,首先从animation_nodes_headers.zip发布页面、解压缩并配置 构建系统通过将提取的目录的路径添加到 文件中命名的数组条目。通知 此文件是在您第一次构建后生成的,但您可以添加它 在此之前,您自己到根目录。示例如下所示:Cython Include Pathsconf.jsonconf.json
{
"Copy Target" : "/path/to/your/blender/addon/directory",
"Cython Include Paths" : ["/path/to/the/extracted/directory/animation_nodes_headers/"]
}
附加组件
创建一个目录,其加载项名称以 为前缀,即 。目录应遵循以下基础 结构:an_an_
an_
├── __init__.py
├── auto_load.py
├── ui/
│ ├── __init__.py
│ ├── node_menu.py
├── sockets/
│ ├── __init__.py
│ ├── …
├── nodes/
│ ├── __init__.py
│ ├── …
不要在扩展名称中使用。animation_nodes
稍后我们将解释需要在这些文件中添加的内容。可以从动画节点复制文件auto_load.py源在没有任何更改的情况下,文件位于目录中。这 文件将帮助我们自动注册和加载类,所以它不是 强制性的,但建议使用。要使自动加载正常工作,每个 具有定义 Blender 类的文件的目录需要有一个空文件,即您在上面的子目录中看到的文件。animation_nodes__init__.py
此结构适用于简单扩展。更复杂的扩展, 利用Cython应该遵循更复杂的结构。此结构是 稍后在赛通中描述部分.
初始化
在顶级文件中,我们需要做三件事:__init__.py
确保动画节点已加载且可用。
初始化自动加载程序并注册/注销类。
更新套接字信息。仅当您定义新套接字时,才需要这样做。
”’
Copyright (C) 2020
Created by
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
”’
bl_info = {
"name": "Animation Nodes Test Extension",
"author": "",
"version": (1, 0, 0),
"blender": (2, 90, 0),
"location": "Animation Nodes",
"description": "A Test Extension For Animation Nodes.",
"warning": "",
"doc_url": "",
"tracker_url": "",
"category": "Nodes",
}
import bpy
import addon_utils
from . import auto_load
try: import animation_nodes
except:
animation_nodes = addon_utils.enable("animation_nodes", default_set = False, persistent = True)
if not animation_nodes:
raise Exception("Could not load Animation Nodes.")
auto_load.init()
animation_nodes.sockets.info.updateSocketInfo()
def register():
auto_load.register()
def unregister():
auto_load.unregister()
Nodes
将节点添加到目录或其任何子目录中。这 目录及其子目录应各自有一个空文件 正如我们之前提到的。检查nodes__init__.py节点开发指南 有关如何创建节点或检查动画节点源的信息 有关如何编写节点的示例。
笔记
绝对进口
在动画节点源中,动画节点对象是相对导入的。 这不适用于扩展。您必须绝对从 模块。因此,如果您在 动画节点源:animation_nodes
from .. perlin_noise cimport perlinNoise1D
它应该翻译成:
from animation_nodes.algorithms.perlin_noise cimport perlinNoise1D
执行代码中的扩展模块
您可以使用该模块(别名也为 -) 节点的执行代码。那是因为它是默认导入的。挨次 要使用扩展模块,您必须告诉动画节点通过导入它 重写方法。所以代码应该是:animation_nodesANgetUsedModules
def getUsedModules(self):
return ["an_"]
插座
在目录或其任何子目录中添加套接字。这 目录及其子目录应各自有一个空文件 正如我们之前提到的。sockets__init__.py
用户界面
为了将您的节点添加到菜单中。在目录中的文件中,定义一个绘制函数,该函数绘制其他菜单或绘制节点 直接插入运算符。然后,在寄存器函数中,附加此绘制 函数到任何动画节点菜单或直接添加菜单。为 实例中,以下文件定义一个新菜单并绘制节点插入 其中的运算符。然后,定义一个绘制此菜单的绘制函数,即 然后追加到菜单,即节点添加菜单。菜单 将位于您追加到的菜单的末尾。node_menu.pyuiNODE_MT_add
import bpy
from animation_nodes.ui.node_menu import insertNode
class TestExtensionMenu(bpy.types.Menu):
bl_idname = "AN_MT_test_extension_menu"
bl_label = "Test Extension Menu"
def draw(self, context):
layout = self.layout
insertNode(layout, "an_TestExtensionNode", "Test Extension Node")
def drawMenu(self, context):
if context.space_data.tree_type != "an_AnimationNodeTree": return
layout = self.layout
layout.operator_context = "INVOKE_DEFAULT"
layout.separator()
layout.menu("AN_MT_test_extension_menu", text = "Test Extension Menu", icon = "SCRIPTPLUGINS")
def register():
bpy.types.NODE_MT_add.append(drawMenu)
def unregister():
bpy.types.NODE_MT_add.remove(drawMenu)
如果我想将菜单添加到动画节点中的矢量菜单中,我会 而是附加到菜单。有关完整列表 菜单和有关如何定义更复杂的菜单的更多示例,请检查动画节点源中的文件AN_MT_vector_menunode_menu.py这里.
赛通
如果您想编写自己的Cython代码并定义自己的Cython。 结构,您可以使用动画节点中的设置脚本,在这种情况下, 您的项目应遵循以下基础结构:
an_
├── setup.py
├── _export_c_setup.py
├── conf.default.json
├── an_
│ ├── …
├── _setuputils/
│ ├── …
内部目录是上面所示的目录。 目录、、 和应从动画节点复制an_
头文件
为了构建你的扩展,Cython需要查看 动画节点。因此,首先从animation_nodes_headers.zip发布页面、解压缩并配置 构建系统通过将提取的目录的路径添加到 文件中命名的数组条目。通知 此文件是在您第一次构建后生成的,但您可以添加它 在此之前,您自己到根目录。示例如下所示:Cython Include Pathsconf.jsonconf.json
{
"Copy Target" : "/path/to/your/blender/addon/directory",
"Cython Include Paths" : ["/path/to/the/extracted/directory/animation_nodes_headers/"]
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net