bpy.context.blend_data 是 Blender 中用于访问当前文件中的数据的上下文管理器。该对象的方法和属性可用于获取、创建、管理和修改当前文件中的各种数据类型,包括场景、对象、材质、贴图、动画等等。
bpy.context.blend_data.scenes:当前文件中所有场景的列表。bpy.context.blend_data.materials:当前文件中所有材质的列表。bpy.context.blend_data.textures:当前文件中所有纹理的列表。bpy.context.blend_data.images:当前文件中所有图像的列表。bpy.context.blend_data.objects:当前文件中所有对象的列表。bpy.context.blend_data.lights:当前文件中所有灯光的列表。bpy.context.blend_data.cameras:当前文件中所有相机的列表。bpy.context.blend_data.worlds:当前文件中所有世界的列表。bpy.context.blend_data.scenes.new(name):创建一个新场景并返回其引用。bpy.context.blend_data.scenes.remove(scene):从当前文件中删除指定场景。bpy.context.blend_data.materials.new(name):创建一个新材质并返回其引用。bpy.context.blend_data.materials.remove(material):从当前文件中删除指定材质。bpy.context.blend_data.textures.new(name, type):创建一个新纹理并返回其引用。bpy.context.blend_data.textures.remove(texture):从当前文件中删除指定纹理。bpy.context.blend_data.images.new(name, width, height):创建一个新图像并返回其引用。bpy.context.blend_data.images.remove(image):从当前文件中删除指定图像。bpy.context.blend_data.objects.new(name, data):创建一个新对象并返回其引用。bpy.context.blend_data.objects.remove(obj):从当前文件中删除指定对象。bpy.context.blend_data.lights.new(name, type):创建一个新灯光并返回其引用。bpy.context.blend_data.lights.remove(light):从当前文件中删除指定灯光。bpy.context.blend_data.cameras.new(name):创建一个新相机并返回其引用。bpy.context.blend_data.cameras.remove(camera):从当前文件中删除指定相机。bpy.context.blend_data.worlds.new(name):创建一个新世界并返回其引用。bpy.context.blend_data.worlds.remove(world):从当前文件中删除指定世界。注意:以上方法中的名称参数都是必需的,表示创建的数据的名称;data 参数表示新对象的数据,包括网格数据、材质数据等等;type 参数表示创建的数据类型,包括纹理类型、灯光类型等等。
以下示例演示了如何使用 bpy.context.blend_data 从当前文件中获取、创建和修改对象数据。
import bpy
# 获取当前文件中的第一个场景
scene = bpy.context.blend_data.scenes[0]
# 创建一个新对象并添加到场景中
mesh = bpy.context.blend_data.meshes.new(name="CubeMesh")
obj = bpy.context.blend_data.objects.new(name="Cube", data=mesh)
scene.objects.link(obj)
# 修改新对象的位置
obj.location.x = 2.0
obj.location.y = 1.0
以上代码中,我们首先使用 bpy.context.blend_data.scenes 属性访问当前文件中的场景列表,并获取第一个场景的引用。接着,我们创建一个新网格数据并使用 bpy.context.blend_data.objects 属性和 bpy.context.blend_data.meshes 方法创建一个对象,然后将其添加到之前获取的场景中。最后,我们修改新对象的位置属性,将其移动到场景中指定的位置。