fc2ブログ

Javaゲーム制作記

いろいろ作ってます  

シミュレーション手法

今回は、JPR2のシミュレーション手法について解説していきます。
また、間違いがあるかもしれませんがご了承ください(・・;)
JPR2は、計算を繰り返すことによって、動きを再現しています。
たとえば、

1、物体の衝突を感知、データを格納するクラスを作る。つまり衝突検出
2、1を全ての物体で行う。
3、格納されたデータをコンタクトリストに追加。
4、コンタクトリストのデータを処理する。つまり衝突応答

4のときに計算を繰り返します。
物理演算空間は巨大な連立方程式ですので、反復法で計算するのです。

さらに、実は物理エンジンは、ソースコードのほとんど(8~9割)を衝突検出と衝突応答に当てています。
中でも面倒なのが衝突検出です。

何故かというと、衝突応答は格納されたデータ(衝突した物体、衝突点、反発係数、摩擦係数、衝突法線、衝突接線、相対速度、めり込み距離、etc...)
からそれぞれの衝突後の物体の速度を計算するだけです。
つまりデータが正確に分かればどんな複雑な形状の物体でも正確に判定できるという訳です。

そしてそのデータを調べるのがが衝突検出の役割です。
つまり、衝突検出といっても、衝突を感知するだけではNGな訳です。
普通のシューティングゲームなどでは、弾に当たったらゲームオーバー、といった特定の処理をする訳ですが、
物理エンジンの場合はそうは行きません。
衝突した場所だけならともかく、どの向きに当たったか、衝突した頂点と面の組み合わせはどれかなど、
膨大(そうでもないか)な量のデータを格納しなければならない訳です。


と、なぜ衝突検出だけこんなに書くのかというと、
正確にできてないからです。
多角形同士の衝突判定、誰か・・・

・・・。
よく考えたらぜんぜん手法じゃないな・・・。
スポンサーサイト



[ 2009/09/22 10:51 ] 物理演算 | Comment(2)

新ベクトル演算クラス公開

かつて公開した、ベクトル演算クラスを改良しました。
今回は2Dベクトルです。

~実装されている機能~
・ベクトルの加減乗除
・ベクトルの内積、外積
・ベクトルの回転(行列は必要としません)
・ベクトルの正規化(ノーマライズ)
・長さを取得
・etc...

ソースは長いので続きからどうぞ。
[ 2009/09/18 10:45 ] ゲーム制作 | Comment(0)

自作物理エンジン「JPR2」、ついに完成!!

物理エンジン(JPR2)が、ついに完成しました!

新しくなったところ

・5倍近く軽くなった!
・摩擦係数&反発係数を変えてもちゃんと動く!
・FPS計測機能つき!
・円と矩形との当たり判定ができるようになった!

とりあえずDemo

クリックするとボールが出現します。


Cキーを押す:接触点を表示します。
Aキーを押す:AABBを表示します。
AABBとは、矩形(または円)を一番小さい回転なしの矩形で表したものです。
バウンディングボックスとも言います。
見ていただくと分かるように、このAABBが重なっていない場合は、精密な判定は不要です。
かなりのコスト削減になります。

とりあえずは完成です。
やったー
[ 2009/09/14 18:16 ] ゲーム制作 | Comment(2)

3000突破!

3000アクセスを突破しました!
といっても二重カウントありではありますが・・・

追記:
やっぱり二重カウントがオンだったようです。ついこの間気づきました(・・;)
勘違いしていました・・・
[ 2009/09/10 16:10 ] 未分類 | Comment(4)

物理エンジン

実は最近ゲームの館のほうが更新が途絶え気味です・・・。

更新サボって物理エンジンを作ってます(´∀`)
作っては消し作っては消し・・・
なので、



そろそろEclipseが・・・










臨界状態です
消そうかなーいややっぱり勿体無いかなーのループが永遠に回り続けてます。


しかし最近Eclipseがよく「応答なし」になります。

応答なしになるとき

・起動直後

・新規パッケージ、クラスを作ろうとしたとき

・パッケージを開いたとき

・エディターを開いたとき

・クイック・スフィックス発動時

・デバッグ開始時

・終了しようとしたとき

・その他、Eclipseの気分次第で


さすがにキツいです。
誰か対処法を知ってたら教えてくださいO| ̄|_


Eclipse臨界のお知らせでした。
[ 2009/09/05 11:04 ] 物理演算 | Comment(4)
プロフィール

saharan

Author:saharan

Twitter
検索フォーム