说明
当 AR 技术刚出现的时候,很多人都认为导航是重要应用方向。但是,ARKit 已经发展到 ARKit 3 了,完善的AR导航方案也没有出现。 因此,我们只能用一些技巧来实现一些简单的 AR 导航。
固定点位导航
固定点位导航,就是在 AR 中放置几个固定的点,比如点 A,B。这种导航只能从 A 点到 B 点,或者从任意位置沿直线先到 A 点,然后再到 B 点。
当然了,点位的确定一般需要借助图片锚点/物体识别锚点,或者用世界地图重定位先确定世界坐标原点,再确定点 A,B 的位置。
缺点
这样的缺点可想而知,非常不灵活。点位需要提前确定,起点位置也受限。比如我起点已经在 AB 之间了,仍然会引导我先走到 A 点,再走到 B 点。除非添加大量判断代码,或者使用图相关的算法。
优点
写得快,无需联网,无需额外信息,简单可靠。
寻路算法导航
在 iOS 中使用无向图等算法,其实不必自己从头写。GameplayKit框架中就自带了几种寻路算法,包含有向图/无向图/A* 等算法。
比如,用 GKGridGraph 和 GKGridGraphNode,其实就可以实现网格寻路,效果类似于A* 算法。
用
GKGraph 和
GKGraphNode 就可以实现有向图/无向图的寻路,效果类似于
迪杰斯特拉(Dijkstra)算法。
还有更好用的 GKObstacleGraph 和 GKGraphNode2D,可以实现在有障碍物的连续空间导航,可绕过障碍物,找到最短路径。
缺点
缺点也有,就是需要提前准备好区域地图,哪些区域是连通的,哪些地方是不可进入的障碍物区域。
优点
自由指定起点终点,自动避障,无需联网。
结合地图导航
而现有的地图 SDK 中的导航算法已经非常完善,不仅能任意指定起点终点,还会自动避开障碍物,找到最短/最快路径。我们可以将 AR 与地图类 SDK 结合,实现导航方案。
比如,仿写百度地图的3自由度 AR 导航,利用百度地图 SDK 与 ARKit,实现了简单的 AR 导航功能。 如何仿写一个简易版的3自由度 AR 导航
又比如,这个开源项目,利用 ARKit 和 CoreLocation 框架,实现了 6 自由度的 AR 导航。值得借鉴。 ARKit-CoreLocation
缺点
需要 GPS 和定位权限,在室内使用受限。需联网以使用地图 SDK 的部分功能。GPS 近距离误差大。
优点
地图信息内置,寻路算法先进,支持多种策略,另有偏航和重新算路,语音播报等功能。
今天的文章AR 导航的几种实现思路分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/22826.html