Blender 3D:从新手到专业/高级教程/Python 脚本/简介
适用的 Blender 版本:2.67。 |
Python 是一种功能强大、高级、动态的语言。Blender 2.67 中使用的 Python 版本是 3.3。如果您不熟悉 Python,请先阅读 Python 书籍。如果您熟悉旧版本的 Python (2.x),此页面 总结了 3.x 中的新增内容。
如果您熟悉旧版 Blender 中的 Python 脚本,请注意 2.5x/2.6x 是完全不同的;旧的 Blender
模块已不存在。许多功能现在可以通过 bpy
模块获得,但不要期望完全的 1:1 对应关系。
打开一个新的默认 Blender 文档。如果您没有自定义设置,底部将有一个时间轴 窗口;将其更改为 Python 控制台 。也许可以增加它的高度,以便您可以一次看到更多行。
首先,让我们找出文档中存在哪些对象。在“>>>”提示符下,键入
bpy.data.objects
您应该会看到响应
<bpy_collection[3], BlendDataObjects>
这实际上并没有那么有信息量。实际上,您这里有一个迭代器;要查看其内容,只需执行通常的 Python 操作,将其转换为列表。尝试输入以下内容
list(bpy.data.objects) #or bpy.data.objects[:]
这次响应应该是
[bpy.data.objects["Camera"], bpy.data.objects["Cube"], bpy.data.objects["Lamp"]]
这向您展示了如何在 3D 视图窗口中引用三个默认对象。
让我们获取对 Cube 对象的引用,以便更方便地访问它:键入
Cube = bpy.data.objects["Cube"]
现在让我们尝试查询其一个属性的值:键入
Cube.delta_location
您应该会看到响应
Vector((0.0, 0.0, 0.0))
Vector
类型来自 Blender 提供的 mathutils
模块。但与 bpy
不同,它不会自动导入到 Python 控制台中。因此,让我们将其导入以供后续使用:键入
import mathutils
好的,现在让我们尝试更改默认 Cube 的位置:键入
Cube.delta_location += mathutils.Vector((1, 1, 1))
(请注意双括号:mathutils.Vector
接受一个参数,它是一个 X、Y 和 Z 坐标值的元组。)
当您按下 ENTER 时,您是否在观看 3D 视图?您应该会看到立方体跳到另一个位置。要使其再次移动,请按 UPARROW 将上面的命令带回来,以便您可以使用 ENTER 再次执行它。这样做后,立方体将像以前一样再跳一步。就这样——您正在编写脚本!
bpy
模块的内容分为多个子模块,其中包括
bpy.data
— 这里您会找到当前文档的内容。bpy.types
— 有关bpy.data
中对象类型的详细信息。bpy.ops
— 操作符执行 Blender 的实际功能;这些可以附加到热键、菜单项和按钮。当然,它们也可以从脚本中调用。当您编写插件脚本时,它通常会定义新的操作符。每个操作符必须有一个唯一的名称。bpy.context
— 包含设置,例如当前的 3D 模式、哪些对象被选中等等。也可以通过全局变量C
在控制台窗口中访问。bpy.props
— 用于定义属性的函数。这些允许您的脚本将自定义信息附加到场景,例如用户可以通过界面元素调整这些信息来控制脚本的行为。
mathutils
模块定义了几个重要的类,这些类在 Blender API 的其余部分中被大量使用。
Vector
:表示 2D 或 3D 坐标。Matrix
:表示任何类型的线性变换的最通用方式。Euler
:一种直接的方式,将旋转表示为一组欧拉角,欧拉角是绕 X、Y 和 Z 轴的旋转角。易于出现著名的陷阱,例如 万向节锁。Quaternion
:从表面上看,这是一种更抽象的数学方法,用于表示旋转。但实际上,它具有许多很好的特性,例如没有万向节锁,并且在两个任意旋转之间插值更平滑。后者在角色动画中尤为重要。Color
:表示 RGB 颜色,并转换为/从 HSV 空间(没有 alpha 通道)。
- Blender 的脚本编写和扩展 高级
- Blender 2.67.0 r56533 API 参考
- Blender 网站 Python 脚本 目录