PythonによるOpen Dynamics Engine講座 その12

円柱、カプセルの作成


サンプルプログラムはここキー操作のときのプログラムをいじくってます。


円柱のボディ、ジオメトリ

円柱のボディ、ジオメトリを作成するのはdef create_cylinder(self, dn, l, r ,px, py, pz, Mass):です。引数は円柱の長軸方向、長さ、半径、位置x,y,z、質量です。流れは直方体を作ったときと同じです。mass.setCylinder(mass ,dir ,r ,l)の引数は構造体mass,円柱の長軸方向dir(x軸:1、y軸:2、z軸:3)、半径、長さで、ode.GeomCylinder(space, r, l)の引数は衝突計算スペース、半径、長さです。


カプセルのボディ、ジオメトリ

カプセルのボディ、ジオメトリを作成するのはdef create_capsule(self, dn, l, r, px, py, pz,Mass)です。引数はカプセルの兆軸方向、長さ、半径、位置x,y,z、質量です。mass.setCappedCylinde(mass ,dir ,r ,l)とode.GeomCapsule(space, r, l)の引数は円柱と同じです。両端の半球も含めるとカプセルの全長は長さ+半径×2になります。


あと、球を作成するcreate_sphere(self, r, px, py, pz, Mass)も付け足しました。


円柱の描画

drawbody()のmyCylinder(r, l, dn)で描画してます。引数は半径、長さ、長軸方向です。今回からself.bodies[i].shapeが"box"、"sphere"、"cylinder"、"capsule"のどれかによって形状を判別できるようにしています。基本的な流れとしては、

  1. 長軸方向がどれかによって上面、底面、側面の描画を判別する。
  2. 上面を描画。
  3. 底面を描画。
  4. 側面を描画。

カプセルの描画

myCapsule(r, h, dn)で描画しています。引数は円柱と同じです。基本的流れとしては、

  1. 円柱の描画
  2. 円柱の端に球を描画。
  3. 逆の端に球を描画。

次回はボールジョイント、スライダージョイント、ヒンジ2ジョイント、ユニバーサルジョイントの作成をやります。


PythonによるOpen Dynamics Engine講座に戻る

トップページへ戻る