Unity「Apply Root Motion」と「Bake into Pose」
リファレンスhttp://blog.csdn.net/cubesky/article/details/39478207
made by Unity 2017.1.1f1
モデルとアニメーションはすべてAsset Storeの上で無料でダウンロードすることができます
キーワード「Mixamo」
テストケース
Demo 2フォルダを追加し、新しいシーン、Animator Controller、および制御スクリプトを作成してMixamo/Magic Pack/Charactersの人物モデルプリフォームをHierarchyパネルのにドラッグしてカメラパラメータを調整し、人物移動がAnimator Controllerを構成していることを確認します.Hierarchyパネルのキャラクタモデルにドラッグ&ドロップスクリプトを作成し、Hierarchyパネルのキャラクタモデルにドラッグ&ドロップします.
原理解析
(1)Apply Root Motion位置:Hierarchyパネルのキャラクタモデルをオンにし、そのAnimatorコンポーネントの(2)Bake Into Pose位置:Animationアニメーションの属性です.
untiyではアニメーションの変換を2つに分け、Body TransformとRoot Transformの2つの設定が相互に影響します.
Body Transform(pose)に設定すると、これらの変換はアニメーションそのものの一部に相当します.つまり、Apply Root Motionを設定するかどうかにかかわらず、シーンではモデルの位置や角度の変化が見られます.(Body Transformはモデルの実際の位置と角度に影響しないため、ここでは純粋なアニメーション効果にすぎず、モデルの位置と角度パラメータ値は変わらない).
Root Transformに設定すると、Root Transformはモデルの実際の位置と角度に影響します(「Apply Root Motion」を設定し、Apply Root Motionを設定しないと、つまり変換は適用されず、シーン内のモデルの位置や角度は変化しません(パラメータ値は自然に変わりません).ずっとその場を歩いているかもしれません).
そしてここの「Apply Root Motion」を重点的に見てみましょう.ここで彼は2つの役割を果たします.まず最も重要なのは、Root Transformを適用するかどうかを決定することです.適用すれば、アニメーションと同時にモデルの位置と角度が同時に変化します.ここでチェックしないと、Root Transformを適用しないと、私たちのすべてのRoot Transformは何の役にも立たないということです.(つまり、Bake into Poseのないすべての変換が役に立たないことに相当します).
Apply Root Motionの2つ目の役割は、アニメーションが終了した後、Body Transformのバリエーションをモデルに適用します(ここでは終了時に適用します、つまりアニメーションの場合はモデルのposition、rorateなどのパラメータは変わらないので、アニメーションが終了してから新しいアニメーションを開始する前に変更します、ここで前述のRoot Transformの違いに注意してください)
シナリオ解析
【Standing_work_forward.animアニメーションでテスト】
シーンを実行し、十字カーソル(ショートカットW)をクリックすると、Idle状態でモデルのボーンが動いているのが見えますが、親オブジェクト、つまり空のGameObjectの位置属性は変わりません.
【Standing_work_forward.animアニメーションでテスト】
(1)「Bake into Pose」にチェックを入れ、「Apply Root Motion」にチェックを入れず【毎回その場から先を行く】Bake into Poseにチェックを入れた後、Body Transformに変換し、だからここで「Apply Root Motion」をチェックしていなくても、アニメーションはシーンに現れ、人物はアニメーションのパスに従って歩きます(ただし、Inspectorのモデルのpositionパラメータを観察すると、値はずっと変わりません).ただしApply Rootモーションはチェックされていないため、アニメーションが終了しても変換はモデルに適用されないため、この場合、新しいアニメーションを開始すると、モデルは瞬時にホーム位置(新しいアニメーションの開始時、モデルはアニメーションの開始時の位置)に戻ります.(2)「Bake into Pose」、「Apply Root Motion」、「毎回その場から先を行く」、「Bake into Pose」をチェックすると、「Apply Root Motion」はチェックしないようにロックされるので、効果はシナリオと同じです.(3)「Bake into Pose」をチェックしない、「Apply Root Motion」をチェックする【前に進む】変換はRoot Transformとして機能するので、ここではApply Root Motionをチェックしているので、変換はモデルに適用されます(モデルのpositionはアニメーションに従って絶えず変化します).(4)「Bake into Pose」をチェックせず、「Apply Root Motion」をチェックしない【その場で歩く】ここでは変化はRoot Transformとして扱われているが、Apply Root Motionをチェックしていないため変換は適用されないため、モデルはずっとその場にあるので、自然と、新しいアニメーションの開始時にモデルはアニメーションの開始時の位置にある.
made by Unity 2017.1.1f1
モデルとアニメーションはすべてAsset Storeの上で無料でダウンロードすることができます
キーワード「Mixamo」
テストケース
Demo 2フォルダを追加し、新しいシーン、Animator Controller、および制御スクリプトを作成してMixamo/Magic Pack/Charactersの人物モデルプリフォームをHierarchyパネルのにドラッグしてカメラパラメータを調整し、人物移動がAnimator Controllerを構成していることを確認します.Hierarchyパネルのキャラクタモデルにドラッグ&ドロップスクリプトを作成し、Hierarchyパネルのキャラクタモデルにドラッグ&ドロップします.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour {
private Animator mAnimator;
// Use this for initialization
void Start () {
mAnimator = GetComponent();
}
// Update is called once per frame
void Update () {
if(Input.GetKey(KeyCode.W))
{
mAnimator.SetTrigger("Walk");
} else
{
mAnimator.SetTrigger("Idle");
}
}
}
原理解析
(1)Apply Root Motion位置:Hierarchyパネルのキャラクタモデルをオンにし、そのAnimatorコンポーネントの(2)Bake Into Pose位置:Animationアニメーションの属性です.
untiyではアニメーションの変換を2つに分け、Body TransformとRoot Transformの2つの設定が相互に影響します.
Body Transform(pose)に設定すると、これらの変換はアニメーションそのものの一部に相当します.つまり、Apply Root Motionを設定するかどうかにかかわらず、シーンではモデルの位置や角度の変化が見られます.(Body Transformはモデルの実際の位置と角度に影響しないため、ここでは純粋なアニメーション効果にすぎず、モデルの位置と角度パラメータ値は変わらない).
Root Transformに設定すると、Root Transformはモデルの実際の位置と角度に影響します(「Apply Root Motion」を設定し、Apply Root Motionを設定しないと、つまり変換は適用されず、シーン内のモデルの位置や角度は変化しません(パラメータ値は自然に変わりません).ずっとその場を歩いているかもしれません).
そしてここの「Apply Root Motion」を重点的に見てみましょう.ここで彼は2つの役割を果たします.まず最も重要なのは、Root Transformを適用するかどうかを決定することです.適用すれば、アニメーションと同時にモデルの位置と角度が同時に変化します.ここでチェックしないと、Root Transformを適用しないと、私たちのすべてのRoot Transformは何の役にも立たないということです.(つまり、Bake into Poseのないすべての変換が役に立たないことに相当します).
Apply Root Motionの2つ目の役割は、アニメーションが終了した後、Body Transformのバリエーションをモデルに適用します(ここでは終了時に適用します、つまりアニメーションの場合はモデルのposition、rorateなどのパラメータは変わらないので、アニメーションが終了してから新しいアニメーションを開始する前に変更します、ここで前述のRoot Transformの違いに注意してください)
シナリオ解析
【Standing_work_forward.animアニメーションでテスト】
シーンを実行し、十字カーソル(ショートカットW)をクリックすると、Idle状態でモデルのボーンが動いているのが見えますが、親オブジェクト、つまり空のGameObjectの位置属性は変わりません.
【Standing_work_forward.animアニメーションでテスト】
(1)「Bake into Pose」にチェックを入れ、「Apply Root Motion」にチェックを入れず【毎回その場から先を行く】Bake into Poseにチェックを入れた後、Body Transformに変換し、だからここで「Apply Root Motion」をチェックしていなくても、アニメーションはシーンに現れ、人物はアニメーションのパスに従って歩きます(ただし、Inspectorのモデルのpositionパラメータを観察すると、値はずっと変わりません).ただしApply Rootモーションはチェックされていないため、アニメーションが終了しても変換はモデルに適用されないため、この場合、新しいアニメーションを開始すると、モデルは瞬時にホーム位置(新しいアニメーションの開始時、モデルはアニメーションの開始時の位置)に戻ります.(2)「Bake into Pose」、「Apply Root Motion」、「毎回その場から先を行く」、「Bake into Pose」をチェックすると、「Apply Root Motion」はチェックしないようにロックされるので、効果はシナリオと同じです.(3)「Bake into Pose」をチェックしない、「Apply Root Motion」をチェックする【前に進む】変換はRoot Transformとして機能するので、ここではApply Root Motionをチェックしているので、変換はモデルに適用されます(モデルのpositionはアニメーションに従って絶えず変化します).(4)「Bake into Pose」をチェックせず、「Apply Root Motion」をチェックしない【その場で歩く】ここでは変化はRoot Transformとして扱われているが、Apply Root Motionをチェックしていないため変換は適用されないため、モデルはずっとその場にあるので、自然と、新しいアニメーションの開始時にモデルはアニメーションの開始時の位置にある.