共计 7869 个字符,预计需要花费 20 分钟才能阅读完成。
举荐:将 NSDT 场景编辑器 退出你的 3D 开发工具链。
https://ted.sinoccdc.cn/
附加组件
创立一个目录,其加载项名称以 为前缀,即。目录应遵循以下根底 构造:an_an_<your_extension_name>
an_<your_extension_name>/
├── __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 <YOUR NAME>
<YOUR EMAIL>
Created by <YOUR NAME>
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 <http://www.gnu.org/licenses/>.
”’
bl_info = {
"name": "Animation Nodes Test Extension",
"author": "<YOUR NAME>",
"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_<your_extension_name>"]
插座
在目录或其任何子目录中增加套接字。这 目录及其子目录应各自有一个空文件 正如咱们之前提到的。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_<your_extension_name>/
├── setup.py
├── _export_c_setup.py
├── conf.default.json
├── an_<your_extension_name>/
│ ├── …
├── _setuputils/
│ ├── …
外部目录是下面所示的目录。目录、、和应从动画节点复制 an_<your_extension_name>_setuputilssetup.py_export_c_setup.pyconf.default.json 源. 您须要进行的惟一更改是将变量更改为 文件。须要做的最初一件事是设置 标头。addonNamean_<your_extension_name>setup.py_export_c_setup.py
头文件
为了构建你的扩大,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_<your_extension_name>
an_<your_extension_name>/
├── __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 <YOUR NAME>
<YOUR EMAIL>
Created by <YOUR NAME>
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 <http://www.gnu.org/licenses/>.
”’
bl_info = {
"name": "Animation Nodes Test Extension",
"author": "<YOUR NAME>",
"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_<your_extension_name>"]
插座
在目录或其任何子目录中增加套接字。这 目录及其子目录应各自有一个空文件 正如咱们之前提到的。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_<your_extension_name>/
├── setup.py
├── _export_c_setup.py
├── conf.default.json
├── an_<your_extension_name>/
│ ├── …
├── _setuputils/
│ ├── …
外部目录是下面所示的目录。目录、、和应从动画节点复制 an_<your_extension_name>_setuputilssetup.py_export_c_setup.pyconf.default.json 源. 您须要进行的惟一更改是将变量更改为 文件。须要做的最初一件事是设置 标头。addonNamean_<your_extension_name>setup.py_export_c_setup.py
头文件
为了构建你的扩大,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/"]
}