Engine)初級講座の7回目です。今回は,ボディ(剛体,body)を他のボディとくっつけるジョイント(関節)について説明します。ジョイントは我々の周りでは、折畳み携帯のヒンジやドアの蝶番に相当します。小難しくいうと、2つのボディの位置や姿勢をある一定の関係に保つ拘束がジョイントとなのです。ODEではジョイントと拘束を同じ意味で使っています。ジョイントをうまく使うと物体の運動を直線上に拘束させたり、円軌道に拘束させたりすることもできます。dJointSet***Axis()上で***にはジョイントのタイプが入ります。タイプにはHinge(ヒンジ)、Ball(ボール)、Slider(スライダー)、Universal(ユニバーサル)等があります。詳しい使い方はManual(英語)やODE本を参照してください。最大トルク);パラメータとしては、関節可動域の下限を示すdParamLoStop、上限を示すdParamHiStop、角速度(ヒンジジョイント)または速度(直動式関節)を示すdParamVel、最大トルクを示すdParaFMaxなどがあります。ODEでは関節にモータが標準で組み込まれているので、dParamVelやdParaFMaxを指定すると関節が動きます。サンプルプログラムさっそく上図に示している玉と円柱をヒンジジョイントで結合しているオブジェクトがバウンドするソースコードを以下に示します。前回までと同じ関数や宣言は省略しています。simLoopはこのソースではわからないがwhileループに入っていて、シミュレーションの各ステップで実行される。}この例では玉と円柱のボディをヒンジジョイントで結びつけています。ソースコードを読みましょう。生成し、dJointAttach()で2つのボディをヒンジジョイントで結合します。この例では回転軸ベクトルは(1,0,0)なのでx軸方向となります。詳しくはマニュアルを参照。これでジョイントの生成は終わりです。sample7は簡単のためにジョイントのパラメータを設定しませんでしたが、可動域や最大トルク、最大角速度の設定なども可能です。次からサンプルプログラムをダウンロードして遊んでください。サンプルプログラム7なお、説明でわかりずらい箇所や質問があればコメントを投稿してください。dJointGroupID)worldにヒンジジョイントを生成し、そのID番号を返す。dJointGroupIDには0を入れる。z)ヒンジジョイントの回転軸の中心点(x,y,z)を設定する。z)ヒンジジョイントの回転軸ベクトル(x,y,z)を設定する。人気記事ODE初級講座ホーム検索トップサイドバータイトルとURLをコピーしました。