ボーンの回転順序を変更する

 
 
 

キャラクタをセットアップする際には、体の各部位(ボディ パーツ)に対してボーンをどのように回転させるのかを考慮する必要があります。これにより、各部位に適切な回転順序を指定できるようになります。ボディ パーツによっては、デフォルトの回転順序(X→Y→Z)を使用できます。しかし、デフォルト回転順序ではジンバル ロックが発生し、他の回転順序なら問題が発生しないパーツや動きも存在します。

ジンバルロックとは、2つの回転軸が重なった時にオイラー角で発生する状態です。回転中に角度が補間されたときに、角度が急に変わる場合があります。

ボーンの回転順序を変更するには

  1. ボーンを選択します。

  2. [Ctrl]+[K]キーを押して、ボーンの[Local Transform]プロパティ エディタを開きます。

  3. [SRT]ページで[回転](Rotation) [オーダー](Order)オプションのいずれかを選択し、ボーンがその親のX、Y、および Z 軸を中心に回転する順序を制御します。

    以下のセクションを参照して、ボーンに最適な順序を決定してください。

回転順序を決定する

ボーンの回転順序を決定するには、ボーンの回転値を 0 に設定したニュートラル ポーズのスケルトンから始めます(「スケルトン用のニュートラル ポーズを作成する」を参照)。次に、スケルトンで最もよく使用する動きでスケルトンのポーズを開始し、問題を起こしそうな場所を確認します。

また、XYZ 軸を動きのタイプ(屈曲/伸長、内側/外側、外転/内転)に割り当てることにより、最も有効な回転順序が明確になります。通常、メインとなる動きは 1 種類です。メイン動作に割り当てた軸が最後に回転されれば、他の軸の影響を受けずに済みます。

たとえば、腕の上腕骨を XYZ で回転した場合と YZX で回転した場合を比較してみましょう。XYZ の回転順序では、次のような問題が発生します。

  • X は上腕部をねじるため、多くの場合は有効ではありません。

  • キャラクタの両脇で休ませている腕を回転させる場合は、Z と X の回転でジンバル ロックが生じます。

  • 腕を前後に振る動作を FK でアニメートすることが困難になります。

ここで、X を回転順序の最後に設定すれば、キャラクタの歩行/走行時に腕を前後に振る動作を X 軸でアニメートできます。X を最後に設定することは、振り軸が決して変わらないことも意味します。振りは肩で決定されるため、振り軸が変わることはまずありません。

X が適切に動く一方で、Z および Y も適切に動きます。

  • パンチをしたときの腕の振りのような、内側から外側(またはその逆)にシフトする動きでは、Z を使用すると自然になります。

  • 上下運動には Y が使用されます。上下運動は通常、肩筋肉をより屈曲することで起こるかなり意図的な動きです。上下の動きは、前後または内側/外側の動きとともに変わりやすいため、Y を最初に回転させるとよいでしょう。

このように、キャラクタの動きを分析した結果、YZX が上腕骨のアニメーションに最適な回転順序であることがわかります。

ジンバル ロックを回避する

ジンバル ロックを回避するために、ボーンの回転順序を変更する方法がいくつかあります。

  • キャラクタ リグをセットアップする場合は、Chain Root の位置を最初のボーンに合わせ、ボーンの回転順序を ZXY または YXZ(デフォルトの XYZ 以外)に設定します。2 番目に回転させる軸(ジンバル ロックを起こす X)は、最も使用頻度の少ない回転(つまり、ボーンに沿う回転)に割り当てます。

  • 1 つの軸にを中心にオブジェクトを回転させるだけでよい場合は、その軸に合わせて軸の順序を変更します。つまり、Y 軸を中心にオブジェクトを回転させる場合は、軸の順序を YZX に変更します。

  • 2 つの軸にを中心にオブジェクトを回転させる場合は、それの軸が最初の軸および最後の軸になるよう順序を変更します。つまり、X 軸と Y 軸を中心にオブジェクトを回転させる場合は、軸の順番を XZY に変更します。

  • また、軸の回転順序を変更するほか、回転角をオイラー角からクォータニオンに変換することもできます。クォータニオン回転角を使用すると、スムーズな補間が行われ、ジンバル ロックを回避できます。

    詳細については、「回転をアニメートする」(「アニメーション」)を参照してください。