20

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

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

4

6 回答 6

11

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

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

希望对您的选择有用。

于 2011-09-22T12:51:43.717 回答
8

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

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

于 2012-11-22T13:31:32.007 回答
6

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

于 2011-06-22T09:14:24.883 回答
4

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

于 2011-07-07T19:52:21.450 回答
4

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

https://github.com/simbody/simbody

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

于 2013-11-13T21:36:34.983 回答
3

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

  1. Box2D(实验性)
  2. 子弹
  3. Dynamechs(已弃用)
  4. 冲击波(实验性)
  5. IBDS(实验性)
  6. 夹具库
  7. Meqon(已弃用)
  8. 牛顿
  9. OpenTissue(实验性)
  10. PhysX(又名 Novodex、Ageia PhysX、nVidia PhysX)
  11. 简单物理引擎(实验性)
  12. 托卡马克
  13. 真轴

根据此答案中链接的2007 年 12 月论文

在开源引擎中,Bullet 引擎总体上提供了最好的结果,甚至超过了一些商业引擎。Tokamak 是计算效率最高的,使其成为游戏开发的不错选择,但 TrueAxis 和 Newton 在低更新率下表现良好。对于模拟系统,应确定模拟的最重要属性,以便选择最佳发动机。

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

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

于 2015-01-27T13:24:24.447 回答