今回は、JPR2のシミュレーション手法について解説していきます。
また、間違いがあるかもしれませんがご了承ください(・・;)
JPR2は、計算を繰り返すことによって、動きを再現しています。
たとえば、
1、物体の衝突を感知、データを格納するクラスを作る。つまり
衝突検出。
2、1を全ての物体で行う。
3、格納されたデータをコンタクトリストに追加。
4、コンタクトリストのデータを処理する。つまり
衝突応答。
4のときに計算を繰り返します。
物理演算空間は巨大な連立方程式ですので、反復法で計算するのです。
さらに、実は物理エンジンは、ソースコードのほとんど(8~9割)を衝突検出と衝突応答に当てています。
中でも面倒なのが衝突検出です。
何故かというと、衝突応答は格納されたデータ(衝突した物体、衝突点、反発係数、摩擦係数、衝突法線、衝突接線、相対速度、めり込み距離、etc...)
からそれぞれの衝突後の物体の速度を計算するだけです。
つまりデータが正確に分かればどんな複雑な形状の物体でも正確に判定できるという訳です。
そしてそのデータを調べるのがが衝突検出の役割です。つまり、衝突検出といっても、衝突を感知するだけではNGな訳です。
普通のシューティングゲームなどでは、弾に当たったらゲームオーバー、といった特定の処理をする訳ですが、
物理エンジンの場合はそうは行きません。
衝突した場所だけならともかく、どの向きに当たったか、衝突した頂点と面の組み合わせはどれかなど、
膨大(そうでもないか)な量のデータを格納しなければならない訳です。
と、なぜ衝突検出だけこんなに書くのかというと、
正確にできてないからです。多角形同士の衝突判定、誰か・・・
・・・。
よく考えたらぜんぜん手法じゃないな・・・。
スポンサーサイト