子弹vs牛顿游戏动力学vs ODE物理引擎

Bullet vs Newton Game Dynamics vs ODE physics engines

本文关键字:vs 引擎 ODE 游戏 子弹 动力学      更新时间:2023-10-16

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

我似乎只发现了对发动机的看法,这些选择之间有什么彻底的比较吗?或者有人有试用各种发动机的经验吗。由于我试图做的事情相对简单,它们之间可能没有太大的区别,但我想听听人们对这些选择有什么看法?谢谢

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

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

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

尽管它有点过时,但这里有(按字母顺序)Bullet、JigLib、Newton、ODE、PhysX和其他产品的全面比较:

  • http://www.adrianboeing.com/pal/papers/p281-boeing.pdf

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

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

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

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

https://github.com/simbody/simbody

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

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

  1. Box2D(实验)
  2. 项目符号
  3. Dynamecs(已弃用)
  4. Havok(实验)
  5. IBDS(实验)
  6. JigLib
  7. Meqon(已弃用)
  8. 牛顿
  9. ODE
  10. OpenTissue(实验)
  11. PhysX(又称Novodex、Ageia PhysX、nVidia PhysX)
  12. 简单物理引擎(实验)
  13. 托卡马克
  14. TrueAxis

根据2007年12月的论文,答案如下:

在开源引擎中,Bullet引擎提供了最好的结果总的来说,甚至超过了一些商用发动机。托卡马克是计算效率最高的,是游戏开发,然而TrueAxis和Newton在低位表现良好更新速率。对于模拟系统来说应该确定模拟以便选择最佳发动机

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

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