Math 任意非矩形体上的寻路

Math 任意非矩形体上的寻路,math,geometry,artificial-intelligence,path-finding,Math,Geometry,Artificial Intelligence,Path Finding,我有各种表面为3D和非矩形的对象,例如球体、棱锥体和由网格表示的各种其他对象。网格不是由大小和分布在对象表面上相等的多边形组成,也不是所有的半对称对象,如圆柱体、球体和圆锥体的理想形状 因此,我将如何着手设计或改进一种寻路算法,该算法采用任意网格并生成可以以多种方式缠绕自身的节点?a*搜索在该应用程序中应该可以正常工作。它需要一个不会高估两点之间距离的函数,但直线距离永远不会高估曲面上的距离。我意识到您可能没有告诉我们这里的大图,而是试图将问题归结为3d场景=>定向图=>??=>pathfind

我有各种表面为3D和非矩形的对象,例如球体、棱锥体和由网格表示的各种其他对象。网格不是由大小和分布在对象表面上相等的多边形组成,也不是所有的半对称对象,如圆柱体、球体和圆锥体的理想形状


因此,我将如何着手设计或改进一种寻路算法,该算法采用任意网格并生成可以以多种方式缠绕自身的节点?

a*搜索在该应用程序中应该可以正常工作。它需要一个不会高估两点之间距离的函数,但直线距离永远不会高估曲面上的距离。

我意识到您可能没有告诉我们这里的大图,而是试图将问题归结为3d场景=>定向图=>??=>pathfind,但您是否考虑过从不同的方向处理此问题

是否没有办法预先编写有向图?大多数游戏(我假设这是一个游戏)在构建搜索路径时不会考虑场景中每个对象的完整几何体。也许还有别的办法

无论如何,你可能会发现对你的研究有用

一个(可能是最简单的)选择是使用基于网格的搜索技术——有一些非常简单的方法可以生成多分辨率网格分解,将单元格标记为“自由”或“碰撞”,并使用类似于*(如前所述)的方法搜索生成的网格

通常,您可能需要使用更强大的运动规划技术,例如(PRMs)或(RRTs)。在这些领域有相当多的学术工作


作为介绍,您可能想查看一份类似(PDF)的调查报告。

确实有更大的图景,但我有其他“图景”可以从中受益。我同意大多数游戏只有一个要寻路的对象,也就是一个矩形的高度贴图,但在我的例子中这不是真的。这里的问题是,如果我将节点放置在网格之外,从一个节点移动到另一个节点的成本将是不规则的。例如,如果我用四边形做一个球体,那么两极的四边形比赤道的四边形更小,距离更近,即使从优化的角度来看,这也是不好的。不规则间距的问题很容易通过使较长的线段更昂贵来解决。球体上不均匀的四边形间距可以通过使用细分的二十面体来解决。如果你有一些非常大的多边形,你会想添加额外的节点,这样你的AI就可以在拐角处切割。我如何生成细分的二十面体?