Python 控制台

    其探索的可能性,然后可以粘贴到大脚本的好办法。

    通过按 Shift-F4 在任何Blender编辑器类型(3D视图,时间线等),你可以把它改成一个控制台编辑器。

    命令提示符是典型的 Python 3.x,解释器已加载,并准备接受提示符 后的命令。

    先看看控制台环境

    若要检查什么加载到翻译环境,请在提示符下键入dir() 并执行。

    ../_images/editors_python-console_dir.png

    自动完成工作

    现在,键入 bpy. ,然后按 Ctrl-Spacebar ,你会看到控制台自动完成功能在运行中。

    你会注意到出现在 bpy 子模块的列表。这些模块封装所有我们Blender Python API 能做的工作,是非常强大的工具。

    让我们列出 模块的所有内容。

    注意在启用自动完成的提示符之上的绿色输出。你看到的是自动完成列表的结果。在上面的列表中,所有的都是模块属性名称,但是如果你看到任何以 结尾的名字,那么这是一个函数。

    如果你在 3D 视图查看默认 Blender场景,你将注意到 三个物体: 立方体、 灯和摄像机。

    • 所有对象的都存在上下文,可以有各种模式下对他们进行操作。
    • 在任何情况下,只有一个物体处于活动状态,并且可以有多个选定的物体。
    • 有创建和修改这些对象的运算符/函数。对于上面列出的所有方案 (并非全部列出, 请注意…) "bpy" 模块提供了访问和修改数据的功能。

    bpy.context

    Note

    要使下面的命令显示正确的输出, 请确保在3D 视图中有选定的对象。

    ../_images/editors_python-console_bpy-context.png

    试试看!

    • bpy.context.mode
    • 将打印当前 3D 视图模式 (物体、 编辑、 雕刻等.)。
    • bpy.context.object 或 bpy.context.active_object
    • 将访问3D视图中的活动物体。将X位置值更改为1:

    将前一个X位置的物体移动0.5个单位:

    1. bpy.context.object.location.x += 0.5

    修改X, Y, Z 位置值:

    1. bpy.context.object.location = (1, 2, 3)

    只更改X,Y组件:

    1. bpy.context.object.location.xy = (1, 2)

    物体的数据类型位置:

    1. type(bpy.context.object.location)

    现在,你可以有权访问许多数据:

    • bpy.context.selected_objects
    • 访问到所有选定物体的列表。然后按 Ctrl-Spacebar:
    1. bpy.context.selected_objects

    打印列表中第一个物体的名称:

    1. bpy.context.selected_objects[0]

    复杂的一个……但是这会打印一个不包含活动物体的物体列表:

    1. [obj for obj in bpy.context.selected_objects if obj != bpy.context.object]

    bpy.data

    你可以访问当前.blend文件中的以下数据: 物体、 网格、 材质、 纹理、 场景、 屏幕、 声音、 脚本,等等。

    这是大量的数据。

    试试看!

    练习

    按 Return 两次后它将打印所有属于名称为“Scene”的Blender场景的物体:

    1. for obj in bpy.data.scenes['Scene'].objects: print(obj.name)

    将活动物体与名为“Scene”的Blender场景取消关联:

    1. bpy.data.materials['Material'].shadows
    2.  
    3. bpy.data.materials['Material'].shadows = False

    这个工具系统是围绕操作者的概念构建的。运算符通常从按钮或菜单执行, 但也可以直接从 Python 调用。

    见 所有的操作符 API documentation 列表。

    让我们在3D视图中创建一组五个立方体。首先,选中它并按下 X 删除现有的立方体物体。

    试试看!

    下面的命令用于指定在1层中创建物体。首先, 我们定义一个数组变量以供以后参考:

    1. mylayers[0] = True

    我们创建一个用于创建立方体网格基础物体的操作符的引用:

    1. add_cube = bpy.ops.mesh.primitive_cube_add

    现在在一个 for循环 中,我们创建五个物体(在上面的屏幕截图中使用了另一种方法创建,)像这样: 在shell提示下输入命令后按两次 Return

    1. for index in range(5):
    2. add_cube(location=(index * 3, 0, 0), layers=mylayers)

    别名管理

    一些变量和模块可以方便使用:

    • C: 快速访问 'Bpy.context ' 。
    • D: 快速访问 bpy.data
    • : 顶级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 — 复制选择。