0

我在 3D 环境中手动创建了 NavGraph。我了解(并且之前已经实施过)一个 A* 例程,一旦您“进入图表”,就可以在图表中找到我的方式。

我感兴趣的是进入和“关闭”图表的最佳方式。

例如:所以例行程序是这样的:从源头向目的地射一条射线,如果没有任何阻碍,继续走。

如果有问题,我们需要使用图,所以要进入图,我们需要找到图上最近的可见节点。(为此,我之前根据与源的距离对图表进行了排序,然后从壁橱向最远的地方发射光线,直到找到没有障碍物的光线。)

然后运行标准 A*...

然后“退出”图表,通过与我们在图表上得到的方法相同的方法(用于计算上述 A* 的端点),所以我将光线从端点发射到最近的导航图节点。

所以到这一切都说完了,除非我的导航图非常密集,否则我花在上/下图上的时间比计算路径的时间还要多……

必须有更好/更快的方法吗?(是否有某种空间细分技巧?)

4

2 回答 2

0

您可以构建所有节点的四叉树,以快速找到距给定位置最近的节点。

于 2009-06-03T19:04:12.250 回答
0

对世界进行空间细分是很常见的。像四叉树或八叉树之类的东西在 3D 世界中很常见,尽管您也可以覆盖网格,或跟踪任意区域等。基本上这是一个简单的数据结构问题,无需 O 就可以访问 N 个导航图节点(N) 搜索以找到您所在的位置,您的选择往往归结为某种树或某种哈希表。

于 2009-06-04T09:16:58.633 回答