能否推荐一款经过验证的轻量级C/C++ AABB树实现?
或者,另外一种高效的数据结构,加上一个轻量级的C/C++实现,来解决大量光线与大量三角形相交的问题?
"大量"意味着光线和三角形都有几十万个。
我知道AABB树是CGAL库和游戏物理库(如Bullet)的一部分。但是,我不想在我的项目中增加一个巨大的额外库的负担。理想情况下,我想使用一个小型的浮点类型模板化头文件实现。只要它容易集成到我的项目中,我也可以选择一些CPP文件的东西。依赖于boost
也可以。
是的,我已经谷歌过了,但没有成功。
我应该提到我的应用场景是网格处理,而不是渲染。简而言之,我正在将参考网格的拓扑结构转移到来自3D扫描的网格的几何结构中。我从参考网格的顶点和法线向3D扫描发射射线,并且需要恢复这些射线与扫描的交点。
编辑
有几个答案/评论指向最近邻数据结构。我创建了一个小插图,说明了当射线-网格相交时使用最近邻方法会出现的问题。最近邻方法可以用作在许多情况下工作的启发式方法,但我并不认为它们像AABB树一样系统地解决问题。