1

我是 3d 图形的新手。我一直在搅拌机中创建场景并渲染它们。知道物体和相机的世界位置,以及镜头的焦距,我想计算渲染的 540x480 图像中物体的 x1 和 x2(或 x 和 y)位置。我想将搅拌机的相机建模为针孔相机

我还想为场景中的许多图像和各种对象创建一个 python 脚本来为我执行此操作

谢谢!

我一直在谷歌搜索相机矩阵、3D 投影和相机模型。然而,虽然这些方程本身是有意义的,但我很难真正掌握它们的工作方式并将它们应用于我的问题。

我现在正在处理的一个非常简单的场景是一个相机指向一个立方体。我知道相机和立方体(它的中心)相对于相同世界坐标的位置,并且我知道相机的焦距。知道这些信息后,我如何解决相机渲染的照片中立方体的位置?

渲染图像

Camera : Vector((7.358891487121582, -6.925790786743164, 4.958309173583984)) Quaternion((0.7804827094078064, 0.483536034822464, 0.20870360732078552, 0.33687159419059753))

立方体:向量((0.0, 0.0, 0.0)) 四元数((1.0, 0.0, 0.0, 0.0))

我知道我需要将相机设为原点,因为我只需要做 x-x10、x-x20 和 x-x30(其中 x10、x20 和 x30 是相机的位置)

到目前为止,我已经看到 Y = C x 其中 Y= [y1; y2;1 ], x= [x1-x10; x2-x20;x3-x30;1] 和 C =[f 0 0 0;0 f 0 0; 0 0 1 0]

我知道 Y 是假设对象在 2d 图片中的位置,x 是对象在 3d 空间中的位置,C 是相机矩阵。

插入我所有的数字,我得到 Y= [-.3679;0.3463;4.9583]。我认为这是不对的,如果是这样,我不知道这些数字如何与我的 540x480 图像相对应

要获取对象的坐标,我正在使用

bpy.data.objects["Camera"].location
bpy.data.objects["Camera"].matrix_world.to_quaternion()
bpy.data.objects["Cube"].location
bpy.data.objects["Cube"].matrix_world.to_quaternion()

我期望 2 个数字的输出与 2d 图片中对象的位置相对应并匹配。

4

0 回答 0