子弹vs牛顿游戏动力学vs ODE物理引擎
Bullet vs Newton Game Dynamics vs ODE physics engines
我正试图为一个简单的软件应用程序选择一个物理引擎。它将模拟相当少量的对象,因此性能不是一个大问题。我最关心的是有关动议的准确性。我还希望这个引擎是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为这些物理引擎提供了一个独特的接口:
- Box2D(实验)
- 项目符号
- Dynamecs(已弃用)
- Havok(实验)
- IBDS(实验)
- JigLib
- Meqon(已弃用)
- 牛顿
- ODE
- OpenTissue(实验)
- PhysX(又称Novodex、Ageia PhysX、nVidia PhysX)
- 简单物理引擎(实验)
- 托卡马克
- TrueAxis
根据2007年12月的论文,答案如下:
在开源引擎中,Bullet引擎提供了最好的结果总的来说,甚至超过了一些商用发动机。托卡马克是计算效率最高的,是游戏开发,然而TrueAxis和Newton在低位表现良好更新速率。对于模拟系统来说应该确定模拟以便选择最佳发动机
以下是同一作者2007年9月的演示:
https://www.youtube.com/watch?v=IhOKGBd-7iw
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 数据成员SFINAE的C++17测试:gcc vs clang
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 当使用带有VS2019或VSCode的虚幻引擎4.24.2时,我如何修复这些错误的Intellisense错误
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 正在VS调试器中监视映射条目
- Unity在虚幻引擎4中的"Vector3.Slerp"等效C++?
- Confusion: decltype vs std::function
- 将IBM Rhapsody模型集成到VS 2019中
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 使用VS Code和CMake Tools运行自定义命令
- 如何创建从Maya(或类似程序)到虚幻引擎的自定义数据导出插件
- 修改 VS Code 中的默认C++代码段
- 如何使用c++在VS 2019上运行SQL查询
- vs 2015 constexpr变量不恒定,但与2019相比还好吗
- 在虚幻引擎中删除NXOpen对象时崩溃
- 完美前进使用 std::forward vs RefRefCast
- 引擎节点:未定义的符号:_ZTV6Config
- 子弹vs牛顿游戏动力学vs ODE物理引擎