Java で非常に単純な 3D 物理シミュレーターを作成する必要があり、立方体と球体がぶつかり合っています。それ以上のことはありません。私はそのようなことをしたことがありません。どこから始めればよいですか? それがどのように行われるかに関するドキュメントはありますか? 再利用できるライブラリはありますか?
8 に答える
Grant Palmer によるゲーム プログラマーのための物理学(Java 以外)
Phys2D (Java コード)
あなたがそれを行う方法を始めたいと仮定すると、始めるための最良の方法はペンと紙を使うことです. アプリの焦点の定義を開始します (エンティティの球、立方体など、重力、衝突などのルール、オブジェクトの階層の決定など)。
これを行う方法を知っていて、技術面の入門書が必要な場合は、Swing は Java で UI を作成するための適切なオプションです。
こちらもご覧ください: http://www.myphysicslab.com/
NeHe のレッスン 39 は良い出発点です。C++ で書かれていますが、理論は非常に理解しやすいものです。
優れた 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 年後半からリリースされていないため、コミュニティが現在どれほど活発であるかはわかりません。
弾丸物理学をチェックしてください。 bulletphysics.comはフォーラムです。または、Sourceforge のプロジェクトをチェックしてください。
最初に物理オブジェクトのクラスを定義するのはどうですか? 位置、速度、質量があり、形状、弾性などの他の機能を持つサブクラスがある場合もあります。
次に、これらの物理オブジェクトを配置するユニバース (クラス) を作成します。楽しいように聞こえる :)
シミュレートする必要があるのが球/円と立方体だけである場合、必要なのは少しのベクトル計算だけです。
たとえば、単純なビリヤード ゲームをシミュレートするには、各ボール (球体) に位置、3D 線形速度、および 3D 線形加速度ベクトルを設定します。シミュレーションには、すべてのボールを継続的に更新する多くの小さなフレームが含まれます。2 つ以上のボールが衝突した場合は、単純にベクトルを合計して、すべてのボールの新しい速度を計算します。たとえば、ボールが壁にぶつかった場合、必要なのはボールのサインを反転させて跳ね返すことだけです...
これをゼロから行う場合、つまり独自の物理エンジンをコーディングする場合は、これを達成するために背後にある数学の詳細を知る必要があります。あなたがかなり良い数学のバックグラウンドを持っているなら、有利なスタートを切ることができます。
このコミュニティ フォーラムから始めて、物事がどのように行われているかについての情報を収集できます: gamedev.net
もちろん、独自のコードを作成したくない場合は、 Ogreなどのオープンソース エンジンを使用できます。