【发布时间】:2015-09-08 18:28:11
【问题描述】:
我正在实现一个导航网格寻路系统,我需要能够在网格中的两个点之间进行光线投射,并获得光线穿过的所有边缘的列表。显然,我需要能够测试单个线的交叉点,但我希望有一种有效的方法来选择哪些线实际上需要检查,而不是蛮力迭代整个网格中的每个边缘。有谁知道我该怎么做?
【问题讨论】:
-
nav 网格可以是 3d 的,这意味着您必须更具体地提出关于光线如何与网格相交的问题。典型的方法会涉及像 kd-tree 这样的空间分区,但这取决于你的网格是什么样的。
-
它可能是 3D,但如果我允许,所有计算(线交点等)都会变得更加复杂,而且我不需要它,所以我将其限制为有效 2D .
-
我想我的意思是,如果你在 3d 地形上导航,你的导航地图将是 3d。无论哪种方式,然后查看 kd-trees,对于 2 维,对于光线跟踪查询。但是,如果您的路径很短,并且经常更改,那么“聪明”的蛮力可能是最好的选择。
标签: algorithm graph unity3d raycasting navmesh