MayaでRiggingのjoint orient(ジョイントの方向づけ)の項目を書いていましたが、その前にジンバルロック(Gimbal Lock)とRotate Order(回転順序)の説明必要だと気づいたのでこちらの記事を先にあげます。
ジンバルロックを避けるための方法として
- Rotate Orderを変更する
- レイヤーを分けるように軸ごとに親子関係の階層構造をつかって回避する
といった対処方法がよく知られていますが、本質的にはこの2つは同じことです。
ジンバルロック(Gimbal Lock)とは

上の動画のように軸が重なってしまい、ない軸の方向には動かせない状態のことです。
上のようなモデルを準備しなくても「Tool Settings」の「Axis Orientation」を「Gimbal」に設定すれば同じようなことを確認できます。
リングの大きさが違うのはちゃんと意味があります。地球ゴマと同じです。また、オールドゲーマーには懐かしいセガの体感ゲーム「R360」を思い出します。
この「R360」は当時池袋のサンシャイン60の一番奥にある大きなゲームセンター(大きなゴリラ(の上半身)が名物でした。今はありません)に置いてあったのを並んで一度だけプレイしました。私がプレイしたのは「GーLOC」でした。
今もお台場のジョイポリスに行けば体感できるようです。興味のある方はぜひ。
Rotate Order(回転順序) とは
Rotate Order とは回転順序のことです。
上の動画のRotate Orderは「XYZ」です。Mayaのデフォルトと同じ設定になっています。

上の動画のモデルのハイパーグラフはこのようになっています。
「rotate_Z」の輪が階層最上位の親で、その下に「rotate_Y」、その下に「rotate_X」という構造です。つまり、Rotate Orderの「XYZ」とは逆の「ZYX」になっています。
ということはX軸は親であるY軸とZ軸の影響を受けてしまいます。Y軸は親であるZ軸の影響をうけてしまいます。Z軸は他の軸の影響を受けません。
要するに
「Rotate Orderの並び順の一番後ろ(右)の軸が最も強い(他から影響を受けない)軸」
だということです。
Rotate Order は後ろ(右)から見よう
Rotate Orderは一番後ろ(右)が最も強いので後ろからの並び順をチェックしたほうがわかりやすいです。
つまり、「アニメーションで最も使われる軸を一番後ろ(右)になっているRotate Orderに設定すればジンバルロックが起きにくい」ということです。
あくまでも起きにくいだけなので、縦横無尽に回転するようなものにはあてはまりませんが覚えておく価値はあります。
R360のRotate Orderを推測する
この「R360」の動画を見てRotate Orderを推測してみます。
まず、人が乗り込むところが空いているのでYaw(ヨー(Y軸))の動きは360度回転できないので一番弱い(一番前(左))と推測します。Pitch(ピッチ(X軸))の動きが最も激しくグリグリ回っていたので一番強い(一番後ろ(右))と推測します。Roll(ロール(Z軸))も結構動いていますが、メインの動きはPitchと考えてよいでしょう。
よってR350のRotate Orderは「YZX」だと推測できます。
Quaternion(クォータニオン)
ジンバルロックを起こさない方法としてはQuaternion(クォータニオン)があります。
クォータニオンとは文系の私では難しすぎて説明できません。興味のある方はご自分で調べてください(笑)。
簡単にいえば、ジンバルロックを起こさない回転の補間方法です。
クォータニオンでは回転のスタート地点からゴール地点までの回転の補間をするときに、基本的には最短距離でゴールに到達するよう補間します。

このアニメーションは軸が重なりやすいようにX軸とY軸がともに0度から90度になり、もとに戻るというものです。オートタンジェントのイーズインイーズアウトが入っています。

このようにオイラー角(普段のアニメーションで使っている方法)をクォータニオンに変換すると軌跡が変わってしまいます。スペーシングも変わってしまいました。

オイラーのアニメーションカーブをグラフエディターのメニューの「Curves > Change Rotation Interp > Quaternion Tangent Dependent」に変換するとこのようにタンジェントをいじれない摩訶不思議なアニメーションカーブになります。
このようにアニメーションをクォータニオンでつけるということはありません。特にこれでレイヤードアプローチは出来ません。

このようにアニメーターはクォータニオンのことを知らなくても全く問題ありませんが、プログラマーとコミュニケーションをとるときに知っていると役に立つかもしれません。
ゲームなどでポーズの補間をするときにこのクォータニオンを使います。例えばサマーソルトキック(回転する攻撃なので)打った後に待機モーションに移る際に手首や足首がクルッと1回転してしまう場合があるかもしれません。それはクォータニオンの補間が上手くいっていないからです。
今回の記事が気に入っていただけた場合、ぜひとも他の記事もチェックしてみてください。Mayaのリギングに関する記事をまとめたページです。




コメント