3

使用 OpenCascade,如何对 2 个形状进行碰撞检测?可能有几种方法。一是计算它们的交集,并检查交集结果。另一种方法是计算它们的最小距离。哪种方式更快?或者有什么更快的方法?非常感谢。

4

1 回答 1

3

在 brep 数据结构上计算最小距离是一项相当昂贵的操作。OCC 确实提供了用于碰撞检测的商业选项 [1]。您的其他选择可能是使用 ODE 或 Bullit 在表示 BRep 的网格上执行碰撞检测。这就是我们在 PythonOCC 项目中采用的方法,参见 [2]

[1] http://www.opencascade.org/support/products/coldet/

[2] http://www.pythonocc.org/resources/dyn/cad-and-rigid-body-simulation/

编辑:最近,我为我正在开发的离线机器人软件集成了优秀的 FCL 库 [3]。它的伟大之处在于它可以很好地处理退化网格,并且您可以非常快速地计算执行网格到网格的距离(使用 ODE 不可能)。python ( cython ) 绑定是一项正在进行的工作 [4] 但稳定且 python 开销几乎不明显,我可以推荐这种方法。

[3] https://github.com/flexible-collision-library/fcl

[4] https://github.com/neka-nat/python-fcl

于 2013-01-31T15:53:17.223 回答