3D物理シミュレーションエンジンの記述/使用はどこから始めますか?
-
03-07-2019 - |
質問
非常に単純な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?topic = 6459 );非常に使いやすく、ODEの上にあります( http://www.ode.org/ )およびjmonkeyengine( http://www.jmonkeyengine.com )により、シーングラフ( http://en.wikipedia.org/wiki/Scene_graph )、ここでも何かに必要なもの非常に単純な3Dアプリケーションを超えています。
しばらく使用していませんが、2007年後半からリリースされていないので、コミュニティの現在の活動状況はわかりません。
最初に物理オブジェクトのクラスを定義するのはどうですか?位置、速度、質量、および形状、弾性などの他の機能を備えたサブクラスがあります。
次に、これらの物理オブジェクトを配置するユニバース(クラス)を作成します。楽しそうですね:)
シミュレートする必要があるのが球/円と立方体だけである場合、必要なのはベクトル演算のビットです。
たとえば、単純なプールゲームをシミュレートするには、各ボール(球)に位置、3D線形速度、3D線形加速ベクトルがあります。シミュレーションには、すべてのボールを継続的に更新する多くの小さなフレームが含まれます。 2つ以上のボールが衝突する場合、単にベクトルを合計し、すべてのボールの新しい速度を計算します。たとえば、ボールが壁に当たった場合、必要なのは、ボールのサインを反転させて跳ね返らせることだけです...
これを最初から行う場合、つまり独自の物理エンジンをコーディングする場合は、これを達成するために背後にある数学の詳細を知っておく必要があります。かなり良い数学のバックグラウンドがあれば、有利なスタートを切ることができます。
このコミュニティフォーラムから始めて、物事の進め方に関する情報を収集できます。 gamedev.net
もちろん、独自にコーディングしたくない場合は、 Ogre のようなオープンソースエンジンを使用できます。
bulletphysicsをチェックしてください。 bulletphysics.com はフォーラムまたは Sourceforgeでプロジェクトをチェックアウト。