3

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

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

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

这也适用于水平轴的变化:

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

我在想我应该把 combine 变成:

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

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

4

1 回答 1

1

听起来您只想将旋转矢量(俯仰、偏航、滚动)转换为旋转矩阵。可以在关于旋转矩阵的 Wikipedia 文章中看到转换。这个想法是,一旦您构建了矩阵,就可以简单地转换任何点。

final_pos = rot_mat*initial_pose

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

于 2012-09-18T20:35:06.643 回答