我正在寻找任何允许我获得直线和多面体/球体之间的3D碰撞点的C++库(其中,直线由两个3D点和有限数量的3D点的多面体组成)

令我惊讶的是,我似乎找不到这样的库(或者我不知道要搜索哪些短语)。

此外,我见过的大多数碰撞库都来自2005/2006年(但没有人说如何获取碰撞点坐标,它们中的大多数用于可视化事物并检查边界或两个3d对象之间的碰撞等。对我来说太过分了-我只想要直线和3D对象[多面体/球体]之间的3D碰撞点)

那么,..截至2013年,哪些图书馆是最新的,并利用新技术实现最佳性能?

还是我的案例有代码示例?

有时我喜欢重新发明轮子,但在这种情况下不希望如此,我希望它可以将它用于游戏的插件-因此,我们提出了可靠且快速的方法。

最佳答案

快速有效的方法取决于有多少个对象,等等。如果仅要测试几个对象,构建八叉树或其他空间分区就没有多大意义了。您可能会考虑尝试找到包围多面体的(边界)球体(原点+半径),并测试一下是否先将其相交。或轴对齐的边界框(AABB)。

然后,您可以进行更昂贵的多面体测试-可能需要针对每个“正面”三角形进行测试。如果对象不是凸形的(例如网格),那么就会出现问题,在这种情况下,您需要的射线距离最少。

请参阅:CGALGeometric Tools

09-26 22:23