我在3D环境中手动创建了NavGraph。我理解(并且之前已经实施过)一个A *例程,一旦你进入图表就能找到我的方法。
我感兴趣的是获得和“关闭”图表的最佳方式。
例: 所以常规就是这样的: 拍摄从光源到目的地的光线,如果没有任何障碍,请继续行走。
如果有问题,我们需要使用图形,所以要进入图形,我们需要在图形上找到最接近的可见节点。 (为此,我之前根据距离光源的距离对图表进行了排序,然后从壁橱发射光线到最远,直到找到一个没有障碍物的光线。)
然后运行标准A * ...
然后“退出”图形,通过我们在图形上获得的相同方法(用于计算上述A *的端点),这样我就可以将光线从端点发射到最近的导航节点。
所以当这一切都说完了,除非我的导航图非常密集,否则我花了更多的时间上图/下图,而不是计算路径...
必须有更好/更快的方式吗? (有某种空间细分技巧吗?)
答案 0 :(得分:0)
您可以构建所有节点的Quadtree,以便快速找到给定位置的最近节点。
答案 1 :(得分:0)
对世界进行空间细分是很常见的。类似于四叉树或八叉树的东西在3D世界中很常见,虽然你也可以覆盖网格,或跟踪任意区域等。基本上,这是一个简单的数据结构问题,可以让你自己对N个navgraph节点进行某种访问,而不需要O. (N)搜索找到你的位置,你的选择往往归结为某种树或某种哈希表。