在对AABB进行SAT测试之前,过滤掉三角形列表的快速方法



我正在尝试执行一个AABB字符串交集,其中三角形来自三元网格,AABB是结构化三维网格/体素中的单个单元。有没有什么聪明的方法/算法可以用来过滤和减少我必须进行SAT测试的三角形和AABB组合的数量?目前,我正在根据网格中的每个单元格检查每个三角形,这是无效的。我还考虑根据质心距离和三角网格中的最大三角形大小作为公差来过滤三角形。但这又涉及到在所有三角形上循环。我也在考虑K最近的邻居。

有一些众所周知的技术,如:

  1. 给每个三角形一个AABB。所以你先做AABB和AABB交叉。目标是快速丢弃不相交的三角形。

  2. 一旦你在AABB内有了所有三角形,你就可以使用I-COLLIDE等算法进行大规模的AABB间碰撞检测。也可以为网格创建AABB树(也称为边界体积层次或BVH(,以便一次丢弃大量不相交的三角形。

一旦你减少了AABB与单元格的AABB相交的三角形集,那么你需要执行实际的AABB/三角形测试,你可以使用分离轴定理。

最新更新