【问题标题】:Bullet vs Newton Game Dynamics vs ODE physics engines [closed]Bullet vs Newton Game Dynamics vs ODE物理引擎[关闭]
【发布时间】:2011-09-18 11:43:38
【问题描述】:

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

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

【问题讨论】:

  • 当您说准确时,您想到的是什么样的运动?准确地模拟弹道轨迹是相当简单的,但对于涉及碰撞或其他瞬时事件的任何事情,情况就不那么简单了。 Bullet for one 有问题,但我怀疑其他物理引擎也会有问题。
  • 我希望仅在可变重力环境中模拟单个物体(不一定是刚性)的运动学,并在特定时间施加各种力(即推进器突然启动)。我真的不打算发生任何冲突。

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    根据this answer中链接的December 2007 paper

    在开源引擎中,Bullet 引擎提供了最好的结果 总体而言,甚至优于某些商业引擎。托卡马克 是计算效率最高的,使其成为 游戏开发,但 TrueAxis 和 Newton 在低端表现良好 更新率。对于仿真系统来说,最重要的属性 应确定模拟以选择最佳的 引擎。

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

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

    【讨论】:

      【解决方案3】:

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

      https://github.com/simbody/simbody

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

      【讨论】:

      • 其实它不是“那个”物理引擎;它是几个受支持的之一,最近才在凉亭中获得支持。
      • 感谢您的指正。我已经更新了答案。
      【解决方案4】:

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

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

      希望它对您做出选择有用。

      【讨论】:

        【解决方案5】:

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

        【讨论】:

        • 这样你就可以在 ODE 中为 this 建模!
        • +1 获得这种难得的洞察力。实时编辑可能对我来说是一个要求.. 但是.. 游戏在 Bullet 和 Newton 中不是一直都在这样做吗?他们在运行时调整了很多值,或者这些值主要限于创建/删除和取消固定对象?
        【解决方案6】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-08-10
          • 1970-01-01
          • 2017-07-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多