blender导出相机参数

前言:在 Blender 的图形化界面中,没有直接的选项可以导出渲染图片的外参矩阵。你可以通过 Python API 来获取并导出相机的外参矩阵。

blender导出相机参数

1.单张照片

python 复制代码
import numpy as np   
import bpy
# 获取当前活动相机
cam = bpy.context.scene.camera
# 获取相机的外参矩阵
matrix_world = cam.matrix_world
# 将矩阵转换为 numpy 数组
matrix_np = np.array(matrix_world)
# 保存到文件
np.savetxt('E:\\matrix.txt', matrix_np)

2.多张照片(视频)

python 复制代码
import bpy
import numpy as np

# 获取当前场景
scene = bpy.context.scene

# 获取当前活动相机
cam = bpy.context.scene.camera

# 创建一个空的列表来保存所有的矩阵
matrices = []

# 对于场景中的每一帧
for frame in range(scene.frame_start, scene.frame_end + 1):
    # 设置当前帧
    scene.frame_set(frame)
    
    # 获取相机的外参矩阵
    matrix_world = cam.matrix_world
    
    # 将矩阵转换为 numpy 数组并添加到列表中
    matrices.append(np.array(matrix_world))
    
    # 将矩阵转换为 numpy 数组
    matrix_np = np.array(matrix_world)
    
    # 保存到文件,每一帧保存为一个文件
    np.savetxt(f'E:\\briefcase\\matrix_{frame}.txt', matrix_np)

# 将所有的矩阵保存到一个文件中
np.save('E:\\briefcase\\matrices.npy', matrices)
python 复制代码
numpy.load('matrices.npy')

3.坐标系转换

在 Blender 中,相机的外参矩阵是以右手坐标系表示的,而 OpenCV 使用的是左手坐标系。

python 复制代码
import bpy
import numpy as np

# 获取当前场景
scene = bpy.context.scene

# 获取当前活动相机
cam = bpy.context.scene.camera

# 创建一个空的列表来保存所有的矩阵
matrices = []

# 对于场景中的每一帧
for frame in range(scene.frame_start, scene.frame_end + 1):
    # 设置当前帧
    scene.frame_set(frame)
    
    # 获取相机的外参矩阵
    matrix_world = cam.matrix_world
    
    # 将矩阵转换为 numpy 数组
    matrix_np = np.array(matrix_world)
    
    # 创建一个转换矩阵
    transform = np.array([[1, 0, 0, 0],
                          [0, -1, 0, 0],
                          [0, 0, -1, 0],
                          [0, 0, 0, 1]])
    
    # 将 Blender 的外参矩阵转换为 OpenCV 的坐标系
    matrix_opencv = np.dot(transform, matrix_np)
    
    # 保存到文件,每一帧保存为一个文件
    np.savetxt(f'matrix_{frame}.txt', matrix_opencv)
相关推荐
路人甲ing..1 天前
blender常用快捷键和BlenderKit使用
教程·blender·工具·快捷键·光学
自不量力的A同学5 天前
Blender 5.0 正式发布
blender
_Voosk7 天前
Blender线框模式、透视模式
blender
还是大剑师兰特12 天前
Blender学习笔记(5) -- 为什么不能再次显示“添加柱体”的参数?
blender·大剑师
还是大剑师兰特13 天前
Blender学习笔记(0) -- 思维导图框架
blender·大剑师·blender教程
雪下的新火14 天前
Blender:法线图&黑白图
游戏·unity·游戏引擎·blender·笔记分享
Allen-Steven15 天前
Blender快捷方式,自用Mark版
blender
还是大剑师兰特17 天前
Blender学习笔记(03)-- 点光、平行光、聚光、面光
blender·大剑师·blender教程
我希望的一路生花18 天前
Blender科幻机甲娘莉莉魅魔人物角色3D模型带骨骼动作绑定带贴图
3d·blender·贴图
雪下的新火19 天前
Blender-一个简单的水
游戏引擎·blender·特效制作·笔记分享