本文介绍了用OpenCascade,如何快速进行2个形状的碰撞检测?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
用OpenCascade如何进行两个形状的碰撞检测?可能有几种方法。一种是计算它们的交集,并检查交集结果。另一种方法是计算它们的最小距离。哪条路更快?或者有没有更快的方法?非常感谢。
推荐答案
在BREP数据结构上计算最小距离是一项相当昂贵的操作。OCC确实提供了碰撞检测的商业选项[1]。其他选项可能是使用ODE或Bullight在表示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
这篇关于用OpenCascade,如何快速进行2个形状的碰撞检测?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!