アニメーションのブレンディング

ステート間でのアニメーションのクロスフェード

../../_images/crossfade-animations.gif

アプリケーションが、それぞれ異なるアニメーションを駆動するステート間で遷移する場合、終了するアニメーションと開始するアニメーションをクロスフェードさせることで、切り替えを滑らかにできます。突然切り替わるのではなく、ステートトランジションで設定したデュレーションの間に、終了するアニメーションがフェードアウトし、開始するアニメーションがフェードインします。

State Manager で 2 つのアニメーション間をクロスフェードさせるには、2 つのステートのそれぞれに同じネーム (Name) の Animation Player を設定します。State Manager がステート間をトランジションするとき、送り出し側と受け入れ側の Animation Player の再生を、トランジションのデュレーション (Duration) にわたってブレンドします。

ステートマネージャーがステート間で遷移するときにアニメーションをクロスフェードさせるには:

  1. ステートごとにキーフレームアニメーションを作成します。キーフレームアニメーションの作成 を参照してください。

    例えば、3D キャラクターノード用に、ループする Animation Clip リソースを 2 つ作成します。1 つはキャラクターを待機ポーズでアニメーションさせるもので、もう 1 つはキャラクターの歩行をアニメーションさせるものです。

  2. Node Tree でアニメーションさせたいノードを選択し、そのノードの State Manager に 2 つのステートを追加します。ステートマネージャー (State Managers) を使用する場合 を参照してください。

    例えば、Idle と Walking のステートを持つステートマネージャーを作成します。

    ../../_images/crossfade-states-create.png
  3. 各ステートに Animation Player ノードコンポーネントを追加し、両方の Animation Player ノードコンポーネントに同じ名前を付けます。

    State Manager はネーム (Name) を使用して送り出し側と受け入れ側の Animation Player コンポーネントを対応付け、それらのアニメーション間をクロスフェードできるようにします。

    例えば、両方の Animation Player ノードコンポーネントに CharacterAnimation という名前を付けます。

    ../../_images/crossfade-animation-player-create.png
  4. 各ステートで、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 を有効にします。

    ../../_images/crossfade-animation-setup.png ../../_images/crossfade-states-set.png
  5. ステート間のトランジションのデュレーションを設定します。ステート遷移の使用 を参照してください。

    ../../_images/crossfade-transition-duration.png

    注釈

    ステートトランジションに設定したイージングファンクションは、クロスフェードには影響しません。ブレンドは、設定したデュレーションの間、常にリニアカーブに従います。

State Manager がステート間で遷移すると、設定したトランジションのデュレーションにわたって、終了するアニメーションは再生を続けながらフェードアウトし、開始するアニメーションは開始してフェードインします。

入力側のアニメーションでアニメーション化されないプロパティは、急に切り替わるのではなく、デフォルト値に向かってスムーズにブレンドされます。

注釈

入力側の Animation Player が Relative Playback を使用している場合、クロスフェードはサポートされません。入力側のプレイヤーで Relative Playback が有効になっている場合、トランジションはクロスフェードせずに即座に完了します。

関連項目

キーフレームアニメーションの使用

キーフレームアニメーションの作成

タイムラインシーケンスの編集

ステートマネージャー (State Managers) を使用する場合

ステート遷移の使用