增强现实 - 将GPS映射到OpenGL

Sno*_*ire 7 android opengl-es augmented-reality

我正在编写Android AR应用程序并让我的引擎正常工作,但它包含一个我似乎无法解决的奇怪行为.我在相机图像上覆盖了一个OpenGL表面,并相应地在视图中放置了3D对象.如果我使用虚拟数据作为我的AR对象的位置,即在OpenGL表面上LAT 10 LON 10变为x = 10 y = 10,那么叠加效果非常好.但是,如果我使用直接GPS坐标作为我的LAT和LON(例如LAT 12.34567890 LON 100.23456789),那么我的所有物体要么在其位置周围移动,要么根本不出现.我知道使用浮点和OpenGL框架存在一些问题,但我一直在阅读,但仍然无法阻止此行为.有没有其他人有这个问题?我应该在我的GPS和openGL表面之间使用比例因子,如果是,那么什么值是好的?我尝试将我的LAT和LON缩放1000000以消除浮点,但它没有帮助,性能非常糟糕.

我很接近这个工作,任何帮助将非常感激.

gen*_*ult 1

找出您的原始坐标位于哪个 1x1 或 0.5x0.5 度“盒子”中,然后减去该盒子,这样您的坐标现在是相对于“盒子”而不是整个世界的。

因此 LAT 12.34567890 LON 100.23456789 位于框 (12,100) 中,坐标为 (0.34567890, 0.23456789)。您需要将 (0.34567890, 0.23456789) 传递给 OpenGL。

从 +/-180.0 度范围的浮点中获得约 1m 的精度充其量也有点粗略,一旦你开始执行所有 OpenGL 的矩阵运算,事情就会开始变得非常糟糕。