2

我需要用 Java 编写一个非常简单的 3D 物理模拟器,立方体和球体相互碰撞,仅此而已。我从来没有做过这样的事情,我应该从哪里开始?关于如何完成的任何文档?我可以重复使用的任何库?

4

8 回答 8

7

Grant Palmer(非 Java)的游戏程序员物理学

Phys2D(Java 代码)

于 2009-03-02T07:11:10.950 回答
1

假设您想开始如何做,最好的开始方法是使用笔和纸。开始定义应用程序的焦点(如实体球体、立方体等,重力、碰撞等规则,决定对象的层次结构等......)

如果您知道如何做到这一点,并且想要了解技术方面的入门知识,那么 Swing 是用 Java 制作 UI 的不错选择。

也看看这里:http ://www.myphysicslab.com/

于 2009-03-02T07:10:19.127 回答
1

NeHe 的第 39 课是一个很好的起点,它是用 C++ 编写的,但理论很容易理解。

于 2009-03-02T18:08:52.150 回答
1

一个不错的 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 年底以来就没有发布过,所以不确定社区现在有多活跃。

于 2009-05-09T21:18:42.847 回答
0

首先为物理对象定义一个类怎么样?它具有位置、速度、质量以及可能具有其他特征(如形状、弹性等)的子类。

然后创建一个宇宙(类)来放置这些物理对象。听起来很有趣 :)

于 2009-03-02T07:19:27.280 回答
0

如果您只需要模拟球体/圆和立方体,那么您只需要一点向量数学。

例如,为了模拟一个简单的撞球游戏,每个球(球体)都有一个位置、3d 线速度和 3d 线加速度矢量。您的模拟将涉及许多不断更新每个球的小帧。如果两个或更多球相撞,您只需将向量相加并计算所有球的新速度。例如,如果一个球撞到墙上,所需要的只是翻转球的标志让它反弹回来......

于 2009-03-02T07:35:22.797 回答
0

如果您想从头开始执行此操作,即编写自己的物理引擎,则必须了解背后的数学原理才能完成此操作。如果你有相当好的数学背景,你就会有一个先机,否则就会有一个陡峭的学习曲线。

您可以从这个社区论坛开始收集有关如何完成的信息: gamedev.net

当然,如果您不想编写自己的代码,您可以使用像Ogre这样的开源引擎。

于 2009-03-02T07:38:41.010 回答
0

查看子弹物理学。 bulletphysics.com是论坛或查看 Sourceforge 上的项目

于 2009-03-02T17:59:09.397 回答