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

有帮助吗?

解决方案

物理游戏程序员作者Grant Palmer (不是Java)

Phys2D (Java代码)

其他提示

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

如果你知道如何做到这一点,并希望在技术方面有一个入门知识,那么Swing是用Java创建UI的一个很好的选择。

另请参阅此处: http://www.myphysicslab.com/

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

一个不错的java物理库是jmephysics( http://www.jmonkeyengine ?的.com / jmeforum / index.php的主题= 6459 );它非常易于使用并位于ODE之上( http://www.ode.org/ )和jmonkeyengine( http://www.jmonkeyengine.com ),它给你一个场景图( http://en.wikipedia.org/wiki/Scene_graph ),这也是你需要的东西超越一个非常简单的3D应用程序。

我有一段时间没有使用它,并且发现自2007年底以来它们还没有发布,所以不确定社区现在有多活跃。

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

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

如果您需要模拟的是球体/圆形和立方体,那么您需要的只是一些矢量数学。

例如,为了模拟简单的水池游戏,每个球(球体)将具有位置,3d线速度和3d线性加速度矢量。你的模拟将涉及许多小帧,不断更新每一个球。如果两个或多个球发生碰撞,您只需对矢量求和并计算所有球的新速度。例如,如果一个球击中墙壁,那么所需要的就是翻转球的标志让它反弹......

如果你想从头开始这样做,意味着编写你自己的物理引擎,你必须知道背后数学的来龙去做才能做到这一点。如果你有一个相当不错的数学背景,那么你将有一个先发制人,否则将会有一个陡峭的学习曲线。

您可以从此社区论坛开始,收集有关完成工作的信息: gamedev.net

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

查看bulletphysics。 bulletphysics.com 是论坛或查看Sourceforge上的项目

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top