Blender Python 笔记

  1. Blender Python 内置模块
1. bpy blender python 基础模块
2. bpy.data 用于查找修改文件数据
3. bpy.ops 操作指令,比如创建物体、材质,移动物体 ...
4. bpy.props 在UI上定义属性,指定属性的数据类型、名称、描述等
5. bpy.types 包含bpy定义的各个内部类
6. bpy.context 包含了场景的所有上下文信息
7. bpy.utils 工具包
8. bgl 封装了opengl
9. blf UI字体相关
10. mathutils 数学库
  1. Tips
1. 打开blender python tooltip;
2. 信息窗口查看在blender中做的操作对应的ops操作指令;对于写工作流脚本很有用;
3. python console 内置bpy 可以输入bpy代码,tab键自动补全
4. 系统控制台 查看编辑的bpy脚本的运行信息,打印信息
5. 新增加的物体会变为激活物体,激活物体只有一个;
  1. 选择对象&激活对象
  1. 单选
  2. 多选
  3. 激活 每一个时刻只有一个对象处于激活状态,对处于激活状态的对象,可以进入其编辑模式、Pose 模式
  4. bpy.context.object 查询当前激活的对象
  1. 指定对象
  1. 通过给定的名称(字符串而非数字索引)访问数组元素bpy.data.objects[‘string’]data 返回对父数据块的引用.
  2. .data 返回对父数据块的引用
  1. 模式
  1. 编辑模式
  2. 对象模式
  3. Pose模式
  1. bmesh
  1. 在物体的编辑模式下,操纵物体的点、边、面
  1. addon开发
  1. bl_info 字典
  1. location:add-on gui的主要位置
  2. category:插件的类型
  3. space
  4. region space和region需要正确的组合
  1. operator
  1. 继承bpy.types.Operator
  2. bl_idname panel会通过该成员绑定operator
  3. bl_label
  4. 定义运行函数:def Execute(self,context): 接收bpy.context作为参数,调用成功return {"FINISHED"};
  5. 定义注册、注销的方法 cls作为参数
  6. blender 注册、注销该operator类时都会调用其register、unregister方法
  1. Panel
  1. 继承 bpy.types.Panel
  2. bl_space_type 、bl_region_type、bl_category、bl_label

          space和region分别有一些可选的类型,二者需要正确的组合才能一起工作

           3. 声明Draw方法 def Draw(self,context):核心组织功能是box()、row()、column()、分隔符()和label()。这五个函数中的每一个都可以嵌套在box()、row()或column()中,以实现更精细的组织。

           4.同样可以定义注册、注销的方法

      4.注册、注销

          1.需要定义register()\unregister()函数,这两个函数负责调用bpy.utils中的register_calss()\unregister_class()\register_module()\unregister_module()函数;

          2.继承了bpy.types的任何类都需要注册,如果父子类都需要注册,注册时先注册父类、注销时先注销子类

      5.Scene Properties and bpy.props 场景变量

  1. 需要定义register()\unregister()函数,这两个函数负责调用bpy.utils中的register_calss()\unregister_class()\register_module()\unregister_module()函数;
  2. 继承了bpy.types的任何类都需要注册,如果父子类都需要注册,注册时先注册父类、注销时先注销子类
  3. 添加到场景和对象类型的特性将保存到.blend文件,为了能够修改这些特性的变量,必须将他们注册为bpy.props.*类型的对象
  4. 可以通过bpy.context.xxx访问到注册的特性
  5. 两种注册方法
  • 在脚本的register()函数底部注册
  • 在bpy.types.class 的register方法中注册