Blender 界面设计直观,同时还提供复杂的功能。某些操作在逻辑上适用于单个对象,而其他操作可以在逻辑上同时用于一个或多个对象。
为了处理这些场景,Blender开发人员创建了三种访问对象及其数据的方法。
这三种方法分别是:选择,激活和规范
本文选介绍选择
可以同时选择一个、多个或零个对象。使用选定对象的操作可以同时对单个对象或多个对象执行该操作。
选择对象
在继续之前,建议读者在3D视口中创建一些不同的对象作为示例。
当我们在3D视口中单击鼠标左键选择物体时,对象会高亮显示和取消高亮显示。
当我们按住Shift键并四处单击时,我们可以一次高亮显示多个对象。3D视口中的这些高亮显示表示选定的对象。
要列出选定的对象,请在交互控制台中键入以下代码:
#获取选定对象的列表
# 枚举 bpy.data.objects 数据块
bpy.context.selected_objects
正如我们前面提到的,bpy.context 子模块非常适合根据在 Blender 中所处的状态来获取对象列表。“请注意:这种两种状态分为物体模式和编辑模式”
在这种情况下,我们获取了所有选定的对象。
系统会返回下边列表
bpy.data.objects['Sphere'], bpy.data.objects['Circle'],bpy.data.objects['Cube']
在本例中,在3D视口中选择了名为Sphere的球体、名为Circle的圆和名为Cube的立方体。我们收到了一个包含bpy.data.Objects数据块的Python列表。
如果知道此类型的所有数据块都有一个Name值,我们可以遍历代码的结果以访问所选对象的名称。
以下代码获取所选对象的名称和位置:
[k.name for k in bpy.context.selected_objects]
Return the locations of selected objects
# (location of origin assuming no pending transformations)
[k.location for k in bpy.context.selected_objects]
现在,我们已经知道如何手动选择对象,我们需要根据某些条件自动选择对象。
以下代码是创建一个函数,该函数将对象名称作为参数并选择它,默认情况下清除所有其他选择。如果用户指定additive = True,,则该函数不会预先清除其他选择。
#编程方式选择对象
import bpy
def mySelector(objName, additive=False):
# By default, clear other selections
if not additive:
bpy.ops.object.select_all(action='DESELECT')
# Set the 'select' property of the datablock to True
bpy.data.objects[objName].select = True
Select only 'Cube'
mySelector('Cube')
# Select 'Sphere', keeping other selections
mySelector('Sphere', additive=True)
#Translate selected objects 1 unit along the xaxis
bpy.ops.transform.translate(value=(1, 0, 0))
注意 若要在不编写Python脚本的情况下轻松查看对象的名称,请导航到“属性”窗口并选择橙色立方体图标。现在,活动对象将在该子窗口顶部附近显示其名称,如图2-1所示。
此外,3D视口的左下角将显示活动对象的名称。我们将在本章的下一小节中讨论激活。
激活:在任何给定时间,只有一个对象可以处于活动状态。对活动对象执行操作的操作通常更具体、更强烈,因此无法同时直观地对许多操作执行。
规范:(仅限 Python)Python 脚本可以通过对象的名称访问对象,并直接写入其数据块。
虽然操作选定对象的操作通常是一种差异操作,如平移、旋转或缩放,但将数据写入特定对象通常是一种声明性操作,如位置、方向或大小。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.