我正在构建一个增强现实应用程序,并且我有相机的偏航、俯仰和滚动。我想开始在 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)
这似乎很接近,但并不完全正确。任何建议将不胜感激!