c++ - 将 GL 模型 View 矩阵转换为世界坐标

标签 c++ opengl-es matrix qcar-sdk

我正在使用 Qualcomm 的 AR SDK 来跟踪一个对象。 我有以下可用功能:

https://ar.qualcomm.at/qdevnet/api (具体看“Namespace List->QCAR::Tool”)。

我可以使用 convertPose2GLMatrix (const Matrix34F &pose) 函数获取跟踪项的模型 View 矩阵,因为我获得了每个跟踪项的姿势矩阵。

我的目标 - 确定标记在“现实世界”中的位置。你可以假设我的相机是静止的。

网上看了很多文章,大致的理解是这样的: 我需要从我选择轴的 0,0,0 点的地方选择一个模型 View 矩阵(即 - 复制我为该点获得的矩阵)。 然后我需要转置该矩阵。然后,我提取的每个模型 View 矩阵应乘以该矩阵,然后乘以 (x,y,z,1) vector ,以获得坐标(忽略第 4 项)。

我说的对吗?这是要走的路吗?如果不是,那是什么?

最佳答案

我喜欢将正交矩阵视为从一个坐标空间移动到另一个坐标空间,因此您的建议是正确的,但我会反过来做:

1.) 使用相对于您的相机的引用坐标系 S(即仅由姿势估计确定的矩阵之一) 2.) 对于每个姿势估计 T 计算以下内容:

W = S * T^-1 = S * 转置(T)

3.) 从矩阵 W 中选择第 4 列作为您的世界位置。

关于c++ - 将 GL 模型 View 矩阵转换为世界坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10215743/

相关文章:

c++ - 记录编译源码的时间

android - 使用 OpenGL 在 Android 中使用 Canvas 的文本和字体

javascript - WebGL 基准 - 我应该创建什么样的测试?

arrays - 与python结果不同的矩阵点积

r - R中的NA替换函数

C 从输入文件中读取大矩阵

c++ - 泛型类的 Typedef(别名)

c++ - 内存移动与向后复制

c++ - "built-in"C++ 函数

android - 帮助纠正 Android OpenGL 2.0 w/QCAR 中的线缩放