blender python api解析

原文档路径:https://docs.blender.org/manual/zh-hans/dev/editors/python_console.html?highlight=bpy

Python 控制台
Python的控制台是一个快速来执行命令的方法,以访问整个Python的API,命令历史记录和自动完成功能。

可以通过控制台来探索可能性,然后将命令粘贴到脚本。

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

…/_images/editors_python-console_default.png
命令提示符是典型的 Python 3.x,解释器已加载,并准备接受提示符 >>> 后的命令。

先看看控制台环境
若要检查什么加载到了解释器环境,请在提示符下键入 dir() 并执行。

…/_images/editors_python-console_dir.png
自动完成工作
现在,键入 bpy. ,然后按 Ctrl-Spacebar ,你会看到控制台自动完成功能在运行中。

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

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

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

我们将利用这一点来帮助我们更快地学习API。现在你已经掌握了这一点,让我们继续研究 bpy 中的一些模块。

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

所有对象的都存在上下文,可以有各种模式下对他们进行操作。
在任何情况下,只有一个物体处于活动状态,并且可以有多个选定的物体。
所有物体都是blend文件中的数据。
有创建和修改这些对象的运算符/函数。
对于上面列出的所有方案 (并非全部列出, 请注意…) “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:

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文件中的以下数据: 物体、 网格、 材质、 纹理、 场景、 屏幕、 声音、 脚本,等等。

这是大量的数据。

试试看!
…/_images/editors_python-console_bpy-data.png
练习
按 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)
…/_images/editors_python-console_bpy-ops.png
使用方法
别名管理
一些变量和模块可以方便使用:

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 – 粘贴到命令行。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值