Engine)講座の第6回目です。衝突検出機能について勉強します。今日、テレビでかわいいお化けの映画キャスパーをやっていました。スパーのように大地を突き抜けていったわけですが、今回はそれを止めてご覧にいれましょう。以下にソースコードを示します。前回のプログラムと違うところだけコメントを入れています。APIについては概要しか説明しませんので、詳細についてはODEの本家ウェブサイトのドキュメントをご覧ください。以下のコード上に(新党?)大地が出てきます。昔、党首の鈴木宗男に大きな会合でお会いしたことがあります。会場には数百人いましたが、全員に大きな声をかけながら握手をしたものすごいパワーを今でも覚えています。国会議員は違うのだと。ソースコードをさっそく読みましょう。同じstart関数は掲載していません。ボールオブジェクトを構造体で定義しました。衝突する2つのうちどちらかが大地なら大地の旗を立てます。衝突判定、これは一番最初に書くこと。0;}ODEでは動力学計算と衝突検出計算とは別々に実装されています。オブジェクトも動力学計算用のbody(ボディ)の他に衝突検出計算用にgeom(ジオメトリ)を設定する必要があります。うに定義していますね。main関数の中で玉オブジェクトのgeomをdCreateSphere()で作り、dGeomSetBodyでbodyとgeomを関連付けていますのでオブジェクトの位置と姿勢はbodyだけで設定すればOKです。これをしないと幽体離脱現象に陥ってしまいます。突検出関数dSpaceCollideはシミュレーションの各ステップで実行されるsimLoop関数の中で呼び出されています。ずsimLoopの一番始めで呼び出してください。これを後のほうにもっていくと玉が大地を突き抜けてしまいますよ。ルバックを呼び出しています。これを説明すると長くなりすぎるので今回はこの辺にします。ここからソースコードをダウンロードして実行してください。今度は大地を突き抜けないはずです。実行の仕方は前回とほぼ同じです。sample1をsample2と読み替えてください。sample2を実行すると大地が好きなのかどうかよくわかりませんがボールがまったく弾みません。この呪縛を解いてください。ここでは,ロボカップでは当たり前になっている3...odeODE講座2:インストール(Windows+MinGW編)ODE講座の2回目です。Engine)のインストールについて説明します。ダイナミクスエンジン)を学ぶODE講座の第13回目です。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。(3)タイトルとURLをコピーしました。