2012年

4月

06日

IKソルバの実装を本格的に始めただけ

というわけでIKの実装を始めました。

 

思えばXNAでMMD読み込み【アニメーションの実装 Part4】から一年も経ってしまったわけですが・・・色々あってようやく手をつけることが出来ました。

 

IKのアルゴリズムは頭に入っているんですけど、それをプログラムに直すのにちょっと手間取ってしまいました。計算式もあっているのかはわかりませんが・・・

 

以下のサイトを参考にさせていただきました。

CCD-IK and Particle-IK

MMD on WebGL 踊れるようになった(あと IK について)

↑特にコチラのサイトには大変お世話になりました。非常に分かりやすい説明をされていて理解しやすかったです。ありがとうございます。

 

IKの計算アルゴリズムは色々と有るようです。私が参考にしたサイトでは『サイクリック コーディネイト ディセント(CCD)法』、『パーティクル インバース キネマティクス(PIK)法』というものがありました。

 

今回は前者のCCD法を使用しました。というか、MMDのIKパラメータを使うにはCCD法でないと計算できないようです。

 

サンプルコードがありましたけど、ソースを丸コピでは芸が無いのでアルゴリズムだけ参考にさせていただきました。

 

動かすとこのようになりました。↓

だいぶマトモになりました。

 

ボーン毎のIK回転制限をしていないのでひざボーンがあらぬ方向へ曲がってますが、それ以外のボーンはMMD従来のものと同じ位置に計算されていると思います。

 

あとはボーン個別に回転制限を入れればIK導入は終わりそうです。頑張ろう!