2015年5月23日土曜日

【Tips】回転の補間について

CGで回転を補間する方法は一般的に2種類あります。
1つはオイラー補間。もう一つは球面線形補間です。

オイラー補間というのはキーとキーの間をFカーブの形状通り補間する方法で、XYZの数値で決まる姿勢を補間するものです。
さらに細かく言うと、XYZの順番、いわゆるRotationOrderが変わると同じキーフレームでも補間するとき動きが変わります。

上記図は全て同じキーフレームアニメーションですが、RotationOrderが違うことで動きが微妙に違っています。


RotationOrderというのは、X軸を計算して次にY軸を計算して最後にZ軸を計算するというように計算する順番を決めるものです。



次に球面線形補間です。これは英語で書くとSlerp。
簡単に言うと、クォータニオンを使って最短距離で補間するというものです。

MBでこのSlerpを使うのは簡単です。
Propertiesの中のQuaternionRotationにチェックいれるだけです。



この時に注意しないといけないことが、Slerpで補間する方法はいつでも最短距離で補間するということなので、キーフレームで2回転、3回転するように大きい値のキーを打っても、少ししか回転しないということがあります。

下図では、両方とも1回転半(540°)回転するようにキーフレームが打たれています。

青い方はキーフレーム通り1回転半(540°)回転していますが、
赤い方は0度から540度の姿勢の最短距離を補間。つまり、180度しか回転していません。


それぞれのメリット、デメリットを私の経験から書くと以下のようになります。
【オイラー補間のメリット】
・サイクルアニメーションを付けやすい
・XYZの値通りの姿勢になるので直感的

【オイラー補間のデメリット】
・がたついたアニメーションを修正しづらい

【Slerpのメリット】
・最短距離で補間されるので、意図してない動きになりづらい

【Slerpのデメリット】
・サイクルアニメーションが付けづらい
・何回転もするようなアニメーションがつけれない

それぞれの補間の仕方にはメリット、デメリットがあるので適材適所で選択していければ
アニメーションのコントロールがしやすくなる分、試行錯誤の時間が稼げると思います。