C++中的非刚体2D物理引擎

Jos*_*eld 8 c++ physics point box2d

我正在尝试用C++实验2D物理引擎.到目前为止,似乎最受欢迎的是Box2D.不幸的是,Box2D是一个严格的身体物理引擎,并不能真正帮助我想要尝试的东西.

我希望能够定义一个具有多个由弹簧连接的顶点的形状,这样当这个形状与刚性或其他非刚性形状碰撞时,它的形状将是灵活的.

现在我试图想办法在Box2D中只使用刚体来做这个,但似乎总有缺陷:

  1. 使用矩形或线段作为柔性形状的外边缘.这些会与其他形状碰撞.不幸的是,它们没有弹性,所以不会看到预期的效果.
  2. 形状的每个顶点可以是具有其自己的小圆形形状的主体.然后可以通过弹簧将这些主体连接在一起.这在形状变形方面效果很好,但想象一下,如果形状落在刚性钉上并且尖钉刚好在顶点之间穿过.然后形状会卡在钉子上.

那么用C++做这种物理的最佳方法是什么?优选地,不必编写整个物理引擎.也许我只是错过了Box2D的一个功能.也许这不是正确的选择.那么什么是正确的选择?

Sta*_*n E 3

有几个支持可变形/软体的包/引擎。如果您想要免费的东西,您可以查看PhyzSOFABullet 等

维基百科上有详细的列表。其中大多数都是基于 3D 的,但您可以通过将场景设置为平面来将它们调整为 2D 模型。

快乐编码!