AR导航(二)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AR导航(二)相关的知识,希望对你有一定的参考价值。

参考技术A 一、 AR场景设置
为了把真实世界位置坐标映射到虚拟世界,需要设置ARSessionConfiguration 的 worldAlignment 属性为gravityAndHeading;为了把导引箭头放到地面,需要设置开启平面检测。

二、根据经纬度在AR场景中标注地点
根据自身的经纬度,自身在AR场景中的位置,地点的经纬度坐标经计算可获得地点在AR场景中的位置(平面位置,不包含高度信息)。

一开始我使用的是另外一种方式是,记录AR原点处的经纬度坐标,使用地点的经纬度即可计算其在AR场景中的位置。这种方式有一个问题,在保持一个方向前行过程中,AR场景的原点并不能如理论中那样保持在现实中的某一点不动,经常是现实场景中前进100米,AR坐标只前进了50米,也就是AR原点实际同方向移动了50米。所以这种方式有很大的漏洞,即便是使用现在的方式,地点位置标示也应该经常刷新。

三、确定地面
地点的标示以及路面的引导箭头在AR场景中位置的y坐标值,都需要依据地面位置来确定。尤其是引导箭头,需要贴合地面才能有很好的展示效果。原理也很简单,开启平面检测,根据检测到的平面实时刷新地面的y坐标值。

四、路线查询
路线查询可以使用MapKit的路线查询功能,需要注意的是MapKit使用的是火星坐标,CoreLocation获取到的是地球坐标,坐标之间需要进行转换。

五、路线绘制
首先,不要绘制整条路线,远处的路线只会引起干扰起不到导航作用,而且路线越长越容易与建筑物存在遮挡关系,如果做不到建筑物挡住虚拟路线,会非常影响用户体验。我们只需要绘制眼前几米范围内的导引箭头即可,没走0.5米,添加一个新的箭头,同时把身后的箭头擦除一个。
其次,每次添加新箭头前都要重新计算最后一个箭头的经纬度,重新请求路线,最大程度减少GPS和ARKit的误差。绘制的箭头一定要确保贴合地面。

六、车辆、建筑、行人对导引路线的遮挡(未实现)

七、实时监测路面来修正导引路线,确保导引箭头绘制到人行路上,避开绿植及建筑。(未实现)

以上是关于AR导航(二)的主要内容,如果未能解决你的问题,请参考以下文章

ARFoundation系列讲解 - 77 AR室内导航二

ARFoundation系列讲解 - 77 AR室内导航二

AR室内导航-Three.js

ARFoundation系列讲解 - 79 AR室内导航四

ARFoundation系列讲解 - 79 AR室内导航四

ARFoundation系列讲解 - 79 AR室内导航四