编写简单的blender 插件教程
学习 · 刚刚 0阅读 · 0点赞
imdjs神马动画
这是一个简单的用bpy编写blender插件的教程,整个插件代码只有不到100行,但有完整的界面与功能.
以下文本保存为 任何一个名字.py
#====代码开始==============================================
bl_info = {
"name": "IMDJS_TEST_tool",#这是在插件面板里显示的名称
"author": "imdjs",#插件作者
"version": (0, 1,0),#插件版本号
"blender": (2, 93,1),#支持blender的版本
"location":"View3D > Tool Shelf > TEST_tool",#介绍插件位置
"description": "为了测试",
"wiki_url": "None yet"#可以添加一个网址的链接,(这里是空的)
"NA",
"tracker_url": "NA"
"",
"category": "Mesh"}#插件分类
#category": All User Enabled Disabled 3D View Add Add Curve Add Mesh Animation Compositing Development Game Engine Import-Export Material Mesh Node Nodes Object Outliner Paint Particle Render Rigging Scene Sculpting Sequencer Surface System Text Editor UI UV User Interface Listener#以上是所列的全部分类,可以根据插件类型填写不同分类名 如:Object 或Mesh
import bpy
from bpy.props import IntProperty #这里是导入props模块的 IntProperty 属性
#////按键///////////////////////////////////////
class 卐按键卐Operator(bpy.types.Operator):
bl_idname = "op.exp_test"#按键id,必须小写而且不能与其它operator的id重复
bl_label = " "#按键显示名称
bl_description = "---"#填写按键功能描述
bl_options = {"REGISTER", "UNDO"};#注册插件参数,就是运行这个operator后会自动弹出参数界面
ip参数:IntProperty(name='参数',description='',default=0,min=0,max=100,step=1);#这是设置本Operator的参数,这里是int类型,可以是其它类型,例如FloatProperty
#----按下按键执行--------------------------
def execute(self,context):
print("EXEC打印脚本==",);
#这里可以写按下这个键要实际的功能
return {"FINISHED"};
#====下拉菜单,必须用 MT_MT_ 前缀====================================
class MT_MT_TEST_Menu(bpy.types.Menu):
bl_label = "TEST_MENU"#下拉菜单的名称
#这个draw 函数是绘制下拉菜单的界面(这里只有一个operator按键)
def draw(self, context):
layout = self.layout;
layout.operator(卐按键卐Operator.bl_idname,translate=True,icon="BONE_DATA");#把上面的按键放到下拉菜单里
#////界面,PT_PT_ 前缀///////////////////////////////////////
class PT_PT_TEST_Panel(bpy.types.Panel):
bl_label = "TEST tool" #这是在软件里插件显示的名称
bl_space_type = 'VIEW_3D'
bl_region_type = "UI"#在右边面板
bl_category = "自定义标签"#插件分类tab 可以是Tool 或自定义名
#这个@classmethod函数决定了面板在什么情况下显示,如果不写这个函数,那么插件就会一直显示
@classmethod
def poll(self,context):
oA=context.active_object;#激活的物体
return (oA and oA.type in["MESH","CURVE","LATTICE"]);#如果激活的物体是"MESH","CURVE","LATTICE" 其中一种类型就激活界面,否则就不显示这个界面
#这个draw 函数是绘制主插件的界面(这里只有一个operator按键)
def draw(self, context):
layout = self.layout;
layout.operator(卐按键卐Operator.bl_idname,translate=True, icon = "PMARKER_ACT");#画出按键
layout.menu("MT_MT_TEST_Menu", icon="OUTLINER_OB_ARMATURE");#画出下拉菜单界面
#////注册插件////////////////////////////////////
def register():
bpy.utils.register_class(卐按键卐Operator);
bpy.utils.register_class(MT_MT_TEST_Menu);
bpy.utils.register_class(PT_PT_TEST_Panel);
#====注销插件==========================
def unregister():
bpy.utils.unregister_class(卐按键卐Operator);
bpy.utils.unregister_class(MT_MT_TEST_Menu);
bpy.utils.unregister_class(PT_PT_TEST_Panel)
#----------------------------------------------------------
if (__name__ == "__main__"):
register()
#====代码结束==============================================
把上面的 xxx.py 文件直接在blender插件安装或放到自定义的插件目录.
打开blender 在插件目录 搜索test 会出现这个界面:

勾选插件 就可以在标签栏增加一个叫 自定义标签,这里有一个按键与一个下拉菜单,点击就可以执行功能,当然这里只是实现了打印功能,你可以在这里写上任何功能.

打开控制台窗口可以看到打印信息.

这篇教程介绍了如何使用Python编写一个简单的Blender插件,包括定义插件信息、创建Operator、Menu和Panel。示例代码展示了如何实现一个带有参数的按键操作和下拉菜单,并在3D视图的ToolShelf中显示。通过这个教程,初学者可以了解Blender插件的基本结构和功能实现。

1453

被折叠的 条评论
为什么被折叠?



