我有一些表面是 3D 且非矩形的物体,例如球体、金字塔以及其他由网格表示的各种物体。这些网格并非由大小和分布在物体表面上都相等的多边形组成,也不是像圆柱体、球体和锥体这样的理想形状的半对称/对称物体。
因此,我该如何设计或改进一个寻路算法,使其能够接受任意网格并生成可以以任意数量的方式自行环绕的节点呢?
回答:
一种(可能是最简单的)方法是使用基于网格的搜索技术 — 有一些非常简单的方法可以生成多分辨率网格分解,将单元格标记为“自由”或“碰撞”,并使用像 A* 这样的算法搜索生成的网格(正如@某用户提到的)。
一般来说,你可能需要使用更强大的运动规划技术,例如概率路线图 (PRM) 或快速探索随机树 (RRT)。这些领域有很多学术研究。
作为入门,你可能想查阅像这篇 (PDF) 综述论文。