Blender のリグでオイラー角とクォータニオンのどちらを使うべきか
肩や首のような XYZ のすべての軸で回転可能な関節ならばクォータニオン、前腕や車のタイヤのような1軸で回転するならオイラー角を使う。面倒ならすべてクォータニオンでも問題ない。
3軸で回転する場合にクォータニオンを使うのは、オイラー角の欠点であるジンバルロックを避けられるからだ。しかしクォータニオンには最小回転の法則があるため、それ以外ではオイラー角を使う。ジンバルロックは3軸のうちのひとつの回転軸が他のどちらかの回転軸と一致するだけで、1軸か2軸でしか回転しないなら関係がない。
2軸で回転する関節の場合はクォータニオンを使った方がいいことが多い。関節の可動域が大きい場合は、オイラー回転では正しく補間されないからだ。
クォータニオンの欠点
オイラー角の欠点であるジンバルロックは有名だが、クォータニオンの欠点である最小回転の法則はあまり知られていない。
クォータニオンの最小回転の法則
クォータニオンの最小回転の法則とは、常に最短距離で回転しようとするクォータニオンの性質からくる問題である。
例えばX軸まわりに 270° 回転させてキーを打ったとする。この時、正方向に 270° 回転させる方法と、負方向に 90° 回転させる方法と2種類の補完方法が選べる。このときクォータニオンは常に回転量が小さい方向に回転する。つまりクォータニオンで 270° 回転させてキーを打っても、再生すると反対方向に 90° 回転する。さらに 360 の倍数で回転させてキーを打っても全く回転しない。これはクォータニオンの回転量 W が-1~1の範囲しかとらないことが原因だ。
クォータニオンの最小回転の法則の対策
クォータニオンの最小回転の法則を避けるには以下の方法がある。
- 中間にキーフレームを打って回転させる
- 直接 W を指定する。このばあい-1~1を超える値を設定できる
- 回転用オブジェクトを用意して、回転用オブジェクトをオイラー角で回転させる。そしてその回転をコンストレイントの回転コピーやチャイルドを使い、クォータニオン回転のオブジェクトを回転させる
グラフエディタでクォータニオンの回転量を変更するには
クォータニオンの回転量は W である。ただし軸の角度(Axis Angle)のような直感的な回転量ではないことに注意する必要がある。軸の角度とクォータニオンの関係はMaths - AxisAngle to Quaternion(英語)を参照。
なぜ軸の角度(Axis Angle)が使われないのか
軸の角度(Axis Angle)は補間が非直感的で修正方法がない。たとえば逆回転(軸が反転する方向の回転)する方向にキーを打つとおかしな回転をする。
クォータニオンではWを直接入力することで 180° 以上の回転を表現できるが、軸の角度ではそれもできない。
回転方法の変更
ポーズモードでボーンを選択して、「回転モードを設定(Ctrl + R)」で一括でボーンの回転方法を変更できる。