ボディトランスフォーム (Body Transform) とはキャラクターの重心です。これは Mecanim のリターゲティングエンジンに使用され、最も安定したディスプレースメントモデルを提供します。ボディの向きは下半身と上半身のボディの向きの平均で、アバターの T ポーズに対して相対的です。
ボディトランスフォームとボディの向きは アニメーションクリップ に格納されます (アバターに設定した マッスルの設定 を使用します)。アニメーションクリップ に格納されるワールド座標系のカーブはこれらだけです。これら以外のマッスルカーブと IK ゴール (手と足) は ボディトランスフォームに対して相対位置で格納されます。
ルートトランスフォーム (Root Transform) は ボディトランスフォームを Y 平面上へ投影したもので、ランタイムに算出されます。ルートトランスフォームの変化は 1 フレーム毎に計算されます。そのトランスフォームの変化をゲームオブジェクトに適用する事で、オブジェクトが移動します。
アニメーションクリップエディターの設定 (Root Transform Rotation、Root Transform Position (Y)、Root Transform Position (XZ)) を使ってボディトランスフォームの投影であるルートトランスフォーム (Root Transform) を制御できます。これらの設定によって、ボディトランスフォームのいくつかは ルートトランスフォームに転送されます。例えば、動作の Y 位置をルートモーション (軌道) の一部とするか、ポーズ (ボディトランスフォーム) の一部とする (Bake into Pose) かは、自由に決められます。
Bake into Pose: 向きは ボディトランスフォーム (またはポーズ) に従います。ルートの向きは一定で、差分の向きは同一です。つまり、アニメーションクリップ によってゲームオブジェクトが回転されることはありません。
似た開始および終了のルート向きをもったアニメーションクリップのみでこのオプションを使用すべきです。UI 上の緑のライトによって、その アニメーションクリップ が適応するかが分かります。適する候補は真っ直ぐな歩行や走行などです。
Based Upon: これによりクリップの向きを設定できます。 Body Orientation を使用すると、クリップはボディの前方ベクトルに従います。このデフォルト設定は、たいていのモーションキャプチャ (Mocap) データ、すなわち歩く、走る、ジャンプでは正しく機能しますが、機銃掃射 (航空機から地上に向かって射撃を行う) のようにボディの前方ベクトルに対して直角の場合は正しく機能しません。このような場合は、Offset 設定を使って手動で向きを調整できます。Original を使うと、インポートしたクリップに対して指定したオフセットの値を自動的に加えます。これらは通常、キーフレームつきのデータで使用され、アーティストが設定したとおりの向きにします。
Offset: Based Upon によりオプションが有効となっている場合、オフセットを入力します。
ここでも、Root Transform Rotation の説明と同じ考え方を適用します。
Bake Into Pose: モーションの Y コンポーネントは ボディトランスフォーム (ポーズ) に従います。Root Transform の Y コンポーネントは一定で、差分の Root Position Y は 0 になります。すなわち、このクリップによってゲームオブジェクトの高さは変更されません。再び UI 上の緑のライトによって、このクリップは、Y モーションをポーズにベイクするのに適切かどうかが示されます。
ほとんどの AnimationClip でこの設定は使用可能です。ゲームオブジェクト の高さを変更するクリップ (例えば上下にジャンプする場合など) にのみ、これを無効にすべきです。
注意: Animator.gravityWeight
は Bake Into Pose の Y 位置により決定されます。有効にする場合は gravityWeight = 1
、無効にする場合は disable = 0
となります。gravityWeight はステート間を移動する場合のみブレンドされます。
Based Upon: Root Transform Rotation と同様に、Original または Mass Center (Body) から選択できます。さらに Feet オプションがあり、高さが変わる (Bake Into Pose が無効) アニメーションクリップ では便利です。Feet を使用するとき Root Transform Position Y はすべてのフレームでもっとも低い足の Y と一致します。したがってブレンドされる場所は足の付近にあり、ブレンドや遷移のときに宙に浮いてしまう問題を回避できます。
Offset: Root Transform Rotation と同様に、 Offset 設定によって、アニメーションクリップ の高さを手動で調整できます。
ここでも、Root Transform Rotation や Root Motion Position (Y) と同じ考え方を適用します。
Bake Into Pose は一般にアイドル状態で、差分の Position (XZ) を 0 にしたい場合に使用されます。何度も評価を繰り返すことが原因で生じる値の小さな差分が蓄積されることを防止します。また Based Upon が Original となっているキーフレームつきのクリップに使用し、アーティストが設定した位置を強制的に設定します。
Loop Pose は、ブレンドツリーまたは遷移の際のポーズのブレンドのように、ルートトランスフォームを参照して発生します。ルートトランスフォームを算出すると、ポーズはそれに相対的に反応します。開始と終了フレームの間の相対的なポーズの差分は算出され、Clip の 0–100% の範囲に分配されます。
これは本質的にヒューマノイドルートモーションと同様の働きをしますが、ルートトランスフォームを算出/予測するためにボディトランスフォームを使用するのではなく、ルートノード に設定されているトランスフォームが用いられます。ポーズ (ルートモーションのボーンの下位で変化するボーン) は ルートトランスフォームに対して相対的となります。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.