モーションを制作中に、肩や手首のカーブが急に乱れて困った経験はありませんか?
向きを少し調整したいのに、別の軸まで動いてしまう。そんなときは、ジンバルロックが原因かもしれません。
Rotate OrderやEuler Filterで改善できる場合もありますが、キーが多い状態では簡単に直せないこともあります。
今回は、そんな場面で役立つロケータを使った「グローバル化」について、ジンバルロックの仕組みや一般的な対処方法を紹介しながら、実際に私が作業の中で活用しているグローバル化の考え方や活用例について紹介していきます。
ジンバルロックはなぜ厄介なのか
回転軸が重なると何が起こる?

ジンバルロックとは、回転軸同士が重なり、意図した回転が行いづらくなる現象です。
Mayaの回転は「Rotate Order」と呼ばれる回転順序に従って計算されています。
しかし、特定の角度まで回転すると、本来は別々に動くはずの軸が同じ方向を向いてしまうことがあります。
すると回転情報が干渉し、
- 回したい方向に回せない
- 別の軸が意図せず動く
- グラフエディタのカーブが大きく乱れる
といった問題が発生します。 ジンバルロック自体は珍しい現象ではなく、キャラクターの腕や手首など大きく回転する部位では特に発生しやすいトラブルのひとつです。
ポーズは合っているのに、補間で動きが崩れる
ジンバルロックの厄介なところは、キーを打ったポーズでは気づきにくいこと
ポーズは狙い通りでも、キーの間で腕や手首が不自然に回転することがあります。
「軌道を少し整えたいだけだから」とフレームごとに修正していくと、キーが増えてカーブが読みにくくなります。
見た目は直っても、その後のタイミング調整やポーズ変更がしづらくなるんです。
特にモーションの仕上げ段階では、それまで積み上げた動きを崩したくありません。
原因に気づくのが遅いほど、修正する範囲が広がりやすいことが、ジンバルロックの厄介なところです。
まず試したい対処方法
回転をジンバル表示で確認する

Rotate Orderを変更する前に、まずどの軸でジンバルロックが発生しているか確認
Mayaでは回転ツールを「Gimbal」表示に切り替えることで、回転順序に応じた軸の状態を確認できます。
通常の表示では分かりづらい軸同士の重なりも、Gimbal表示にすることで視覚的に把握しやすくなります。
回転ツール選択後 | Ctrl+Shift+右ドラッグ
軸同士が重なって見える場合は、ジンバルロックが発生している可能性があります。
Rotate Orderを変更する際も、まずGimbal表示で現在の状態を確認して判断しましょう。
Rotate Order(回転順序)を変更する

Rotate Orderは回転の計算順序を決める設定で、変更することで軸同士の干渉が改善されることがあります。
Gimbal表示で軸の状態を確認しながらRotate Orderを変更し、動きに適したものを選びましょう。
コントローラー選択 | アトリビュートエディタ<回転順序
Rotate Orderの並び順について
Rotate Orderを選ぶときは、アルファベットの並び順にも注目してみましょう。
例えばRotate Orderが「XYZ」の場合、回転軸は内側からX、Y、Zの順に重なっています。
X軸を回してもY軸とZ軸は動きません。一方、Z軸を回すとX軸とY軸も一緒に動きます。
ジンバルロックに関係するのは、真ん中に置かれている軸です。
Gimbal表示でY軸を90度回転させると、X軸とZ軸が重なります。この状態では、X軸とZ軸を別々の方向として扱えなくなります。Rotate Orderを決めるときは、よく使う軸を最後に置き、90度近くまで大きく回す軸を真ん中から外すのがひとつの目安です。
ただし、適したRotate Orderは動きによって変わります。Gimbal表示で軸の重なりを確認しながら、そのモーションに合った順序を選んでみてください。
Euler Filterを適用する

グラフエディタ上で不自然に跳ねているカーブがあればEuler Filter
ベイク後に発生した不要な回転や反転を整理できる場合があります。
グラフエディタ | カーブ < オイラーフィルター
ただし、すべてのジンバルロックを解決できるわけではありません。
まずはRotate OrderやEuler Filterを試し、それでも改善しない場合に別のアプローチを検討するのがおすすめです。
Rotate Orderだけでは解決できないケース
すでに大量のキーが入っている場合

すでに多くのキーが設定されているアニメーションでは注意が必要!
Rotate Orderを変更すると回転の計算順序が変わるため、変更前と同じ動きを維持できるとは限りません。
特にキーが多く入った状態では、ポーズや軌道が大きく変化してしまうことがあります。
そのため、モーションの初期段階であれば有効な場合もありますが、終盤のブラッシュアップ段階では気軽に変更しにくいケースもあります。
リグや制作ルールの制約がある場合
Rotate Orderの変更は有効な対処方法ですが、後工程のことを考えると慎重に扱う必要があります。
複数人で作業する案件では、後から別のアニメーターがデータを触ることもあるためです。
特にポーズのコピーや流用が発生する案件では、回転順序の違いによって同じポーズにならないことがあります。
原因の調査やデータの修正が必要になるケースもあるため、Rotate Orderの変更は後工程への影響も考慮しながら行うことが大切です。
ロケータを使ったグローバル化とは
グローバル化の考え方
ここで登場するのが、ロケータを使った「グローバル化」という方法です。
グローバル化とは、ワールド空間上の動きとして扱えるようにすること
例えばキャラクターの手首を動かしている場合、肩や腕など親階層の影響も含めて最終的な姿勢が決まっています。
グローバル化では、その見た目の動きをロケータへコピーし、一度ワールド空間へ取り出します。
難しく感じるかもしれませんが、やっていることは「同じ動きをするロケータを作り、そのロケータ上で作業する」というシンプルなものです。
グローバル化を使うメリット

グローバル化の利点は、元のコントローラーを直接変更せずに調整できることです。
ロケータへ動きをベイクした後は、ロケータ側でRotate Orderの変更やカーブ整理を行えます。
メリットは大きく3つ
- 元のコントローラーのRotate Orderを変えずに調整できる
- 親階層の影響を切り離し、ワールド空間上のカーブを確認できる
- 任意の位置に回転の起点を作り、動きをシンプルに整理できる
ロケータ上で調整し、最後にベイクして戻せば、元のコントローラーの設定は変わりません。
後工程への影響を抑えながら作業できることが、グローバル化を使う大きなメリットです。
私が現場で使う場面
私は「動きの違和感の原因を探るための手段」としてグローバル化を活用することがあります。
モーションを確認していると、「動きがおかしい」「カーブを見ても原因が分かりづらい」と感じる場面があります。
そういった場合、一度ロケータへ動きを切り出して確認することで、親階層の影響なのか、回転値の問題なのかを切り分けやすくなります。
特にジンバルロックが疑われる場合は、ロケータ側で回転順序を変更しながら動きを確認できるため、元のコントローラーへの影響を抑えつつ問題箇所を調査できます。
ジンバルロックをロケータで解消する手順
実際の作業手順
ここでは、コントローラーの動きをロケータへベイクし、一度ワールド空間へ取り出します。
ロケータへベイクすることで、元の動きを保ったまま、ロケータ側のRotate Orderを変更できます。元のコントローラーの設定を変えずに、ジンバルロックを調整しやすい状態を作れるのがポイントです。
ロケータ上で回転やカーブを整えた後は、調整した動きをコントローラーへベイクして戻します。
工程は多く見えますが、流れは「ロケータへ移す・調整する・元へ戻す」の3段階です。

作業時の注意点
グローバル化自体はシンプルな作業ですが、いくつか注意しておきたいポイントがあります。
- Rotate Order変更後は必ず動きを確認する
- 使用するロケータは調整箇所の名前を付けて管理する
- データを他作業者へ渡す際は混乱しないようにデータを整理する。
ジンバルロックが解消されていても、意図していたポーズや軌道が変化している場合があります。
ロケータ側でRotate Orderを変更した場合は、グローバル化前後で意図した挙動になっているか確認が必要です。
まとめ
ジンバルロック対策の引き出しを増やそう
ジンバルロックが発生した際は、まずRotate Orderの変更やEuler Filterを試すのが基本です。
一方で、モーションの進行状況やデータの運用ルールによっては、それらの方法を使いづらいケースもあります。
そんなときの選択肢として、ロケータを使ったグローバル化を知っておくと対応の幅が広がります。
ジンバルロックに限らず、問題が起きたときに複数の解決方法を持っていることは大きな強みになります。
今回紹介した方法も、いざという時の引き出しのひとつとして覚えておいていただければ幸いです。

