IK
チュートリアル:マニュアルでのルートモーションのスクリプティング

ルートモーションの仕組み

Body Transform

キャラクターの重心が Body Transform に該当します。これは Mecanim のリターゲティングエンジンに使用され、最も安定した Displacement モデルを提供します。ボディの向きはアバターの T ポーズに対して相対的に、下半身と上半身のボディの向きの平均を使います。

Body Transform およびボディの向きは Animation Clip に格納されます (アバターでセットアップした マッスルの設定 を使用します)。これらは Animation Clip に格納される唯一のワールド座標系のカーブです。これら以外は:マッスルカーブおよび IK ゴール(手および足)は Body Transform に対して相対位置で格納されます。

Root Transform

Root Transform は Body Transform を Y 平面上へ投影したもので、実行時に算出されます。 Root Transform の変化は1フレーム毎に計算され、その Transform の変化量をゲームオブジェクトに適用する事で、オブジェクトが移動します。

 キャラクター下の円はルートの Transform を表します
キャラクター下の円はルートの Transform を表します

Animation Clip Inspector

アニメーションクリップ エディター設定 - Root Transform Rotation, Root Transform Position (Y)、および Root Transform Position (XZ) - により Body Transform からの投影である Root Transform を制御します。これらの設定によって、Body Transform のいくつかは Root Transform に転送されます。例えば動作の Y 位置を Root Motion (軌道) の一部とするか、ポーズ (Body Transform) の一部(__Baked into Pose__ と呼びます)とするか、自由に決められます。

Root Transform Rotation

Bake into Pose (ポーズ焼き込み): 向きは Body Transform (またはポーズ) に従います。Root の向きは一定値となり、差分の向きは Identity となります。つまり、Animation Clip によりゲームオブジェクトは一切回転されません。

似た開始および終了のルート向きをもったアニメーションクリップのみでこのオプションを使用すべきです。UI 上の緑のライトによって Animation Clip がよい候補であるか分かります。適する候補は真っ直ぐの歩きや走りなどです。

Based Upon: これによりクリップの向きをセットできます。 Body Orientation を使用して、クリップはボディの Forward ベクトルに従います。このデフォルト設定は、ほとんどのモーションキャプチャ (Mocap) データ、すなわち歩く、走る、およびジャンプでは正しく機能しますが、機銃掃射のようにボディの Forward ベクトルに対して直角の場合は正しく機能しません。これらの場合では、 Offset 設定により手動で向きを調整できます。最後に Original により、インポートされたクリップに書かれているオフセットの値が自動的に反映されます。これらは通常、アーティストにより設定されたキーフレームつきのデータを尊重して使用されます。

Offset: Based Upon によりオプションが有効となっている場合、オフセットを入力します。

Root Transform Position (Y)

これは Root Transform Rotation の説明と同じ考え方を使用します。

Bake Into Pose (ポーズ焼きこみ): モーションの Y コンポーネントは Body Transform (ポーズ)に従います。Root Transform の Y コンポーネントは一定値となり差分の Root Position Y は 0 になります。すなわち、このクリップはゲームオブジェクトの高さを変更しません。再び UI 上の緑のライトによって、ポーズに Y モーションを焼きこむのに適するか表示されます。

ほとんどの AnimationClip ではこの設定を有効化します。GameObject の高さを変更するクリップのみ、例えば真上や真下にジャンプする場合などにのみ、これを無効化すべきです。

注意: Animator.gravityWeight は Bake Into Pose の Y 位置により決定さます。有効化した場合、gravityWeight = 1 また disable = 0 となります。gravityWeight はステート間を移動する場合のみブレンドされます。

Based Upon: Root Transform Rotation と同様に、Original または Mass Center (Body) から選択できます。さらに Feet オプションにより、高さを変える Animation Clip では便利です (Bake Into Pose が無効化されているとき)。 Feet を使用するとき Root Transform Position Y はすべてのフレームでもっとも低い足の Y と一致します。したがってブレンドされる場所は足の付近にあり、ブレンディングや遷移のときに浮いてしまう問題は回避できます。

Offset: Root Transform Rotation と同様に、 Offset 設定によって、Animation Clip の高さをマニュアルで調整できます。

Root Transform Position (XZ)

再び、Root Transform Rotation または Root Motion Position (Y) と同じ考え方が適用できます。

Bake Into Pose (ポーズ焼き込み) は一般にアイドルのときに、差分の Position (XZ) を 0 にしたい場合に使用されます小さな差分が何度も評価された場合に値がドリフトすることを防止します。さらに Based Upon Original となっているキーフレームつきのクリップで、アーティストが設定した位置を強制的に設定するのにも使用できます。

Loop Pose

Loop Pose は (ブレンドツリーまたは遷移の際のポーズのブレンドのように)、Root Transform にもとづいています。Root Transform を算出すると、Pose は相対的に動作します。相対的な Pose の開始や終了フレームの差分は、開始と終了のフレームは算出され、Clip 範囲の 0–100%に渡って分配されます。

ジェネリック Root Motion および Loop Pose

これは本質的にヒューマノイドルートモーションと同様の働きをしますが、Root Transform を算出/投影するために Body Transform を使用するのではなく、 Root Node に設定されている Transform が用いられます。ポーズ(ルートモーションより下に Transform があるすべてのボーン)は Root Transform に対して相対的となります。

IK
チュートリアル:マニュアルでのルートモーションのスクリプティング