当前位置:

首页 > 编程开发 > Blender Python编程入门实例分析

Blender Python编程入门实例分析

Blender
Blender

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

立即下载
Windows、macOS 和 Linux 2026-10-13
设计美化 blender Blender安装教程

BlenderPython编程支持的特性:编辑用户界面可以编辑的任何数据(场景,网格,粒子等)。修改用户首选项、键映射和主题。使用自己的设置运行工具。创建用户界面元素,如菜单、标题和面板。创建新的工具。创建交互式工具。创建与Blender集成的新渲染引擎。订阅对数据及其属性的更改。在现有的Blender数据中定义新设置。使用Python绘制3D视图。(仍然)缺失的特性:创建新的空间类型。为每个类型分配自定义属性。数据访问Python以与动画系统和用户界面相同的方式访问Blender的数据。这意味着可以通过

本文目录

      Blender Python 编程

      支持的特性:

      • 编辑用户界面可以编辑的任何数据(场景,网格,粒子等)。

      • 修改用户首选项、键映射和主题。

      • 使用自己的设置运行工具。

      • 创建用户界面元素,如菜单、标题和面板。

      • 创建新的工具。

      • 创建交互式工具。

      • 创建与 Blender 集成的新渲染引擎。

      • 订阅对数据及其属性的更改。

      • 在现有的 Blender 数据中定义新设置。

      • 使用 Python 绘制3D视图。

      (仍然)缺失的特性:

      • 创建新的空间类型。

      • 为每个类型分配自定义属性。

      数据访问

      Python 以与动画系统和用户界面相同的方式访问 Blender 的数据。这意味着可以通过按钮更改的任何设置也可以从 Python 更改。

      使用模块可以完成从当前加载的 Blender 文件访问数据的操作 bpy.data 。这样就可以访问库数据。例如:

      >>> bpy.data.objects
      
      >>> bpy.data.scenes
      
      >>> bpy.data.materials
      

      访问集合

      您会注意到索引和字符串都可以用来访问集合的成员。与 Python 字典不同,这两种方法都是可用的; 但是,在运行 Blender 时,成员的索引可能会改变。

      list(bpy.data.objects)
      [bpy.data.objects["Cube"], bpy.data.objects["Plane"]]
      >>> bpy.data.objects['Cube']
      bpy.data.objects["Cube"]
      >>> bpy.data.objects[0]
      bpy.data.objects["Cube"]

      访问属性

      一旦你有了一个数据块,比如一个材料、对象、集合等,它的属性就可以被访问,就像使用图形界面更改设置一样。事实上,每个按钮的工具提示还显示了 Python 属性,它可以帮助查找在脚本中更改哪些设置。

      bpy.data.objects[0].name
      'Camera'
      >>> bpy.data.scenes["Scene"]
      bpy.data.scenes['Scene']
      >>> bpy.data.materials.new("MyMaterial")
      bpy.data.materials['MyMaterial']

      对于测试要访问哪些数据,使用 Python Console 是很有用的,它是自己的空间类型。这支持自动完成,为您提供了一种快速探索文件中的数据的方法。

      可以通过控制台快速找到的数据路径示例:

      bpy.data.scenes[0].render.resolution_percentage
      100
      >>> bpy.data.scenes[0].objects["Torus"].data.vertices[0].co.x
      1.0

      数据创建/删除

      当你熟悉其他 Python API 时,你可能会惊讶于 bpy API 中新的数据块不能通过调用类来创建:

      bpy.types.Mesh()
      Traceback (most recent call last):
        File "", line 1, in 
      TypeError: bpy_struct.__new__(type): expected a single argument

      用户不能在 Blender 数据库(bpy.data访问的那个)外的任何地方新建数据,因为这些数据是由 Blender 管理的(保存、加载、撤销、追加等)。

      而只能使用以下方法进行数据增删:

      mesh = bpy.data.meshes.new(name="MyMesh")
      >>> print(mesh)
      
      bpy.data.meshes.remove(mesh)

      自定义属性

      Python 可以访问具有 ID 的任何数据块上的属性。当分配属性时候,如果该属性本不存在,就会新建该属性。

      这些属性同样保存在 Blender 文件中,并随着对象一同继承或者复制。

      bpy.context.object["MyOwnProperty"] = 42
      if "SomeProp" in bpy.context.object:
          print("Property found")
      # Use the get function like a Python dictionary
      # which can have a fallback value.
      value = bpy.data.scenes["Scene"].get("test_prop", "fallback value")
      # dictionaries can be assigned as long as they only use basic types.
      collection = bpy.data.collections.new("MyTestCollection")
      collection["MySettings"] = {"foo": 10, "bar": "spam", "baz": {}}
      del collection["MySettings"]

      但是,这些自定义属性的值必须是基本的 Python 数据类型。如:

      • int/float/string

      • int/ float 的数组

      • 字典(仅支持字符串键,值也必须是基本类型)

      自定义属性在 Python 外部同样有效。它们可以通过曲线设置动画或在驱动路径中使用。

      上下文 Context

      能够直接通过名称或列表访问数据非常有用,但更常见的是根据用户的选择进行操作。这些上下文信息始终可从 bpy.context 中获得。

      常用案例:

      >>> bpy.context.object
      >>> bpy.context.selected_objects
      >>> bpy.context.visible_bones

      请注意,上下文是只读的。这些值不能直接修改,尽管可以通过运行 API 函数或使用数据 API 进行更改。

      因此这样会引发错误:bpy.context.object = obj

      但是这样会正常工作:bpy.context.scene.objects.active = obj

      运算符 Operators (Tools)

      Operators 通常是用户从按钮、菜单项或快捷键访问的工具。从用户的角度来看,它们是一个工具,但是 Python 可以通过 bpy.ops 模块访问、设置并运行他们。

      举例:

      bpy.ops.mesh.flip_normals()
      {'FINISHED'}
      >>> bpy.ops.mesh.hide(unselected=False)
      {'FINISHED'}
      >>> bpy.ops.object.transform_apply()
      {'FINISHED'}

      Operator Cheat Sheet 给出了 Python 语法中所有操作符及其默认值的列表,以及生成的文档。这是一个了解 Blender 所有操作符的好方法。

      Operator Poll()

      许多的 Operators 都有自己的 Poll() 方法,该方法能检查现在的 Blender 上下文是否满足该 Operator 运行的条件。不满足时,直接调用该 Operator 将会产生错误。所以在操作一个 Operators 的时候,建议先用一下方式检查 context:

      if bpy.ops.view3d.render_border.poll():
          bpy.ops.view3d.render_border()

      将 Python 集成到 Blender 的方式

      Python 脚本可以通过以下方式与 Blender 集成:

      • 通过定义渲染引擎。

      • 通过定义运算符。

      • 通过定义菜单,标题和面板。

      • 通过将新按钮插入现有菜单,标题和面板

      在 Python 中,这是通过定义一个类来完成的,该类是现有类型的子类。

      Blender 官方文档中提供了实例的类模板。如:

      示例运算符

      import bpy
      def main(context):
          for ob in context.scene.objects:
              print(ob)
      class SimpleOperator(bpy.types.Operator):
          """Tooltip"""
          bl_idname = "object.simple_operator"
          bl_label = "Simple Object Operator"
          @classmethod
          def poll(cls, context):
              return context.active_object is not None
          def execute(self, context):
              main(context)
              return {'FINISHED'}
      def register():
          bpy.utils.register_class(SimpleOperator)
      def unregister():
          bpy.utils.unregister_class(SimpleOperator)
      if __name__ == "__main__":
          register()
      # test call
      bpy.ops.object.simple_operator()

      一旦这个脚本运行,SimpleOperator 在 Blender 中注册,可以从 Operator Search 中调用或添加到工具栏中。

      运行脚本:

      • 启动 Blender 并切换到脚本工作区。

      • 单击文本编辑器中的 New 按钮以创建新的文本数据块。

      • 从上面并将其粘贴到文本编辑器中。

      • 单击 Run Script 按钮。

      • 将光标移至 3D 视口,打开运算符搜索菜单,输入 “Simple”。

      • 点击搜索中找到的 “SimpleOperator” 项目。

      示例面板

      面板注册为一个类,就像操作符一样。请注意用于设置它们所显示的上下文的额外 bl_ 变量。

      import bpy
      class HelloWorldPanel(bpy.types.Panel):
          """Creates a Panel in the Object properties window"""
          bl_label = "Hello World Panel"
          bl_idname = "OBJECT_PT_hello"
          bl_space_type = 'PROPERTIES'
          bl_region_type = 'WINDOW'
          bl_context = "object"
          def draw(self, context):
              layout = self.layout
              obj = context.object
              row = layout.row()
              row.label(text="Hello world!", icon='WORLD_DATA')
              row = layout.row()
              row.label(text="Active object is: " + obj.name)
              row = layout.row()
              row.prop(obj, "name")
              row = layout.row()
              row.operator("mesh.primitive_cube_add")
      def register():
          bpy.utils.register_class(HelloWorldPanel)
      def unregister():
          bpy.utils.unregister_class(HelloWorldPanel)
      if __name__ == "__main__":
          register()

      运行脚本:

      • 启动 Blender 并切换到脚本工作区。

      • 单击文本编辑器中的 New 按钮以创建新的文本数据块。

      • 从上面并将其粘贴到文本编辑器中。

      • 单击 Run Script 按钮。

      要查看结果:

      • 选择默认立方体。

      • 点击按钮面板中的对象属性图标(最右边;出现为一个小立方体)。

      • 向下滚动查看名为 “Hello World Panel” 的面板。

      • 更改对象名称也会更新 Hello World Panel 的 name:字段。

      请注意通过代码定义的行分布以及标签和属性。

      数据类型

      Blender 定义了许多 Python 类型,但也使用 Python 本机类型。

      原生类型

      在简单的情况下,将数字或字符串作为自定义类型会很麻烦,因此可以将它们作为普通的 Python 类型进行访问。

      • Blender float / int / boolean-> float / int / boolean

      • Blender 枚举器->字符串

      >>> C.object.rotation_mode = 'AXIS_ANGLE'
      • Blender枚举器(多个)->字符串集

      # setting multiple camera overlay guides
      bpy.context.scene.camera.data.show_guide = {'GOLDEN', 'CENTER'}
      # passing as an operator argument for report types
      self.report({'WARNING', 'INFO'}, "Some message!")

      内部类型

      用于 Blender 数据块和 Blender 集合: bpy.types.bpy_struct

      用于包含 collections/meshes/bones/scenes 等属性的数据。

      包装 Blenders 数据的主要类型有 2 种,

      • 一种用于数据块(内部称为 bpy_struct)

      >>> bpy.context.object
      bpy.data.objects['Cube']
      • 另一种用于属性。

      >>> C.scene.objects
      bpy.data.scenes['Scene'].objects

      Mathutils 类型

      用于表示向量,四元数,euler,矩阵和颜色类型等,可从 mathutils 模块访问它们。

      一些属性,如 bpy.types.Object.location, bpy.types.PoseBone.rotation_euler 和 bpy.types.Scene.Cursor_location 可以作为特殊的数学类型访问,这些类型可以一起使用并以各种有用的方式进行操作。

      例如,矩阵向量的乘法

      bpy.context.object.matrix_world @ bpy.context.object.data.verts[0].co

      注意:mathutils 类型保留对 Blender 内部数据的引用,这样更改就可以应用回来。

      举个例子

      # modifies the Z axis in place.
      bpy.context.object.location.z += 2.0
      # location variable holds a reference to the object too.
      location = bpy.context.object.location
      location *= 2.0
      # Copying the value drops the reference so the value can be passed to
      # functions and modified without unwanted side effects.
      location = bpy.context.object.location.copy()

      动画

      有两种方法可以通过 Python 添加关键帧。

      • 第一种是直接通过键属性,这类似于用户从按钮插入关键帧。

      • 您也可以手动创建曲线和关键帧数据,然后将路径设置为属性。

      这是这两种方法的示例。这两个示例都在活动对象的 Z 轴上插入关键帧。

      简单的例子:

      obj = bpy.context.object
      obj.location[2] = 0.0
      obj.keyframe_insert(data_path="location", frame=10.0, index=2)
      obj.location[2] = 1.0
      obj.keyframe_insert(data_path="location", frame=20.0, index=2)

      使用低级功能:

      obj = bpy.context.object
      obj.animation_data_create()
      obj.animation_data.action = bpy.data.actions.new(name="MyAction")
      fcu_z = obj.animation_data.action.fcurves.new(data_path="location", index=2)
      fcu_z.keyframe_points.add(2)
      fcu_z.keyframe_points[0].co = 10.0, 0.0
      fcu_z.keyframe_points[1].co = 20.0, 1.0
      本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
      作者最新文章
      编程开发 Python blender
      相关文章 更多
      Blender渲染快捷键是什么
      Blender渲染快捷键是什么

      掌握Blender渲染核心快捷键:F12启动单帧渲染,Ctrl+F12渲染动画序列,F11快速查看历史结果。本文基于Windows默认键位,结合实操步骤说明相机视角检查、输出设置及图片保存方法,帮助新手高效完成渲染工作流。

      Blender渲染效果不清晰怎么办
      Blender渲染效果不清晰怎么办

      Blender渲染图模糊不清?本文基于Windows版Blender 4.4 Cycles引擎,逐步讲解如何检查输出分辨率百分比、相机景深焦点、采样噪波阈值及贴图质量。教你区分像素不足、失焦与降噪涂抹,快速解决渲染清晰度问题。

      Blender渲染采样怎么设置
      Blender渲染采样怎么设置

      详解Blender 4.4中Cycles渲染引擎的采样设置方法。涵盖视口与渲染采样分离、最大采样调整、噪波阈值应用及OpenImageDenoise降噪对比,助您高效减少噪点并保留细节。

      Blender渲染动画保存在哪里
      Blender渲染动画保存在哪里

      找不到Blender渲染好的动画?文件通常保存在【输出属性】指定的路径中。本文教你识别相对路径(//)与绝对路径,区分PNG序列与FFmpeg视频的输出差异,并通过短范围测试快速验证保存位置,适用于Windows版Blender 4.5。

      blender打开快捷菜单怎么设置操作教程
      blender打开快捷菜单怎么设置操作教程

      在Blender中通过Q键快速收藏功能自定义常用操作菜单。本文详解Windows版Blender 4.5下添加、调用及管理快速收藏项的步骤,并区分右键上下文菜单与F3搜索的使用场景,提升建模效率。

      Blender怎么渲染动画
      Blender怎么渲染动画

      在 Blender 中渲染动画不只是按 F12。本教程详解如何设置帧范围、检查关键帧、输出 PNG 序列以及使用视频编辑器合成 MP4 视频,适合需要断点续传和高质量输出的用户。

      Blender渲染预览和成品不同怎么办
      Blender渲染预览和成品不同怎么办

      解决Blender渲染预览明亮但成品变暗、或模型轮廓差异大的问题。本教程指导用户固定相机视角、统一场景照明设置、检查细分级别及正确保存PNG图片,快速定位并修复渲染差异。

      Blender怎么渲染背景图片
      Blender怎么渲染背景图片

      在Blender 4.3中,相机参考背景不会直接出现在最终渲染中。本教程演示如何开启Film Transparent获取透明通道,并通过Compositing合成器的Alpha Over节点将静态背景图与渲染层叠加,确保模型在前、背景在后,且工程文件可随时修改。

      Blender渲染分辨率怎么调
      Blender渲染分辨率怎么调

      详解Blender渲染分辨率、输出百分比及像素比例的设置方法。通过5个关键步骤,解决渲染图像尺寸不对、画面被裁切或清晰度不足的问题,适用于Windows版Blender用户。

      Blender渲染输出怎么设置
      Blender渲染输出怎么设置

      Blender渲染后找不到图片?本教程演示Windows版Blender 4.5中如何正确设置输出分辨率、选择PNG格式及RGBA通道,区分单帧手动保存与动画帧序列自动输出,避免覆盖文件并确保渲染成果安全落地。

      查看更多
      精品专题 更多
      装机必备
      装机必备

      正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

      Windows
      Windows

      正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

      PDF教程
      PDF教程

      正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

      Mac软件 更多
      讯飞智作 网页版
      讯飞智作 网页版
      Windows/ macOS/ Linux

      讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

      火山引擎 网页版
      火山引擎 网页版
      Windows/ macOS/ Linux

      火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

      Aperty macOS版
      Aperty macOS版
      macOS

      Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

      WINDOWS 更多
      讯飞智作 网页版
      讯飞智作 网页版
      Windows/ macOS/ Linux

      讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

      火山引擎 网页版
      火山引擎 网页版
      Windows/ macOS/ Linux

      火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

      PixTV 网页版
      PixTV 网页版
      Windows

      PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。

      即将离开本站
      您即将前往第三方网站,请确认是否继续?