3faeeeaa67c11ef92e21a8c89dd20d3f
AR 导航的几种实现思路

说明

当 AR 技术刚出现的时候,很多人都认为导航是重要应用方向。但是,ARKit 已经发展到 ARKit 3 了,完善的AR导航方案也没有出现。 因此,我们只能用一些技巧来实现一些简单的 AR 导航。

固定点位导航

固定点位导航,就是在 AR 中放置几个固定的点,比如点 A,B。这种导航只能从 A 点到 B 点,或者从任意位置沿直线先到 A 点,然后再到 B 点。

当然了,点位的确定一般需要借助图片锚点/物体识别锚点,或者用世界地图重定位先确定世界坐标原点,再确定点 A,B 的位置。

缺点

这样的缺点可想而知,非常不灵活。点位需要提前确定,起点位置也受限。比如我起点已经在 AB 之间了,仍然会引导我先走到 A 点,再走到 B 点。除非添加大量判断代码,或者使用图相关的算法。

优点

写得快,无需联网,无需额外信息,简单可靠。

寻路算法导航

在 iOS 中使用无向图等算法,其实不必自己从头写。GameplayKit框架中就自带了几种寻路算法,包含有向图/无向图/A* 等算法。
苹果官方文档 Pathfinding
比如,用 GKGridGraphGKGridGraphNode,其实就可以实现网格寻路,效果类似于A* 算法

GKGraphGKGraphNode 就可以实现有向图/无向图的寻路,效果类似于迪杰斯特拉(Dijkstra)算法

还有更好用的 GKObstacleGraphGKGraphNode2D,可以实现在有障碍物的连续空间导航,可绕过障碍物,找到最短路径。

top Created with Sketch.