开始物理模拟

9
我刚刚完成了CS282 - 计算机物理模拟的独立学习课程。这是我所在学院首次提供该课程。教材是Ian Millington的《游戏物理引擎开发:如何为您的游戏构建一个强大的商业级物理引擎》。这本书充满了语法错误,虽然是一个有用的参考资料,但很难从中编写代码。提供的源代码比书中描绘的更完整,但解密代码存在一定难度,特别是对于图形处理方面,因为引擎本身在某些地方已经损坏或未实现,而且也没有关于如何自己使用引擎或者如何使用GLUT(该书使用的图形工具)的入门指南。事实上,该书中的大部分参考文献都不是最近十年内的,这对于教授15年前的代码来说还不错。虽然该文本是初学者物理模拟的重要资源,但它并没有为CS学生提供一个友好的沙盒环境。
这基本上是一个试验,以找出什么有效,什么无效。我的教授还提供了一本使用ActionScript与物理引擎的教科书,但该书需要先了解物理引擎的工作原理,因此我们为了实用性而放弃了它。
我的问题是:
我正在撰写一篇反思论文,并希望能够推荐一个替代这些教材的方法,为CS学生提供一个轻松的方式来编写代码并能够看到他们劳动成果的结果,可能使用Python。有人可以推荐一个好的资源和/或文本,以达到这个目的吗?对于那些已经参加过这门课程或类似课程的人来说,你们的经验是什么?

不知道这个与编程有多大关系,但是我读过一本关于碰撞检测的书,我认为写得非常好。书籍链接 - moowiz2020
1个回答

1

这本书使用的图形实用程序已经不再开发了!

错了。请查看FreeGLut项目。

有人能推荐一些对此有用的好资源和/或文本吗?那些已经学过这门课程或类似课程的人,你们的经验是什么?

你可能想看看Chris Hecker的物理文章。它们虽然有点老,但很有用。

它没有为计算机科学专业的学生提供友好的沙盒环境。

友好的沙盒环境意味着“无需编程”。要“玩”,您可以使用现成的物理引擎(Bullet Physics(附带源代码)或PhysX),但我怀疑它是否会教您如何从头开始编写体面的物理模拟 - 这是一个大主题,而现有引擎长期以来一直在开发中,这是有原因的...


是的,有像openGLUT这样的GLUT衍生版本,但GLUT本身已不再开发。来自维基百科的GLUT文章:“Kilgard的GLUT库已不再维护。” - LavaHot
此外,“沙盒”并不意味着我们作为学生只是玩现有的物理引擎而不添加代码。是的,这门课很难,但是有很多不必要的侦探工作来找出如何使某些东西正常工作。我希望有一种方法,让学生编写一个定义引擎某个方面(例如力发生器或精细碰撞检测器)的类,并将其插入到某个地方,然后得到一个图形演示。图形在作者的引擎中被广泛使用,但在书中根本没有涉及。 - LavaHot
1
@LavaHot:“但GLUT本身”只要API相同,维护它的人或是否“原始”都无关紧要。这就是模块化设计的美妙之处 - 只要具有相同的接口,就可以使用另一个库。 “学生可以编写定义某些方面的类” 我想不出简单的方法来做到这一点。现有的引擎(带源代码 - ODE / Bullet)允许一定程度的可扩展性,但由于每个概念应以某种方式与引擎交互,所以很快可能会变得复杂。我认为ODE / Bullet两者都应该包括一些“用户类”演示,但我不确定。 - SigTerm
@LavaHot:“图形是作者引擎中广泛使用的内容”。也许你正在寻找某种图形框架? - SigTerm
是的,我想你说新的GLUT扩展了相同的接口是正确的,但是我无法使用包含在GLUT示例中的glSolidCyclinder()函数,而我相信几乎所有GLUT的派生版本都可以使用。而且我也不想通过拆除旧的GLUT并安装新的东西来潜在地创建一堆烂代码。是的,如果有图形框架的话,可能会很有益。你有什么想法吗? - LavaHot
1
@LavaHot:它被称为glutSolidCylinder,而不是glSolidCylinder。还有openGlut。你仍然可以使用“旧”的glut,因为代码不会腐烂。“你有什么想法吗?”很遗憾,没有。如果你选择简单的解决方案(获取SDL一些网格库等),你最终将没有场景图,并可能浪费时间编写它。如果你选择游戏引擎并将其用作显示框架的基础,则将被迫接受引擎的抽象模型(当然,它以后可能会妨碍你)。因此,没有普遍适用的好方法。 - SigTerm

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