3Dだったらやっぱり行列まわりのライブラリ欲しいよねぇと思って,どうせなら物理エンジンで使ってるやつを使っちゃおうかな,ということでODEをいじってみる.調べた感じでは四元数を覚えた方が良い?あと,ODEだけでも必要な分は描画できるかも.内部でOpenGL使ってるらしいので,物理エンジン+OpenGLに結果的になってるけど.
うちのノートパソコンでもきちんと物理エンジンが動くのを確認して一安心.重力方向も鉛直方向以外をセットできることを確認した.
- Wiiコンに合わせてフィールドを動かす場合
- フィールドの各構成要素に対して移動先などを計算する必要がある
- もしかしたら,フィールドにパーツを固定することで,フィールド動かすだけで良いかも
- 要確認:フィールド上にパーツを固定できるか
- Wiiコンに合わせて重力方向を変える場合
- ボール以外は基本的に動かさずに済むので,処理の軽減が可能.
- 傾きの表現のためにカメラの方を動かす必要がある
- 要確認:動的に重力方向が変更可能か・重力や衝突で移動しない物体が設定可能か
ぶっちゃけ,傾きの計算とか面倒なので,動的に重力方向を変えられるならその方向で行くことにした.
ODE本は5月中旬に出るらしい.ゴールデンウィーク前だったら嬉しかったのだけど仕方がない.
///////////
dBodySetGravityMode(BodyID, 0)で重力の影響オン
dBodySetGravityMode(BodyID, 1)で重力の影響オフ
dBodyDisable(BodyID)で物理シミュレーションオフ.ただし,何かとぶつかればシミュレーションを再開する模様.
dJointSetFixed(JointID)で固定するしか方法ないのか?毎回dBodySetPosition呼ぶのも嫌だぞ.