レイヤー化されたアニメーションを使用する

移動しながら武器を発砲できるキャラクターを作るアニメーションのブレンド方法

Windows
MacOS
Linux

アニメーションのブレンドとは、単一のキャラクターもしくはスケルタルメッシュ上の 2 つ以上のアニメーション間を滑らかに遷移させる、ということです。UE4 には、こうしたブレンドを適用するための様々な方法があります。Blend Spaces を使用する、重み付けによるバイアスまたはアルファ値に基づいて文字通り 2 つのアニメーションを加算的に組み合わせる、または既存のポーズに直接オーバーライドすることもできます。

アニメーションをスケルトンの特定のボーンとその全ての子供に直接送ることもできます。例えば、キャラクターが走っているアニメーションから開始し、射撃するアニメーションをキャラクターの上半身に選択的に適用することもできます。最終的に、以下の動画のように走り回りながら射撃するキャラクターができあがります。

1 - ブレンドするアニメーションを設定する

このステップではデフォルトのプレイヤー キャラクターを更新し、移動のアニメーションの上にレイヤー化したいアニメーションの AnimMontage を作成します。

このガイドでは Blueprint Third Person プロジェクトを使用し、Animation Starter Pack をプロジェクトに追加しました。

AnimationAssetPack.png

Epic Launcher の Marketplace から無料でアニメーション スターター パックをダウンロードできます。

  1. プロジェクトが開いた状態で、コンテンツ ブラウザ「Content/ThirdPersonBP/Blueprints」 フォルダで ThirdPersonGameMode ブループリントを開きます。

  2. Default Pawn Class (デフォルトのポーン クラス) でドロップダウン メニューをクリックし、Ue4ASP_Character を選択します。

    Animations1.png

  3. コンパイル保存 してから、ブループリントを終了します。

  4. コンテンツ ブラウザ「Content/AnimStarterPack」 フォルダを開きます。

  5. Fire_Shotgun_Ironsights アニメーション上で 右クリック して、[Create] を選択し、次に [Create AnimMontage] を選択します。

    Animations2.png

    上図のように検索ウィンドウ内で "Fire" と入力することでフィルタリングすることができます。

  6. 新しい AnimMontage を開き、虫眼鏡アイコンをクリックします。

    Animations3.png

    Anim Slot Manager が開きます。これはスロットを名前で呼び出す場合にブレンド対象として使用可能な スロット を作成するために使用します。

  7. [Add Slot (スロット追加)] ボタンをクリックし、スロットに 「UpperBody」 と名前を付け、[Save (保存)] をクリックします。

    Animations4.png

    ここでは "UpperBody" という名前を選びましたが、今すぐに上半身をターゲットにするわけではありませんが、どこをターゲットとしているかがわかるように名前を割り当てました。

  8. Montage Group セクション内のドロップダウン メニューをクリックして、それを DefaultGroup.UpperBody に変更してウィンドウを閉じます。

    Animations5.png

    これで、モンタージュが DefaultGroup.UpperBody に関連付けられ、このスロットが呼び出されると再生されるようになります。

次のセクションでは、デフォルトのプレイヤー キャラクターを変更して調整し、いつ武器を発砲するかを定義します。

2 - Character ブループリントを更新する

このステップでは、Character ブループリントでスクリプトを作り、武器を発砲する Animation ブループリントに信号を送ります。

  1. コンテンツ ブラウザ 内の Content/AnimStarterPack で、Ue4ASP_Character ブループリントを開きます。

  2. Crouching セクションを探して、InputAction Crouch Event (Warning! 付き) 記号を削除します。

    Animations6.png

    このノードには警告があります。プロジェクトが InputAction event である "Crouch" を使用するようにセットアップされていないからです。

  3. グラフ内で 右クリック して、 C Key Event を追加し、以下のように接続します。

    Animations7.png

    これで crouch を C キー押下に関連付けました。この入力は必要に応じて何にでも変更できます。

  4. [MyBlueprint] ウィンドウで、 [変数を追加] ボタンをクリックして、 Boolean 変数を作成し、Fire Button Down と呼びます。

    Animations8.png

  5. グラフ内を 右クリック して、 Left Mouse Button Key Event を追加します。

  6. Alt を押したまま、グラフ内で Fire Button Down 変数をグラフにドラッグし、Set ノードを作成します。

  7. ひとつ前のステップを繰り返し (または Set ノードをコピー)、以下のように接続します。

    Animations9.png

    マウスの左ボタン押す と 、Fire Button DownTrue になるようにします。マウスの左ボタン解放するとFalse になるようにします。

  8. [Components] ウィンドウで CapsuleComponent を選択します。次に [Details (詳細)] パネルの [Hidden in Game (ゲーム内で非表示)] オプションにチェックを入れます。

    HideCapsule.png

    これでカプセル コリジョンのデバッグ表示がオフになります。

  9. コンパイル保存 してから、ブループリントを終了します。

かがんだり、武器を発砲する場合に Animation ブループリントに信号を送るようにキャラクターがセットアップされました。次のステップでは Animation ブループリント内でアニメーション グラフをセットアップし、アニメーション モンタージュと通常の動きのアニメーションとのブレンドを処理し、この 2 つをブレンドできるようにします。

3 - Anim Graph のセットアップ

このステップでは、Anim Graph をセットアップし、AnimMontage とステートマシンの動きのポーズのブレンドを処理します。

  1. Game/AnimStarterPackUE4ASP_HeroTPP_AnimBlueprint Animation ブループリントを開きます。

  2. MyBlueprint ウィンドウ内で AnimGraph を開きます。

    Animations9b.png

  3. Locomotion ステートマシンからドラッグして New Save cached pose を探して追加します。

    Animations10.png

    ここでは、Locomotion ステートマシンから結果のポーズを取得し、それをどこでも使用可能なキャッシュされたポーズに格納します。

  4. ノード上で F2 を押して、キャッシュされたポーズに LocomotionCache などの名前を付けます。

    Animations11.png

  5. グラフ内を 右クリック して、Use cached pose 'LocomotionCache' (またはキャッシュされたポーズに付けた任意の名前) を追加します。

    Animations12.png

  6. Use cached pose ノードからドラッグして、Layered blend per bone ノードを検索して追加します。

    Animations13.png

    Layered Blend Per Bone ノードでは、スケルトン上の指定されたボーンからのアニメーションをまとめてブレンドすることができます。

  7. Use cached pose 'LocomotionCache' ノードをコピー/貼り付けし、そこからドラッグして、Slot 'DefaultSlot' ノードを追加します。

    Animations14.png

  8. Slot ノードの Settings で、ドロップダウン メニューをクリックし、DefaultGroup.UpperBody を選択します。

    Animations15.png

    このスロットを使用する Animation Montage がプレイのために呼び出されると、AnimGraph内で呼び出されるようになります。

  9. SlotLayered blend per bone ノードの Blend Poses 0 ピンに接続します。次にその出力を ResultCompile に接続します。

    Animations16.png

AnimGraph が完成しましたが、Layered blend per bone ノードの設定の一部を変更する必要があります。これは、後で行います。

4 - ブレンド設定を確定する

ブレンドしたアニメーションをレイヤー化し、どのボーンからブレンドを開始するかについて定義します。

  1. UE4ASP_HeroTPP_AnimBlueprintAnimGraph 内で、Layered blend per bone ノードをクリックします。次に [Layer Setup] セクションを展開し + 記号をクリックします。

    Animations17.png

  2. Bone Namespine_01 と入力します。次に [Blend Depth]1 に設定し、[Mesh Space Rotation Blend] にチェックを入れます。

    Animations18.png

    このような設定で、射撃する AnimMontage を spine_01 ボーンから開始してスケルトンにブレンドすることができます。

  3. [MyBlueprint] ウィンドウ内で EventGraph を開きます。

    Animations18b.png

  4. Cast To Ue4ASP_Character ノードの As Ue4ASP Character ピンをドラッグして Get Fire Button Down ノードを追加します。

    Animations19.png

    これで、プレイヤーが発射ボタンを押しているか否かがわかります。

  5. B を押したまま、グラフ内で 左クリック して、Branch ノードを作成し、それを Set Crouching の後に接続します。

    Animations20.png

    Condition に、FireButtonDown ピンを差し込みます。

  6. グラフ内を 右クリック して、 Montage Is Playing ノードを追加し、Fire_Shotgun_Ironsights_Montage を割り当てます。

    Animations22.png

  7. Montage Is Playing ノードの Return Value から、 Branch を追加します。

  8. 以下の図のように、ステップ 5 の Branch を、新しい Branch に接続します。Montage to Play が使用するモンタージュに設定されている Montage Play ノードを追加します。

    Animations23.png

    これで、モンタージュが現在再生しているかをチェックし、再生している場合はそれを再生しないようにします (再生していなければモンタージュを再生します)。

  9. コンパイル保存 してから、ブループリント を閉じてレベル内の既存の ThirdPersonCharacter を削除します。

    Animations24.png

    これでレベル内に配置されているものではなく、Game Mode で定義した選択したキャラクターを使用することができます。

  10. エディタで Play (再生) します。

最終結果

マウスの左ボタン を押したままにすると、キャラクターが射撃する AnimMontage を再生します。射撃中に歩き回ったり、しゃがんで射撃することもできます ( C を押した状態で)。このガイドの内容で、メレー攻撃、リロードのアニメーションや移動中に行うその他のアニメーションを再生できるようにします。

Anim Montage で作成し、割り当てた UpperBody スロットを、他の Anim Montage にも割り当てることができます。AnimGraph には Slot ノードが割り当てられているため、このスロットが割り当てられている Anim Montage を再生するたびに、定義した設定で再生されます。

Tags
Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback