Table Of Contents

Previous topic

スキニングへの道 その2(スキニング)

Next topic

スキニング高速化

This Page

IK解決

CCD-IK。 VMDのIK再生。 http:part10.html

2次元のIK

まず、練習に2次元のシンプルなボーンに対するIKを実装して仕組みを理解する。

IKに必要な要素 * IKで動くボーン(エフェクタ) * エフェクタの親ボーンでIKによりエフェクタと一緒に動くボーンたち(IKチェイン) * エフェクタの移動目標(ターゲット)

今回は原点から生えた4連続のボーン末端をエフェクタとし、その3つの親ボーンをIKチェインとする。ターゲットはマウスカーソルとする。IK解決のアルゴリズムはCCD-IKを使う。

<%= source_view(‘src/IK2D.py’) %>

RotTransクラスは回転と移動をまとめたクラス。目的は逆行列の計算を簡略化すること。 回転行列と移動行列の積であることが分かっている場合は、3x3回転行列とx, y, zの移動の組み合わせで以下のように書くことができる。

__TEX__ left(begin{array}{cccc} r_{00} &r_{01} &r_{02} &0 \ r_{10} &r_{11} &r_{12} &0 \ r_{20} &r_{21} &r_{22} &0 \ x &y &z &1 \ end{array}right) = left(begin{array}{c|c} R &0 \ hline L &1 \ end{array}right)
これの逆行列は
__TEX__ left(begin{array}{c|c} R &0 \ hline L &1 \ end{array}right)^{-1} = left(begin{array}{c|c} R^{t} &0 \ hline (-L)R^{t} &1 \ end{array}right)

となるのでまじめに4x4の逆行列を作らずに済むという寸法。

inserted by FC2 system