【发布时间】:2010-10-10 17:31:35
【问题描述】:
我需要用 Java 编写一个非常简单的 3D 物理模拟器,立方体和球体相互碰撞,仅此而已。我从来没有做过这样的事情,我应该从哪里开始?关于如何完成的任何文档?我可以重复使用任何库吗?
【问题讨论】:
标签: java simulation physics-engine
我需要用 Java 编写一个非常简单的 3D 物理模拟器,立方体和球体相互碰撞,仅此而已。我从来没有做过这样的事情,我应该从哪里开始?关于如何完成的任何文档?我可以重复使用任何库吗?
【问题讨论】:
标签: java simulation physics-engine
一个不错的 java 物理库是 jmephysics (http://www.jmonkeyengine.com/jmeforum/index.php?topic=6459);它非常易于使用,位于 ODE (http://www.ode.org/) 和 jmonkeyengine (http://www.jmonkeyengine.com) 之上,它为您提供了一个场景图 (http://en.wikipedia.org/wiki/Scene_graph),这也是您在非常简单的 3d 应用程序之外需要的任何东西.
不过我已经有一段时间没有使用它了,并且看到它们自 2007 年底以来就没有发布过,所以不确定社区现在有多活跃。
【讨论】:
NeHe 的第 39 课是一个很好的起点,它是用 C++ 编写的,但理论很容易理解。
【讨论】:
查看子弹物理学。 bulletphysics.com是论坛或check out the project on Sourceforge。
【讨论】:
如果您想从头开始执行此操作,即编写自己的物理引擎,您必须了解背后的数学原理才能完成此操作。如果你有相当好的数学背景,你就会有一个先机,否则前面的学习曲线就会很陡。
您可以在此社区论坛上开始收集有关如何完成工作的信息: gamedev.net
如果您不想编写自己的代码,当然可以使用像 Ogre 这样的开源引擎。
【讨论】:
如果您只需要模拟球体/圆和立方体,那么您只需要一点向量数学。
例如,模拟一个简单的台球游戏,每个球(球体)都有一个位置、3d 线速度和 3d 线加速度矢量。您的模拟将涉及许多不断更新每个球的小帧。如果两个或更多球相撞,您只需将向量相加并计算所有球的新速度。例如,如果一个球撞到了墙上,只需翻转球的标志让它反弹回来......
【讨论】:
首先为物理对象定义一个类怎么样?它具有位置、速度、质量以及可能具有形状、弹性等其他特征的子类。
然后创建一个宇宙(类)来放置这些物理对象。听起来很有趣:)
【讨论】:
Physics for Game Programmers By Grant Palmer(不是 Java)
Phys2D(Java 代码)
【讨论】:
假设您想开始了解如何操作,最好的方法是使用笔和纸。开始定义应用的焦点(如实体球体、立方体等,重力、碰撞等规则,决定对象的层次结构等。)
如果您知道如何做到这一点,并且想要了解技术方面的入门知识,那么 Swing 是使用 Java 制作 UI 的不错选择。
也可以看看这里:http://www.myphysicslab.com/
【讨论】: