使用OpenCascade,如何快速进行2种形状的碰撞检测?

时间:2013-01-28 13:02:04

标签: collision-detection computational-geometry opencascade

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

1 个答案:

答案 0 :(得分: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