【问题标题】:Where do I start to write/use a 3D physics simulation engine?我从哪里开始编写/使用 3D 物理模拟引擎?
【发布时间】:2010-10-10 17:31:35
【问题描述】:

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

【问题讨论】:

    标签: java simulation physics-engine


    【解决方案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 年底以来就没有发布过,所以不确定社区现在有多活跃。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        查看子弹物理学。 bulletphysics.com是论坛或check out the project on Sourceforge

        【讨论】:

          【解决方案4】:

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

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

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

          【讨论】:

            【解决方案5】:

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

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

            【讨论】:

            • 这不是物理学:没有重力,没有弹性等。作为初学者做起来很有趣,但有限。
            • 其中大部分只是附加向量,它们会被分解到每个帧中。一旦你完成了简单的工作,添加重力、coR 等就不难了。
            【解决方案6】:

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

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

            【讨论】:

              【解决方案7】:

              Physics for Game Programmers By Grant Palmer(不是 Java)

              Phys2D(Java 代码)

              【讨论】:

                【解决方案8】:

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

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

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

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-03-31
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2010-10-02
                  相关资源
                  最近更新 更多