【Unity】アニメーションクリップのプロパティを理解する


以前の記事で「Loop Matchインジケータ」について触れた際に、さらっとアニメーションクリップのプロパティについて扱いました。よろしければ以下の記事も合わせてご覧になっていただけると幸いです。

【Unity】Blenderで作成したアニメーションのループをスムーズにする方法

今回は各種プロパティについて検証、解説を行い理解を深めていこうと思います。

プロパティ各種

*アニメーションクリップを用いた簡単なアニメーション作成については以下の記事をご覧ください。

【Unity】アニメーションクリップを用いてオブジェクトを動かす方法

本稿は以下の記事様を参考にさせていただいております

UnityのAnimationClipのルートモーションの設定

 

公式のマニュアルはこちら

 


本稿はユニティちゃんライセンス条項の元に提供されています。

下準備

今回は以下のアセットに含まれているアニメーションクリップを用いています。

Mixed Motion

Mixed Motion

Raw Mocap Data for Mecanim

Raw Mocap Data for Mecanim

比較のためアニメーションを入れて動かすオブジェクトを2つ用意します。今回はUnityちゃんを2人並べて配置します。

UnityちゃんNo.1、No.2

次にアニメーターコントローラーを2つ用意します。追加手順はProjectウィンドウより[Create]->[Animator Controller]の手順です。

アニメーターコントローラー追加手順

詳しい使用方法は以下の記事をご覧ください。

【Unity】Animator Controllerを用いたアニメーション切り替え方法

アニメーターコントローラー内の構成は以下の通りです。

アニメーターコントローラー構成

今回は基本的にUnityちゃんNo.1のプロパティを調整して検証を行っていきます。

Loop Time

「Loop Time」は名前の通りアニメーションをループさせるものです。

LoopTime 比較

チェックを入れた方のみループ変遷しています。

*LoopTimeの効果をわかりやすくするためアニメーターコントローラーにおける、Transitionの「Has Exit Time」を外しています。

Loop Pose

続いて「Loop Pose」です。これはアニメーションのループ変遷を滑らかにするものです。

Loop Pose 比較

Unityちゃんのがループ変遷する際の顔の向きに注目してみてください。No.1のループ変遷の滑らかさがわかると思います。

Cycle Offset

アニメーションを特定のタイミングで始めたい場合こちらの数値を設定します。

数値の範囲は「0~1」です。今回は0.3で設定しています。

Cycle Offset 比較

アニメーションが30%程変遷した時のポーズがスタートの状態であることが確認できます。

Root Transform Rotation

アニメーションの回転の制御に関するプロパティです。

Bake Into Pose

Bake Into Pose」にチェックを入れるとオブジェクトの向きが、アニメ―ションによる回転に左右されなくなります。

Bake Into Pose ON 比較

Loop Time」の例でもお気づきの方もいらっしゃるかもしれません。角度の付くアニメーションをループさせた時、「Bake Into Pose」で固定しない限り、アニメーション終了時のポーズ角度から次のアニメーションをスタートさせます。

注意して設定を行いましょう。

Based Upon・Offset

Based Upon」はルートが何に基づいて回転していくのかを設定するものです。

  • Original→アニメーションクリップの設定通り
  • Body Orientation→ボディの前方ベクトルに合わせる
Based Upon 比較

No.1の方がボディを前方に向けることを最優先にしているため少し傾いていることがわかります。

 

Offset」はルートの回転のオフセット値です。設定するとオブジェクトがその角度分向きを変えた状態でアニメーションがスタートします。

Offsetを「90」に設定したものが以下の通りです。

Offset90 比較

UnityちゃんNo.1が90°向きを変えた状態でアニメーションが開始していることがわかります。

Root Transform Position(Y)

Root Transform Position(Y)」はアニメーションにおけるY軸座標上の制御に関するプロパティです。シーンビューでは少しわかりづらいのでアニメーションクリップのサンプル画面も交えて確認していきます。

Bake Into Pose

チェックを入れるとアニメーションの基準点が固定され、アニメーションによるY軸座標の変化がなくなります

Bake Into Pose 比較

見た目上はオブジェクトが縦に移動しているように見えても、ルートポジションは0のままです。基準のポジションが変わることはありません。

サンプル画面で確認してみます。

*基準点はオブジェクトの下にあるサークルのことを指します。

「Bake Into Pose」が有効化されている場合は基準点は変化しません無効化されている場合はオブジェクトと一緒に基準点も変化していることがわかります。

ループアニメーションをつくっているとアニメーションが上下に逸れていったりするケースがあります。そういった際に有効化するとアニメーションの矯正ができます。

高さが変化するアニメーション(ジャンプ等)を制御する際はチェックを外しておくといいでしょう。というのは仮にコライダーがついていた場合、思わぬあたり判定が発生してしまう恐れがあるためです。

Bake Into Pose (Y)例:コライダー

オブジェクトはよけているように見えても、コライダーの高さは変わらないためです。

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軸座標の変化がなくなります

Bake into pose(XZ)

Y軸の時と同様に、見た目上はオブジェクトが移動しているように見えても、ルートポジションは変化しません

サンプル画面で確認してみます。

これもY軸の時と同様に、Bake Into Poseが有効化されている場合は基準点は変化しません。無効化されている場合はオブジェクトと一緒に基準点も変化していることがわかります。

アニメーションをループさせてみるとわかりやすいです。

Bake into pose ON OFF ループ比較

基準点が変わらない場合は、1回1回初期位置に戻ってアニメーションループを行います。それに対し基準点が変化し続ける場合はオブジェクトが前方に進み続けていることが確認できます。

Based Uponの種類はRoot Transform Position(Y)と同様です。

Mirror

Mirrorはその名の通りアニメーションを反転するプロパティです。

Mirror

UnityちゃんNo.1とNo.2がそれぞれ対称のアニメーション変遷を行っていることが確認できます。

まとめ

いかがでしたでしょうか。今回はアニメーションクリップのプロパティについてご紹介してきました。

各プロパティについて1つ1つ紹介してきましたが、もちろん組み合わせて効果を発揮するケースも多く存在します。

アニメーションに違和感を感じた際には今回ご紹介したプロパティの調整を行ってみてください。意外と簡単に問題が改善されるかもしれません。


アイキャッチ_アニメーションクリッププロパティ

この記事はいかがでしたか?
もし「参考になった」「面白かった」という場合は、応援シェアお願いします!

株式会社x gardenが運営するXR-Hubの記事編集部です。

読者の皆様に役に立つ情報を発信いたします。

シェアする