固定设备坐标系,而与设备方向无关?

时间:2018-10-15 15:52:08

标签: android augmented-reality arcore coordinate-systems sceneform

我正在成功地将(纬度,经度)坐标转换为(东,北)坐标,并试图找到一种方法来准确地将(东,北)坐标放置在AR世界中。

我当前问题的示例:

设备坐标系:

Device coordinate system with positive and negative x, y and z axes, with origin facing camera located on the positive side of the z axis.

从(纬度,经度)坐标转换后,得到的(东,北)坐标为

in

现在,如果我朝北,则EN坐标将放置在我后面,因为朝前的轴为(+x, 0, +z) where x=East, z=North 。如果我朝南,则EN坐标将再次置于我身后,因为它取决于设备的方向。

我的问题:

在ARCore中,无论设备处于什么方向,都可以固定设备的坐标系?还是有一种算法考虑了设备的方向并允许锚的静态放置?

编辑:

我在ARCore-Sceneform GitHub上发布了相同的问题,这些是我收到的答案:

GitHub Question Thread

1 个答案:

答案 0 :(得分:0)

首先,让我们看看Google ARCore engineers say about World coordinates

  

世界坐标空间

     

随着ARCore对环境的理解发生变化,它会调整其世界模型以保持事物的一致性。发生这种情况时, 摄像机和锚点的数字位置(坐标)可能会发生很大变化,以维持它们代表的物理位置的适当相对位置

     

这些更改意味着应该将每个帧都视为在一个完全唯一的世界坐标空间中。不得在检索锚和摄影机的渲染框架之外使用锚和摄影机的数字坐标。如果需要考虑某个位置超出单个渲染框架的范围,则应创建锚点,或者应使用相对于附近现有锚点的位置。

enter image description here

但是!

我坚信带有摄像头和传感器的智能手机从坐标空间的相对中心(在ArSession中是相对的,对于ARCore来说是绝对的)开始(在ArSession中):

// X, Y, Z coordinates must be counted from zero, mustn't they?

(x: 0.0, y: 0.0, z: 0.0)

然后,在某些情况下,世界坐标空间可能会更改。