我正在尝试为简单的软件应用程序选择物理引擎。它将模拟相当少量的对象,因此性能不是一个大问题。我主要关心所涉议案的准确性。我还希望引擎在windows / linux / mac之间是跨平台的,并且可以与c ++代码一起使用。我在看Bullet,Newton Game Dynamics和ODE因为它们是开源的。但是,如果Havok / PhysX更准确,我也会考虑这些。
我似乎发现所有关于引擎的意见,这些选项之间是否有任何彻底的比较?或者有没有人有尝试各种引擎的经验。由于我想要做的事情相对简单,它们之间可能没有太大差异,但我想听听人们对这些选项的看法?谢谢!
答案 0 :(得分:10)
答案 1 :(得分:8)
虽然它有点陈旧,但有一个全面的比较(按字母顺序)Bullet,JigLib,Newton,ODE,PhysX和其他可用的:
比较考虑了积分器,摩擦模型,约束求解器,碰撞检测,堆叠和计算性能。
答案 2 :(得分:6)
很抱歉,但在准确性方面,您永远不会找到真正的比较。我正在寻找我的硕士论文三个月,但还没找到。所以我开始自己做比较但是还有很长的路要走。我正在使用3d引擎甚至2d引擎进行测试,目前Chipmunk是迄今为止精度最高的。所以,如果你不需要3d,我会推荐它。但是,如果你迫切需要3d,你的问题就像你描述的一样简单(以后不想扩展它?)Bullet和ODE会这样做。我更喜欢Bullet,因为它更新,并且仍在积极维护。至少有牛顿,我正在与之战斗。因此,我不能给你利弊,除了熟悉(关键)坏文档需要更多的工作。 希望有所帮助。最好的问候。
答案 3 :(得分:4)
查看用于工程的Simbody。它特别适合模拟铰接体。它已被用于模拟人类肌肉骨骼动力学超过5年。它也是机器人模拟环境Gazebo中使用的物理引擎之一。
答案 4 :(得分:3)
我发现在ODE中非常有价值的一件事就是能够“即时”改变每一个参数。例如,如果你改变惯性甚至是身体的形状,发动机似乎没有抱怨。你可以用一个盒子替换一个球体,一切都会继续工作,或者改变球体的大小。 其他引擎通常不那么灵活,因为它们在内部进行了大量工作以进行优化。 至于准确性,据我所知,ODE仍然支持一个非常准确(但很慢)的解算器,它在游戏行业中显然不是很受欢迎,因为你不能实时使用超过25-30个对象。希望这会有所帮助。
答案 5 :(得分:3)
物理抽象层通过统一的API支持大量物理引擎,可以轻松地根据您的情况比较引擎。 PAL为这些物理引擎提供了一个独特的接口:
根据December 2007 paper中链接的this answer:
在开源引擎中,Bullet引擎提供了最好的结果 整体而言,甚至超越了一些商用发动机。托卡马克 是计算效率最高的,使其成为一个很好的选择 游戏开发,但TrueAxis和牛顿在低位表现良好 更新率。对于模拟系统而言,最重要的属性 应确定模拟以选择最佳模拟 发动机。
以下是同一作者的2007年9月演示: