为何Blender场景获取的相机是Object类型?如何获取Camera属性?
Blender 场景相机对象与相机数据的区别及访问方法
为什么从场景获取的相机是Object类型
Blender的场景体系中,Object是承载各类数据的场景实体,它负责管理对象的空间变换(位置、旋转、缩放)等通用属性。而相机的镜头焦距、传感器尺寸这类专业拍摄属性,是存储在独立的Camera数据块中的。场景的.camera属性指向的是当前场景激活的「相机对象」——也就是挂载了Camera数据块的Object,所以返回的是Object类型,而非直接的Camera数据。
如何从场景访问相机的专业属性
要获取相机的专属属性,只需通过Object的.data属性,访问其关联的Camera数据块即可:
# 获取场景激活的相机对象 camera_obj = bpy.data.scenes["Scene"].camera # 获取对应的Camera数据块 camera_data = camera_obj.data # 访问相机属性示例 print("相机焦距:", camera_data.lens) print("传感器宽度:", camera_data.sensor_width) print("是否启用景深:", camera_data.dof.use_dof)
另外需要纠正一个误解:bpy.data.objects["Camera"]返回的同样是Object类型,并非直接的Camera数据——它是名为"Camera"的场景对象,其.data属性才是Camera类型的数据块,验证代码如下:
obj = bpy.data.objects["Camera"] print(type(obj)) # 输出 <class 'bpy.types.Object'> print(type(obj.data)) # 输出 <class 'bpy.types.Camera'>
内容的提问来源于stack exchange,提问作者papillon
相关产品推荐
相关产品推荐

