安卓系统:如何根据GPS和陀螺仪在屏幕上绘制物体



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

如果你想了解一般问题,可以把它看作两个步骤:

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

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

由于您只想绘制标签,因此可以简化很多操作(例如,您可以使用3D投影来计算每个标签的屏幕位置,然后使用普通2D渲染来渲染标签,而不是渲染3D图形)。

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

最新更新