Python 控制台
Python的控制台是一个快速来执行命令的方法,以访问整个Python的API,命令历史记录和自动完成功能。
其探索的可能性,然后可以粘贴到大脚本的好办法。
简介
访问内置的Python控制台
通过按 Shift-F4 在任何Blender编辑器类型(3D视图,时间线等),你可以把它改成一个控制台编辑器。
命令提示符是典型的 Python 3.x,解释器已加载,并准备接受提示符 >>>
后的命令。
先看看控制台环境
若要检查什么加载到翻译环境,请在提示符下键入dir()
并执行。
自动完成工作
现在,键入 bpy.
,然后按 Ctrl-Spacebar ,你会看到控制台自动完成功能在运行中。
你会注意到出现在 bpy
子模块的列表。这些模块封装所有我们Blender Python API 能做的工作,是非常强大的工具。
让我们列出 bpy.app
模块的所有内容。
注意在启用自动完成的提示符之上的绿色输出。你看到的是自动完成列表的结果。在上面的列表中,所有的都是模块属性名称,但是如果你看到任何以(
结尾的名字,那么这是一个函数。
我们将利用这一点来帮助我们更快地学习API。现在你已经掌握了这一点,让我们继续研究 bpy
中的一些模块。
摆弄模块前
如果你在 3D 视图查看默认 Blender场景,你将注意到 三个物体: 立方体、 灯和摄像机。
- 所有对象的都存在上下文,可以有各种模式下对他们进行操作。
- 在任何情况下,只有一个物体处于活动状态,并且可以有多个选定的物体。
- 所有物体都是blend文件中的数据。
- 有创建和修改这些对象的运算符/函数。对于上面列出的所有方案 (并非全部列出, 请注意…) "bpy" 模块提供了访问和修改数据的功能。
示例
bpy.context
Note
要使下面的命令显示正确的输出, 请确保在3D 视图中有选定的对象。
试试看!
- bpy.context.mode
- 将打印当前 3D 视图模式 (物体、 编辑、 雕刻等.)。
- bpy.context.object 或 bpy.context.active_object
- 将访问3D视图中的活动物体。将X位置值更改为1:
- bpy.context.object.location.x = 1
将前一个X位置的物体移动0.5个单位:
- bpy.context.object.location.x += 0.5
修改X, Y, Z 位置值:
- bpy.context.object.location = (1, 2, 3)
只更改X,Y组件:
- bpy.context.object.location.xy = (1, 2)
物体的数据类型位置:
- type(bpy.context.object.location)
现在,你可以有权访问许多数据:
- dir(bpy.context.object.location)
bpy.context.selected_objects
- 访问到所有选定物体的列表。然后按 Ctrl-Spacebar:
- bpy.context.selected_objects
打印列表中第一个物体的名称:
- bpy.context.selected_objects[0]
复杂的一个……但是这会打印一个不包含活动物体的物体列表:
- [obj for obj in bpy.context.selected_objects if obj != bpy.context.object]
bpy.data
bpy.data
具有可以访问.blend文件中所有数据的函数和属性。
你可以访问当前.blend文件中的以下数据: 物体、 网格、 材质、 纹理、 场景、 屏幕、 声音、 脚本,等等。
这是大量的数据。
试试看!
练习
按 Return 两次后它将打印所有属于名称为“Scene”的Blender场景的物体:
- for obj in bpy.data.scenes['Scene'].objects: print(obj.name)
将活动物体与名为“Scene”的Blender场景取消关联:
- bpy.data.scenes['Scene'].objects.unlink(bpy.context.active_object)
- bpy.data.materials['Material'].shadows
- bpy.data.materials['Material'].shadows = False
bpy.ops
这个工具系统是围绕操作者的概念构建的。运算符通常从按钮或菜单执行, 但也可以直接从 Python 调用。
见 bpy.ops 所有的操作符 API documentation 列表。
让我们在3D视图中创建一组五个立方体。首先,选中它并按下 X 删除现有的立方体物体。
试试看!
下面的命令用于指定在1层中创建物体。首先, 我们定义一个数组变量以供以后参考:
- mylayers = [False] * 20
- mylayers[0] = True
我们创建一个用于创建立方体网格基础物体的操作符的引用:
- add_cube = bpy.ops.mesh.primitive_cube_add
现在在一个 for循环 中,我们创建五个物体(在上面的屏幕截图中使用了另一种方法创建,)像这样: 在shell提示下输入命令后按两次 Return
- for index in range(5):
- add_cube(location=(index * 3, 0, 0), layers=mylayers)
使用方法
别名管理
一些变量和模块可以方便使用:
C
: 快速访问 'Bpy.context ' 。D
: 快速访问bpy.data
。bpy
: 顶级Blender Python API模块。
键绑定
- Up / Down — Cycle 命令历史。
- Left / Right — 光标运动。
- Ctrl-Left / Ctrl-Right — 光标运动,用文字。
- Backspace / Delete — 擦除字符。
- Tab —缩进。
- Shift-Tab — 取消缩进。
- Ctrl-Backspace / Ctrl-Delete — 擦除文字。
- Ctrl-Spacebar —自动完成。
- Return — 执行命令。
- Shift-Return — 添加到命令历史记录而不执行。
- Ctrl-C — 复制选择。
- Ctrl-V — 粘贴到命令行。