获取具有已知位置和方向的相机正在查看的对象的3D位置

时间:2012-09-17 19:40:00

标签: camera position orientation augmented-reality artoolkit

我正在构建一个增强现实应用程序,我有相机的偏航,俯仰和滚动。我想开始在3D环境中放置对象。我希望这样做,以便当用户点击时,在相机指向的位置(2D屏幕的中心)处弹出3D点,并且当用户移动时,该点在3D空间中相应地移动。相机不会改变位置,只改变方向。有没有一种正确的方法来恢复这一点的3D位置?我们可以假设所有点都与摄像机位置等距。

我能够独立完成两个轴(OpenGL默认方向)。这适用于垂直轴的变化:

x = -sin(pitch)
y = cos(pitch)
z = 0

这也适用于横轴的变化:

x = 0
y = -sin(yaw)
z = cos(yaw)

我在想我应该合并到:

x = -sin(pitch)
y = sin(yaw) * cos(pitch) 
z = cos(yaw)

这似乎很接近,但并不完全正确。任何建议将不胜感激!

1 个答案:

答案 0 :(得分:1)

听起来你只想将旋转矢量(俯仰,偏航,滚动)转换为旋转矩阵。转换可以在Wikipedia article on rotation matrices上看到。这个想法是,一旦你构建了矩阵,就可以简单地转换任何一点。

final_pos = rot_mat*initial_pose

其中最终和初始姿势是3x1向量,rot_mat是3x3矩阵。