Featherstoneのアルゴリズム
関節でつながった物体の連鎖の動力学を線形時間で計算するアルゴリズムで、ラグドールの腕が肩から抜けずに済んでいる理由の一つ。
Roy Featherstoneは1983年に、ロボットアームを念頭にArticulated Body Algorithm(多関節体アルゴリズム)を発表した。素朴な解法は質量行列を組んで逆行列を求めるため、関節数nに対してO(n³)かかる。Featherstoneの方法は連鎖を端から端へ往復するだけで同じ答えをO(n)で得る。物体は自由な位置ではなく関節角、つまり縮約座標で表現されるので、構造上、関節が離れることがない。
ゲームエンジンの多くは、ラグドールを拘束で束ねた自由な剛体として扱う。安価だが、負荷がかかると伸びてしまう。PhysXのアーティキュレーションやBulletのbtMultiBodyは、それを避けるためにまさにFeatherstoneの手法の上に作られている。