日本でハリウッドVFXを制作! 「経産省アイディアボックス」 結果:  
●まとめエントリはこちら ●FAQ ●お問い合わせは左のメールフォームから

2009年4月1日水曜日

Melの弱点?! クォータニオン

仕事で鳥のリグに関する情報を集めている過程で見つけた
Realistic Modeling of Bird Flight Animations
というPDFファイルに見慣れない言葉があった。

3ページめの図。鳥の肩関節のところをみると「Quarternion joint」と書かれている。

鳥の肩関節は解剖学的にも人間の肩関節に相当するらしく、自由に回転する間接だ。

この関節のことをQuaternionと言うのだろうか?

調べてみるとQuataernionは日本では、「クォータニオン」とか「四元数」とよばれている。(wiki
wikiを見てみたがさっぱりわからない。
わかったのは回転の計算をするひとつの方法だと言うことだ。


続けてこの言葉を調べている内に、みつけたサイトが以下のサイト。
Maya Plugin for Dual Quaternion Skinning

「Dual Quaternion Skininng」というプラグインを紹介している。
このPluginはMayaSkinClusterDq 1.1.0と言う名前でHighend3dからも、ダウンロードできる。(windowsのみ)

とりあえずサイトの説明をみてみると関節部分の異常なゆがみがないらしいことはわかった。


他に、どこかのForumで「MelでQuaternionの回転はどうすればできるんだ?」という質問があった。
意外なことに答えは、「できない」
「Maxはスクリプトでこの機能にアクセスできるが、MayaはAPIレベルで処理しなくてはならないためMelではできない」という回答もあった。


簡単そうにおもえたが、意外なMelの弱点を発見してしまった。


--------------------
家に帰ってからも、さらに調べてみたところ、
産業技術総合研究所の 中田亨工学博士がわかりやすい説明をしていた。

70秒で分る、使える、四元数・4元数・クォータニオン・ Quaternionで回転

苦手な計算式は飛ばして拾い読みをしただけだが、
ジンバルロックなどのJointの回転に関する問題を解決するひとつの方法だということはわかった。

また、このページの「背景説明編」で、以下のように書かれていた。
(注意: 四元数は single rotation を回転軸と回転角度の情報で素直に表しています。
オイラー角は、一つの single rotation を、3つの single rotation に分解することで表そうとします。わざわざ複雑にしていると言えます。また、ジンバルロックの問題を引き起こす可能性を孕みます。)


実際、今回、肩関節をつくって試しにアニメーションした時にあるキーフレームから次のキーフレームへ移るところで、あり得ない角度で360度グルグル回転してしまいどうにも直すことができなかった。

おそらくこれがオイラー角による計算の限界(ジンバルロック)によって引き起こされたことだろう。


最初のPDFファイルにQuaternionと書かれていたのは、その書類がCGをつかった鳥のアニメーションについて解説してあるものだったので、「自由間接」ではなく「Quaternion」と言う言葉をわざわざ使い、「その計算方法を自由間接の計算に使う」という意味で書いてあったのだろう。

そして「Quaternion」、「四元数」といった言葉は解剖学的な物ではなく、回転を扱う数学的な物だった。


どちらにしてもMayaのもっていたジンバルロックはMelで簡単に解決できるものではないことはわかった。

最初に見つけたPluginもLinux版はないので仕事では使えないので、この問題に突き当たったらリグについて調べ直す必要があるのは確かだ。


オイラー角のジンバルロックの問題から生じるのであれば、それを解決するヒントは、先ほどの中田博士のサイトにも書かれている。
「ジンバルロックが生じる場合は例外的に処理しなければいけない」

プラグインを使わないでどのようにMayaの中でそれを処理すればよいかわからないが、いままで何百という「完璧に肩関節の動くキャラクター」が映画の中で活躍してきたわけだから、中にはプラグインや特別なソフトを使わない何らかの方法があるかもしれない。
 

0 件のコメント:

コメントを投稿