PythonによるOpen Dynamics Engine講座 その5
落ちる球の描画


例の如くサンプルプログラムはここにあります。今回はPyOpenGLとPyODEを組み合わせて落ちる球を描画します。

まず、最初のworld = ode.World()、apple = ode.Body(world)とinit_GL()内のcreate_sphere()で動力学計算の世界の生成、重力の設定、剛体の生成、剛体の質量の設定、剛体の位置の設定をやってます。

apple.MASS、apple.sphereRadiusですが、これらは僕が勝手に付け加えたメンバでode.Bodyで定義されてあるメンバではありません。これはC言語ではできないはずです。こうすることでappleは質量と半径のデータを持つことができます。

次にOpenGLの設定をなんやかんややって、あとはglutMainLoop ()です。

動力学世界の更新は_idlefunc()でやってます。

t = dt - (time.time() - lasttime)
if (t > 0):
time.sleep(t)

は前回の更新からかかった時間がサンプリングタイムdt以下のときはその分待つという意味です。
こうすることで、設定したサンプリングタイム以上のスピードで描画されることはなくなります。
こうしたあとにworld.step(dt)で動力学世界の更新をします。

あと、draw_body(body)ですが、bodyには剛体appleをいれます。body.getRotation()は剛体の姿勢を取得します。あとはglutSolidSphere(body.sphereRadius,16,16)で球を描画します。

次回は地面との衝突をやります。


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

トップページへ戻る