Android: 如何根据GPS和陀螺仪在屏幕上绘制物体

Android: How to draw objects onto the screen based on GPS and Gyroscope

我一直在为我的大学开发一个增强现实应用程序,当通过相机预览查看时,它会在每个建筑物上放置一个 POI 按钮。我应该从头开始编程,而不使用像 Layar 或 Wikitude 这样的东西。 我拥有来自各种我认为必要的传感器的所有信息,例如加速度计、陀螺仪、GPS 和指南针,但是,我一直无法弄清楚如何将对象绘制到屏幕上的特定位置并拥有他们正确地移动。我想知道这里是否有人对此有任何经验,我假设涉及一些线性代数,但我不能完全理解是什么。

如果您想了解一般问题,请将其视为两个步骤:

  1. 结合所有这些传感器值来告诉你相机在哪里 (GPS),它在看什么地方(从加速度计和指南针派生的方向:Android 应该已经有一些东西可以将它们组合成一个 3D 方向值),以及你能看到多少世界(相机的视野——你需要弄清楚!)
  2. 设置相应的 3D 图形渲染系统,然后使用这些值将您 "virtual 3D camera" 在世界中定位在与您的 phone 相同的位置和方向。

一旦你有了它,你只需在它们在世界中的位置渲染 3D 图形(你标记),它们应该正确显示。

因为你只是想画标签,你可以简化很多(例如,而不是渲染 3D 图形,你可以只使用 3D 投影找出每个标签的屏幕位置,然后渲染标签使用正常 2D 渲染)。

我建议为您的 POI 和相机使用欧几里得坐标系(例如,将 LLA 转换为 UTM,以米为单位)。它使很多事情变得更容易。