Bullet vs Newton Game Dynamics vs ODE物理引擎

时间:2011-06-20 07:48:34

标签: c++ comparison physics simulation physics-engine

我正在尝试为简单的软件应用程序选择物理引擎。它将模拟相当少量的对象,因此性能不是一个大问题。我主要关心所涉议案的准确性。我还希望引擎在windows / linux / mac之间是跨平台的,并且可以与c ++代码一起使用。我在看Bullet,Newton Game Dynamics和ODE因为它们是开源的。但是,如果Havok / PhysX更准确,我也会考虑这些。

我似乎发现所有关于引擎的意见,这些选项之间是否有任何彻底的比较?或者有没有人有尝试各种引擎的经验。由于我想要做的事情相对简单,它们之间可能没有太大差异,但我想听听人们对这些选项的看法?谢谢!

6 个答案:

答案 0 :(得分:10)

这里有一个很好的比较ODE和Bullet:

http://blog.wolfire.com/2010/03/Comparing-ODE-and-Bullet

希望它在做出选择时有用。

答案 1 :(得分:8)

虽然它有点陈旧,但有一个全面的比较(按字母顺序)Bu​​llet,JigLib,Newton,ODE,PhysX和其他可用的:

比较考虑了积分器,摩擦模型,约束求解器,碰撞检测,堆叠和计算性能。

答案 2 :(得分:6)

很抱歉,但在准确性方面,您永远不会找到真正的比较。我正在寻找我的硕士论文三个月,但还没找到。所以我开始自己做比较但是还有很长的路要走。我正在使用3d引擎甚至2d引擎进行测试,目前Chipmunk是迄今为止精度最高的。所以,如果你不需要3d,我会推荐它。但是,如果你迫切需要3d,你的问题就像你描述的一样简单(以后不想扩展它?)Bullet和ODE会这样做。我更喜欢Bullet,因为它更新,并且仍在积极维护。至少有牛顿,我正在与之战斗。因此,我不能给你利弊,除了熟悉(关键)坏文档需要更多的工作。 希望有所帮助。最好的问候。

答案 3 :(得分:4)

查看用于工程的Simbody。它特别适合模拟铰接体。它已被用于模拟人类肌肉骨骼动力学超过5年。它也是机器人模拟环境Gazebo中使用的物理引擎之一。

https://github.com/simbody/simbody

http://nmbl.stanford.edu/publications/pdf/Sherm2011.pdf

答案 4 :(得分:3)

我发现在ODE中非常有价值的一件事就是能够“即时”改变每一个参数。例如,如果你改变惯性甚至是身体的形状,发动机似乎没有抱怨。你可以用一个盒子替换一个球体,一切都会继续工作,或者改变球体的大小。 其他引擎通常不那么灵活,因为它们在内部进行了大量工作以进行优化。 至于准确性,据我所知,ODE仍然支持一个非常准确(但很慢)的解算器,它在游戏行业中显然不是很受欢迎,因为你不能实时使用超过25-30个对象。希望这会有所帮助。

答案 5 :(得分:3)

物理抽象层通过统一的API支持大量物理引擎,可以轻松地根据您的情况比较引擎。 PAL为这些物理引擎提供了一个独特的接口:

  1. Box2D(实验性)
  2. 子弹
  3. Dynamechs(已弃用)
  4. Havok(实验性)
  5. IBDS(实验性)
  6. JigLib
  7. Meqon(已弃用)
  8. 牛顿
  9. ODE
  10. OpenTissue(实验性)
  11. PhysX(a.k.a Novodex,Ageia PhysX,nVidia PhysX)
  12. 简单物理引擎(实验)
  13. 托卡马克
  14. TrueAxis
  15. 根据December 2007 paper中链接的this answer

      

    在开源引擎中,Bullet引擎提供了最好的结果   整体而言,甚至超越了一些商用发动机。托卡马克   是计算效率最高的,使其成为一个很好的选择   游戏开发,但TrueAxis和牛顿在低位表现良好   更新率。对于模拟系统而言,最重要的属性   应确定模拟以选择最佳模拟   发动机。

    以下是同一作者的2007年9月演示:

    https://www.youtube.com/watch?v=IhOKGBd-7iw