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

标签 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)

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

最佳答案

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

final_pos = rot_mat*initial_pose

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

关于camera - 获取由具有已知位置和方向的相机查看的对象的 3D 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12466031/

相关文章:

html - css位置下拉菜单问题

jqueryposition().left 无法正常工作

android - EditText 焦点跨布局不一致

Android (onPreviewFrame) : Saving NV21 data as JPEG File

javascript - 在 Windows 8 Javascript 中关闭相机的正确方法是什么?

iphone - 在 iPhone 中改变方向时重新排列 UIButtons?

以错误的方向保存的 Android 自定义相机图像

android - 在 Android PhoneGap 中更改方向时 SplashScreen 未更改

ios6 - 使用 AVFoundation iOS 6 切换相机

javascript - 如何使用osgjs将相机放置在特定位置?