android - 增强现实 - 将 GPS 映射到 OpenGL

标签 android opengl-es augmented-reality

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

我非常接近完成这项工作,非常感谢任何帮助。

最佳答案

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

所以 LAT 12.34567890 LON 100.23456789 在方框 (12,100) 中,坐标为 (0.34567890, 0.23456789)。您需要将 (0.34567890, 0.23456789) 传递给 OpenGL。

从 +/-180.0 度范围内的 float 获​​得大约 1 米的精度充其量只是粗略的,一旦您开始执行所有 OpenGL 的矩阵运算,事情就会开始变得非常糟糕。

关于android - 增强现实 - 将 GPS 映射到 OpenGL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2188346/

相关文章:

android - 如何自定义 EditText setError() 弹出 View

应用程序恢复后的 Android Runnable 停止处理程序

iphone - glDrawElements 无法在 iPhone 上运行,但 glDrawArrays 可以运行

ios - 获取 iOS 应用程序使用的实际 OpenGL 纹理内存量

android - 如何调试 ARCore - AugmentedImage

ios - SceneKit 在多个透明平面上延迟阴影

android - void android.support.v7.widget.SearchView.setOnQueryTextListener(android.support.v7.widget.SearchView$OnQueryTextListener)

java - OnClickListener 无法解析为类型 (Eclipse)

c++ - iPhone - OpenGL 使用 C++ 教程/片段

swift - 室内导航系统利用计算机视觉进行大面积测绘的解决方案是什么?