物理引擎所需的建议


12

我最近开始了一个项目,构建了一个物理引擎。我希望您能给我一些有关文档和/或最佳技术的建议。

首先,我发现强烈建议将Game-Physics-Engine-Development用于手头的任务,我想知道您是否可以给我第二个意见,我应该得到吗?另外,在浏览Amazon时,我偶然发现了 Game Engine Architecture,并且由于我想为游戏构建物理引擎,因此我认为这可能也是一本好书。

其次,我知道模拟物理是高度计算密集型的,所以我想使用CUDA或OpenCL。现在我倾向于OpenCL,因为它可以在NVIDIA和ATI芯片组上使用。

PS:我将在Linux上用C ++实现。

Answers:


10

这是我学会编写物理引擎的方法,该引擎全部免费且值得推荐:

  1. David Baraff的论文特别介绍了基于物理的建模

  2. Brian Vincent Mirtich 基于论文脉冲的刚体系统动态仿真

  3. Kacic / Bullock “实用的动力学系统” SIGRAPH 2003,编辑:添加了链接

尼克·波奇诺(LucasArts)在另一本宝石书籍《宝石4》(Gems 4) “编写基于Verlet的物理引擎” 中提到了这些论文。它不是免费的,但值得每一分钱。

还可以看看其他引擎,这是Bullet Physics Engine的来源。

关于CUDA / OpenCL实施:首先使其在CPU上运行,这非常复杂:)

请注意,一段时间后您很可能会丢掉引擎,因为它太难了,无法使用它来创建稳定且集成良好的物理引擎。自己拥有一个有竞争力的功能列表,但这是一次很棒的学习体验!

一旦运行了简单的引擎,我的建议是:进行测试方案,在其中将引擎的结果与另一个引擎的结果进行比较。这帮助我发现了很多错误,并将改善您的界面;就像在两个引擎的同一机体上施加相似的力1秒钟一样。

最后但并非最不重要的一点:开始时忽略碰撞,首先关注稳定的模拟。


看起来是个不错的答案,但您可能需要对其进行格式化。
共产主义鸭子

感谢您的反馈。我同意我无法打造一个有竞争力的引擎,但是我的主要目标是学习。
adivasile 2011年

1
@共产主义鸭子感谢您的提示,我是新手,我承认我太懒了,无法检查格式选项,将其修复:)
Maik Semder 2011年

1
在Kacic的论文中添加了链接,希望它是正确的:)
Ray Dey

5

Maik是对的,Baraff的论文是一个很好的开始,但不要忘记Chris Heckers撰写的有关刚体动力学的文章:http ://chrishecker.com/Rigid_Body_Dynamics !

同样,他对“ [..]您将放弃引擎”的建议完全正确。但是您会学到很多东西!

关于您的问题的CUDA / OpenCL部分:如果您知道CUDA,那么切换到OpenCL变得非常容易。我建议您先学习CUDA,因为那里有很多很好的教程,示例代码和计算库。例如:

但是请注意:开始使用CUDA非常容易,而开始进行物理模拟则要困难得多,但是将两者结合起来确实是一个挑战!


您绝对正确,这是另一个必须提及的重要资源,克里斯·赫克(Chris Hecker)的论文+1
Maik Semder 2011年

4

我也是从Baraff开始的,但是现在有点过时了。您需要的是迭代求解器,而最好的纸张imo是Erin Catto的 Iterative Dyanmics。您在那里拥有实现物理引擎所需的一切。如果您需要更多的细节(例如关节和更多的数学知识),则可以深入研究Erleben的博士学位论文。我希望我从一开始就找到了它-稍微浏览一下Bullet论坛,那里有很多信息(也许太多了)。

至于书,很多书都令人失望,但我还是推荐肯尼·埃勒本(Kenny Erleben)或游戏物理学珍珠(Game Physics Pearls)的《基于物理的动画》。

对CUDA / OpenCL不太了解(尽管我一直很想这样做),但是您绝对应该检查一下原田隆宏的工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.