开源物理引擎

15

我最近几周一直在使用 Open Dynamics Engine (ODE) 并且非常成功。它有一个非常简单的 API,在模拟方面至少看起来是真实的。(我有时会对我的碰撞关节参数产生疑问,但是无论如何。)

我唯一的抱怨是,有时它很慢。如果我简单地模拟1000个以上的相互作用体系,那么我的性能就会开始下降。

我知道我可以花时间在它们的空间网格上来减少碰撞系统的负载,但在我尝试调整我的代码以适应 ODE 之前,我想知道是否还有其他值得考虑的开源/免费 物理引擎。这将是一个商业应用程序,因此我正在寻找比某个大学生周末项目更加稳定和经过实战测试的东西。

6个回答

21

构建一个快速、准确且稳定的求解器非常棘手,像Havok这样的公司对该技术的保护也是可以理解的。话虽如此,我知道的免费系统有:

  • Newton Game Dynamics -- 该系统以具有非常准确和稳定的求解器而声名远扬,但代价是性能较低。它过去几年一直在试图在不牺牲其他两个方面的情况下提高性能。它是一个设计良好的引擎,工作得很好,但仍然是其中速度较慢的引擎之一。不开源。
  • Tokamak -- 正好相反。这个引擎非常糟糕;即使是他们的演示程序也不能稳定运行。只需看看他们的箱子堆叠就可以看到巨大的抖动。我从未被它震撼过。它是开源的,并且非常快。
  • Bullet -- 该系统由一位曾经在Havok工作的员工领导,现在受雇于索尼(尽管我不记得是SOE还是SCEA)。它是这个领域的新手,实际上是开源的。它受到了索尼公司的重视,良好的跨平台性能,并由那些知道自己在做什么的人开发。
  • TrueAxis -- 最近出现在这个领域。我对它不太了解,并且没有真正获得实质性的社区认可。我有点怀疑它;它可能写得很好,但对于小型社区而言,帮助可能很难得到,并且与其他系统相比,它可能不是一个经过充分测试和稳定的引擎。

我自己非常喜欢Bullet,但听说过一些杂七杂八的抱怨。大部分似乎集中在文档不好或偶尔在某些次要平台上出现问题,如Mac上的问题。在“大二”的Havok和PhysX之后,它仍然是我的首选。


Bullet也被集成到Blender中,以游戏引擎的形式存在。 - new123456
Newton是开源的:https://github.com/MADEAPPS/newton-dynamics/ - Dmitriy

5

Bullet很棒,已经在商业上被使用(例如:在《闪电狗》和几款PS3/Wii游戏的制作中),支持许多平台甚至包括nVidia的CUDA。


4

Bullet可以免费商用,源代码也是公开的。

文档可以更好,但有论坛和许多示例可帮助入门。


3

使用今天的硬件,如果您在x86 CPU上天真地模拟1000个相互作用的刚体,性能会无一例外地下降。如果您现在想要更高的性能,则最好寻找将其工作负载转移到GPU的物理引擎。

CPU具有出色的整数数学和逻辑处理能力,但GPU具有远远超过其原始浮点计算能力。

如果您仍然希望通过仅使用CPU来获得更高的性能,则需要更改您的要求。


2

2
考虑到这是一个完全用C#编写的2D引擎,它比ODE功能更少,速度也更慢,可能不是OP想要的。别误解,Farseer在XNA项目中非常出色。我只是认为在这里并不有帮助。 - Promit

1

Nvidia的PhysX不是开源的,但可以在Windows、Linux和PS3上免费使用

引用自http://en.wikipedia.org/wiki/PhysX

Nvidia向Windows和Linux用户以及开发者提供了免费的引擎和SDK[6]。由于索尼的全面购买协议,PlayStation 3 SDK也是免费提供的。


谢谢提供链接。在我的情况下,我需要能够控制编译,所以这个方法对我来说不适用。不过还是很有帮助的! - Frank Krueger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接