デュアルクオータニオン

興味があったのでデュアルクオータニオンをやってみました。

http://monsho.hp.infoseek.co.jp/files/sample81.zip

デュアルクオータニオンは2つのクオータニオン四元数)で回転と平行移動を表したものです。

積算もできるし、ブレンドもできます。

最終的には行列に変換して使用するため、計算量は増えてしまいますが、ブレンドを行った場合の品質が通常の頂点ブレンドより良い場合があるとか。

普通、ボーンによるアニメーションは補助ボーンを入れる場合が多いです。

たとえば、腕にボーンを入れる時に肩から肘までと肘から手首までの2本のボーンだけで腕を動かすと、動き方によってはおかしな具合になってしまう場合があります。

これを防ぐために補助ボーンを使います。

補助ボーンが入ればその分ボーンの計算が重くなってしまうし、それを使った制御もそんなに簡単ではないのかな、と。

で、デュアルクオータニオンを使うと、補助ボーンなしでも結構いい感じに動いてくれる…らしい。

計算量が増えるので一概に良いとは言えませんし、何よりスケールを挿入できないという問題点もあったりします。

スケールなしのボーン計算という制約はあるものの、注目されている技術なのは事実です。

最初のサンプルがそれ。起動直後は通常の頂点ブレンドですので、タイプを変更してみてください。

これだけ見ると良いのかどうか何とも言えないですね。キャラクタモデルの肩とかを動かしてみた方がわかりやすいかもしれません。

XSIではデュアルクオータニオンが使えるらしいです。Mayaは次で使えるようになるとか。MAXは知らない。

もう1つ。PSSMをフロー制御を使ってレシーバ描画を1回にしてみました。

http://monsho.hp.infoseek.co.jp/files/sample79_flow.zip

速度は測ってないので何とも言えませんが、4回描画するよりは速い…かも。

ピクセルシェーダの命令数が増えるので結構微妙かもしれませんね。