アニメーションのブレンディング¶
ステート間でのアニメーションのクロスフェード¶
アプリケーションが、それぞれ異なるアニメーションを駆動するステート間で遷移する場合、終了するアニメーションと開始するアニメーションをクロスフェードさせることで、切り替えを滑らかにできます。突然切り替わるのではなく、ステートトランジションで設定したデュレーションの間に、終了するアニメーションがフェードアウトし、開始するアニメーションがフェードインします。
State Manager で 2 つのアニメーション間をクロスフェードさせるには、2 つのステートのそれぞれに同じネーム (Name) の Animation Player を設定します。State Manager がステート間をトランジションするとき、送り出し側と受け入れ側の Animation Player の再生を、トランジションのデュレーション (Duration) にわたってブレンドします。
ステートマネージャーがステート間で遷移するときにアニメーションをクロスフェードさせるには:
ステートごとにキーフレームアニメーションを作成します。キーフレームアニメーションの作成 を参照してください。
例えば、3D キャラクターノード用に、ループする Animation Clip リソースを 2 つ作成します。1 つはキャラクターを待機ポーズでアニメーションさせるもので、もう 1 つはキャラクターの歩行をアニメーションさせるものです。
Node Tree でアニメーションさせたいノードを選択し、そのノードの State Manager に 2 つのステートを追加します。ステートマネージャー (State Managers) を使用する場合 を参照してください。
例えば、Idle と Walking のステートを持つステートマネージャーを作成します。
各ステートに Animation Player ノードコンポーネントを追加し、両方の Animation Player ノードコンポーネントに同じ名前を付けます。
State Manager はネーム (Name) を使用して送り出し側と受け入れ側の Animation Player コンポーネントを対応付け、それらのアニメーション間をクロスフェードできるようにします。
例えば、両方の Animation Player ノードコンポーネントに CharacterAnimation という名前を付けます。
各ステートで、Animation Player の Target Animation Timeline プロパティをそのステート用のアニメーションに設定し、Autoplay Enabled を有効にします。
Autoplay Enabled により、ステートがアクティブになるとすぐにアニメーションが開始します。これを有効にしないと、開始する Animation Player が開始せず、クロスフェードはスキップされます。
例:
Idle ステートで、CharacterAnimation の Target Animation Timeline を待機アニメーションに設定し、Autoplay Enabled を有効にします。
Walking ステートで、CharacterAnimation の Target Animation Timeline を歩行アニメーションに設定し、Autoplay Enabled を有効にします。
ステート間のトランジションのデュレーションを設定します。ステート遷移の使用 を参照してください。
注釈
ステートトランジションに設定したイージングファンクションは、クロスフェードには影響しません。ブレンドは、設定したデュレーションの間、常にリニアカーブに従います。
State Manager がステート間で遷移すると、設定したトランジションのデュレーションにわたって、終了するアニメーションは再生を続けながらフェードアウトし、開始するアニメーションは開始してフェードインします。
入力側のアニメーションでアニメーション化されないプロパティは、急に切り替わるのではなく、デフォルト値に向かってスムーズにブレンドされます。
注釈
入力側の Animation Player が Relative Playback を使用している場合、クロスフェードはサポートされません。入力側のプレイヤーで Relative Playback が有効になっている場合、トランジションはクロスフェードせずに即座に完了します。