Operator

Blender 源码学习--Operator

99封情书 提交于 2019-12-09 14:55:40
Blender 的 c 语言 api 与 python api 颇为相似。[感觉像Python的超级扩展] Mesh Subdivide 下面是对 blender 中的 mesh subdivide operator 代码的分析 Registration 首先我们需要在 window manager 中注册 operator, 编写的注册函数将会在启动时调用. void MESH_OT_subdivide(wmOperatorType *ot){ /* identifiers */ ot->name= "Subdivide"; ot->description= "Split selected faces into smaller faces."; ot->idname= "MESH_OT_subdivide"; /* api callbacks */ ot->exec= subdivide_exec; ot->poll= ED_operator_editmesh; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ RNA_def_int(ot->srna, "number_cuts", 1, 1, 10, "Number of Cuts", "", 1, INT_MAX);} 第一行 void

Blender的插件开发-Operator操作器(算子)

删除回忆录丶 提交于 2019-12-09 12:24:36
毫无疑问,Operator是Blender中最为核心的一个对象,而且里面包罗万象(不仅可以操作几何对象,所有的菜单都可以控制,因为Blender其实就是一个三维图形的超级命令解释器嘛!)。 我们先定义一个简单的Operator。把下面的代码复制到文本编辑中,点击“执行脚本”。 import bpy class SimpleOperator(bpy.types.Operator): bl_idname = "object.simple_operator" bl_label = "Tool Name" def execute(self, context): print("Hello World") return {'FINISHED'} bpy.utils.register_class(SimpleOperator) 在三维视窗中,鼠标点击,按下空格键,输入“tool”,将会列出这个“Tool Name”的Operator工具。 继续,选中“Tool Name”项,并没有出现上面的execute中定义的“Hello World”,怎么回事!? 因为Blender把输出信息定义到标准输出了,如果从控制台窗口启动,将从控制台上看到输出的信息。Blender并没有把信息输出到信息窗口和python控制台,这是一个让图形界面使用者有点困惑的地方,先按下不表,后面再想办法解决。 现在