【Unity】アニメーションクリップのプロパティを理解する
以前の記事で「Loop Matchインジケータ」について触れた際に、さらっとアニメーションクリップのプロパティについて扱いました。よろしければ以下の記事も合わせてご覧になっていただけると幸いです。
【Unity】Blenderで作成したアニメーションのループをスムーズにする方法
今回は各種プロパティについて検証、解説を行い理解を深めていこうと思います。
*アニメーションクリップを用いた簡単なアニメーション作成については以下の記事をご覧ください。
【Unity】アニメーションクリップを用いてオブジェクトを動かす方法
本稿は以下の記事様を参考にさせていただいております。
UnityのAnimationClipのルートモーションの設定
本稿はユニティちゃんライセンス条項の元に提供されています。
Contents
下準備
今回は以下のアセットに含まれているアニメーションクリップを用いています。
比較のためアニメーションを入れて動かすオブジェクトを2つ用意します。今回はUnityちゃんを2人並べて配置します。
次にアニメーターコントローラーを2つ用意します。追加手順はProjectウィンドウより[Create]->[Animator Controller]の手順です。
詳しい使用方法は以下の記事をご覧ください。
【Unity】Animator Controllerを用いたアニメーション切り替え方法
アニメーターコントローラー内の構成は以下の通りです。
今回は基本的にUnityちゃんNo.1のプロパティを調整して検証を行っていきます。
Loop Time
「Loop Time」は名前の通りアニメーションをループさせるものです。
チェックを入れた方のみループ変遷しています。
*LoopTimeの効果をわかりやすくするためアニメーターコントローラーにおける、Transitionの「Has Exit Time」を外しています。
Loop Pose
続いて「Loop Pose」です。これはアニメーションのループ変遷を滑らかにするものです。
Unityちゃんのがループ変遷する際の顔の向きに注目してみてください。No.1のループ変遷の滑らかさがわかると思います。
Cycle Offset
アニメーションを特定のタイミングで始めたい場合こちらの数値を設定します。
数値の範囲は「0~1」です。今回は0.3で設定しています。
アニメーションが30%程変遷した時のポーズがスタートの状態であることが確認できます。
Root Transform Rotation
アニメーションの回転の制御に関するプロパティです。
Bake Into Pose
「Bake Into Pose」にチェックを入れるとオブジェクトの向きが、アニメ―ションによる回転に左右されなくなります。
「Loop Time」の例でもお気づきの方もいらっしゃるかもしれません。角度の付くアニメーションをループさせた時、「Bake Into Pose」で固定しない限り、アニメーション終了時のポーズ角度から次のアニメーションをスタートさせます。
注意して設定を行いましょう。
Based Upon・Offset
「Based Upon」はルートが何に基づいて回転していくのかを設定するものです。
- Original→アニメーションクリップの設定通り
- Body Orientation→ボディの前方ベクトルに合わせる
No.1の方がボディを前方に向けることを最優先にしているため少し傾いていることがわかります。
「Offset」はルートの回転のオフセット値です。設定するとオブジェクトがその角度分向きを変えた状態でアニメーションがスタートします。
Offsetを「90」に設定したものが以下の通りです。
UnityちゃんNo.1が90°向きを変えた状態でアニメーションが開始していることがわかります。
Root Transform Position(Y)
「Root Transform Position(Y)」はアニメーションにおけるY軸座標上の制御に関するプロパティです。シーンビューでは少しわかりづらいのでアニメーションクリップのサンプル画面も交えて確認していきます。
Bake Into Pose
チェックを入れるとアニメーションの基準点が固定され、アニメーションによるY軸座標の変化がなくなります。
見た目上はオブジェクトが縦に移動しているように見えても、ルートポジションは0のままです。基準のポジションが変わることはありません。
サンプル画面で確認してみます。
*基準点はオブジェクトの下にあるサークルのことを指します。
「Bake Into Pose」が有効化されている場合は基準点は変化しません。無効化されている場合はオブジェクトと一緒に基準点も変化していることがわかります。
ループアニメーションをつくっているとアニメーションが上下に逸れていったりするケースがあります。そういった際に有効化するとアニメーションの矯正ができます。
高さが変化するアニメーション(ジャンプ等)を制御する際はチェックを外しておくといいでしょう。というのは仮にコライダーがついていた場合、思わぬあたり判定が発生してしまう恐れがあるためです。
オブジェクトはよけているように見えても、コライダーの高さは変わらないためです。
Based Upon・Offset
「Based Upon」はY軸座標の基準点が何に基づいているかを設定するプロパティです。種類としては以下の3つです
- Original→アニメーションクリップのデフォルト設定
- Center of Mass→重心
- Feet→足元
「Offset」はアニメーションクリップの高さを調整できます。
-1で上方に+1で下方に位置が変化していくので注意して設定して下さい。
Root Transform Position(XZ)
「Root Transform Position(XZ)」はアニメーションのにおけるX,Z軸座標上の制御に関するプロパティです。ここでもアニメーションクリップのサンプル画面を確認していきます。
Bake Into Pose
有効にすると、Y軸同様アニメーション基準点が固定され、アニメーションによるX,Z軸座標の変化がなくなります。
Y軸の時と同様に、見た目上はオブジェクトが移動しているように見えても、ルートポジションは変化しません。
サンプル画面で確認してみます。
これもY軸の時と同様に、Bake Into Poseが有効化されている場合は基準点は変化しません。無効化されている場合はオブジェクトと一緒に基準点も変化していることがわかります。
アニメーションをループさせてみるとわかりやすいです。
基準点が変わらない場合は、1回1回初期位置に戻ってアニメーションループを行います。それに対し基準点が変化し続ける場合はオブジェクトが前方に進み続けていることが確認できます。
Based Uponの種類はRoot Transform Position(Y)と同様です。
Mirror
Mirrorはその名の通りアニメーションを反転するプロパティです。
UnityちゃんNo.1とNo.2がそれぞれ対称のアニメーション変遷を行っていることが確認できます。
まとめ
いかがでしたでしょうか。今回はアニメーションクリップのプロパティについてご紹介してきました。
各プロパティについて1つ1つ紹介してきましたが、もちろん組み合わせて効果を発揮するケースも多く存在します。
アニメーションに違和感を感じた際には今回ご紹介したプロパティの調整を行ってみてください。意外と簡単に問題が改善されるかもしれません。
この記事はいかがでしたか?
もし「参考になった」「面白かった」という場合は、応援シェアお願いします!