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)
相关推荐
成都渲染101云渲染666610 小时前
CR15新功能介绍以及CR15云渲染流程
ue5·图形渲染·blender·maya·corona
CG_MAGIC3 天前
3ds Max粒子系统:雪与雨特效制作
3d·blender·材质·效果图·渲云渲染
GTA村长团队MOD3 天前
村长团队GTA5模组开发Blender 4.2 + Sollumz 多张贴图烘焙成单张贴图教程
人工智能·blender·贴图
sztomarch7 天前
Blender-Curve
blender
三只坚果8 天前
Blender 纹理绘制模式左侧看不到 UV 展开图怎么办
blender
小宋加油啊8 天前
blender+Molecular的使用
blender
hdsoft_huge8 天前
Blender数字校园三维建模全流程详细教程
blender
CG_MAGIC8 天前
三渲二材质:Blender/SU生成动漫风格效果图
3d·blender·材质·贴图·效果图·渲云渲染
CG_MAGIC18 天前
风格化手绘风 3D 渲染出图参数调校技巧
3d·blender·贴图·效果图·渲云渲染
AI视觉网奇20 天前
blender底部对齐
开发语言·python·blender