Open Dynamics Engine ODEの学習

PyODEを使ってみると簡単だった。

連結の動きはBodyにMassを設定してJointで連結させ、ループでステップを進めていくだけ。重力はWorldに設定できるし、Jointに対して力を設定でき、それらがステップごとに計算されてBodyが移動する。

衝突を行う場合は、Spaceを用意し、Geomを設定すると、ステップごとに重なったGeom組のリストを検出できる(同じSpaceのGeomだけが衝突判定できる)。そこでそれらに対し、衝突用Jointで連結するとぶつかって反発した位置に行くようになる(複数個ぶつかってもJointで連動して計算される)。つまり、ステップを細かく取らないと擦り抜けてしまうかも。