ダイナミック アニメーションを作成する

AnimDynamics を使用して、物理ベースのセカンダリ アニメーションをキャラクターに追加します。

キャラクターの動きにより現実味を与える方法の一つとして、キャラクターが持つアイテムや着ているアイテムにダイナミック アニメーションを加える方法があります。 AnimDynamics を使用することで、髪の毛やネックレス、ブレスレット、剣、小物入れなど、現実世界であなたの動きに合わせて動くものを、ゲームの中でもキャラクターの動きに合わせて動かすことができます。

この操作ガイドでは、キャラクターに AnimDynamics を適用して、下のビデオで示されている効果を与える方法を説明します。

上のビデオでは、キャラクターが首にかけているハーネス (装着帯) とファーネスに AnimDynamics が適用されています。いるハーネス (harness) とファーネス (furnace) に AnimDynamics を適用します。キャラクターの動きに合わせてハーネスがやや動き、ファーネスが前後により大きく揺れます。 これらが動く量は AnimDynamics ノードの [Details (詳細)] パネルで調整できるため、必要に応じてより現実味のある動きを表現することができます。追加のコンストレイントを加えて、ボーンの動きのみを操作することもできます。

AnimBlueprint を適用済みのキャラクターおよび AnimDynamics を実行する準備の整ったボーンがすでにある場合は、手順 2 に進んでください。

1 - 必要な設定

ダイナミック アニメーションをキャラクターに適用する前に、使用するキャラクターを設定する必要があります。テンプレート キャラクターには使用可能なダイナミック ボーンが含まれていないため、テンプレート キャラクターからアニメーションを、AnimDynamics の影響を受けるボーンを含む「Infinity Blade」キャラクターにリターゲットします。

このガイドでは、Blueprint Third Person テンプレートを使用して新しいプロジェクトを作成しました。

次に、Marketplace で無料で入手可能な Infinity Blade:Adversaries パックをプロジェクトに追加しました。

AdversariesPack.png

Infinity Blade アセットが追加された Blueprint Third Person ベースのテンプレート プロジェクトを開いた状態で以下の手順を実行します。

  1. コンテンツ ブラウザ「Content」 > 「Mannequin」 > 「Character」 > 「Mesh」 フォルダに移動し、UE4_Mannequin_Skeleton アセットを開きます。

    1_OpenMesh-2.png

  2. [Retarget Manager (リターゲット マネージャ)] ボタンをクリックして、[Select Rig (リグの選択)][Humanoid (ヒューマノイド)] を選択します。

    2_SetRig-2.png

    ここでは、このキャラクターの AnimBlueprint とアニメーションを Infinity Blade キャラクターに リターゲット します。

  3. コンテンツ ブラウザ で、「Infinity Blade Adversaries」 フォルダの [SK_Master_Grunt_Skeleton] に移動して、これを開きます。

    3_OpenGrunt-1.png

  4. [Retarget Manager (リターゲット マネージャ)] ボタンをクリックします。次に [Select Rig] オプションで [Humanoid] を選択します。

  5. このリグのそれぞれのノードに、スケルトンのボーンを割り当てます。

    4_AssignBones-1.png

    割り当ての完全な一覧は次の通りです。

    ノード (リグ)

    ボーン (スケルトン)

    Root

    b_MF_Root

    Pelvis

    b_MF_Pelvis

    spine_01

    b_MF_Spine_01

    spine_02

    b_MF_Spine_02

    spine_03

    b_MF_Spine_03

    clavicle_l

    b_MF_Clavicle_L

    upperarm_l

    b_MF_UpperArm_L

    lowerarm_l

    b_MF_Forearm_L

    hand_l

    b_MF_Hand_L

    clavicle_r

    b_MF_Clavicle_R

    upperarm_r

    b_MF_UpperArm_R

    lowerarm_r

    b_MF_Forearm_R

    hand_r

    b_MF_Hand_R

    neck_01

    b_MF_Neck

    head

    b_MF_Head

    thigh_l

    b_MF_Thigh_L

    calf_l

    b_MF_Calf_L

    foot_l

    b_MF_Foot_L

    thigh_r

    b_MF_Thigh_R

    calf_r

    b_MF_Calf_R

    foot_r

    b_MF_Foot_R

    リターゲティングを行う前に、アニメーションが正しく再生されるように平行移動リターゲティングを調整します。

  6. スケルトン ツリー[Show Advanced Options (詳細オプションを表示)] ボタンをクリックします。

  7. b_MF_Root ボーン上で 右クリック して、[Recursively Set Translation Retargeting Skeleton (平行移動リターゲティング スケルトンを再帰的に設定)] を選択します。

    5_TranslationRetargetingA-1.png

  8. [Translation Retargeting (平行移動リターゲティング)] で、[b_MF_Root] を [Animation (アニメーション)] に設定し、[b_MF_Pelvis][Animation Scaled (スケーリングされたアニメーション)] に設定します。

    5_TranslationRetargetingB-1.png

    スケルトンが設定されて、テンプレート キャラクターから AnimBluperint とアニメーションをリターゲットする準備が整いました。

  9. [ThirdPersonAnimBP] に移動してこれを 右クリック し、[Duplicate Anim Blueprints and Retarget (Anim ブループリントを複製してリターゲット)] を選択します。

    6_RetargetAnimBP-1.png

  10. [Select Skeleton (スケルトンの選択)] ウィンドウで SK_Master_Grunt_Skeleton アセットを選択してから [Retarget] を選びます。

    7_SetTarget-1.png

    [Change... (変更)] ボタンをクリックして、リターゲットしたアセットをどこにコピーするかを必要に応じて割り当てます。

  11. 複製したアセットに移動し、新しい AnimBlueprint を 「GruntAnimBP」 に名前変更します。

    8_RenameAnimBP-1.png

  12. ThirdPersonCharacter ブループリントに移動し、開きます。

    9_OpenThirdBP-1.png

  13. [Components] ウィンドウの [Mesh] をクリックして、[Details (詳細)] パネルで [SK_Master_Grunt][GruntAnimBP_C] を割り当てます。

    10_AssignNewCharacter-1.png

  14. コンパイル保存 してから、ブループリントを閉じます。

この時点でエディタで再生すると、WASD キーと スペースバー で、Grunt Character を制御し、走らせたりジャンプさせたりすることができます。

キャラクターが首にかけているハーネスとファーネスの動きが制限されていることに注目してください。現時点でこれらのオブジェクトは比較的スタティックですが、キャラクターの動きに合わせてこれらが動くようにすることで、キャラクターがより自然に見えるようになります。

次の手順では、AnimDynamics ノードを使用してハーネスとファーネスをアニメートし、キャラクターの動きに反応するようにします。

2 - AnimDynamics を適用する

キャラクターを Animation ブループリント で設定し、動的にアニメートするボーンを加えたので、 AnimDynamics ノードを使って Animation BlueprintAnimGraph からアニメートを行います。

この例では、キャラクターは大型のファーネスを首にかけて運んでいます。これをキャラクターの動きに応じてアニメートします。独自のキャラクターを使用している場合は、次の手順に従って、AnimDynamics で操作するボーンを割り当てて、必要に応じて設定を調整してください。

手順

  1. コンテンツ ブラウザ で、キャラクターの Animation ブループリント (GruntAnimBP) を開きます。

    1_OpenAnimBP.png

  2. MyBlueprint をクリックして、次に AnimGraph をクリックして、Animation Graph を開きます。

    2_AnimGraph.png

  3. グラフ内を 右クリック して、 AnimDynamics ノードを検索して追加します。

    3_AddNode.png

    AnimDynamics ノードでは External Force (外力) の値を取り込みます。これはシミュレーションですべてのボディに適用される付加的な力です (これはオプションの設定ですが、必要に応じて考慮してください。)このノードでは、参照ポーズ データである [Component Pose (コンポーネント ポーズ)][Alpha の値も取り込みます。Alpha 値はスケルタル制御を適用する強度で、「0」は強度なし、「1」は最強度を示します。

  4. このノードを コピーペースト し、以下のようにノードをつなげます。

    4_ConnectNodes.png

    ポーズのピンを接続すると Local to ComponentComponent to Local が自動的に作成されます。

    この例では、2 つの AnimDynamics ノードを使っています (ひとつはハーネス (Harness) に影響を与え、もうひとつはファーネス (Furnace) に影響を与えます)。

  5. シーケンスの最初の AnimDynamics ノードを選択し、[Details (詳細)] パネルで下の画像のように設定を割り当てます。

    5_Furnance1.png

    [Preview (プレビュー)] セクションの項目はすべてビジュアリゼーションに関連するもので、動きに適用されている現在の制限をビューポート内で示します。[Planar Limits (平面の制限)] を使用しており [CoM]** (重心) が有効になっていない場合は、コリジョン球体も表示することができます。これはこの例で扱う範囲外ですが、この設定を試すこともできます。これはこの例で扱う範囲外ですが、この設定を試すこともできます。

    最後に設定するのは [Bound Bone (バインドされるボーン)]、つまり影響を及ぼすボーンです。ここでは、キャラクターの furnace ボーンに設定します (このボーンはハーネスにに影響を及ぼします)。

  6. ノードを選択した状態で、下の画像のように [Setup (設定)][Constraint (コンストレイント)] セクションを設定します。

    6_Furnance1.png

    [Setup] セクションと [Constraint] セクションは、AnimDynamics で操作される動きとその範囲を定義します。[Box Extent (ボックス エクステント)] では慣性を設定し、[Local Joint Offset (ローカル ジョイント オフセット)] ではピボット ポイントを定義し、[Angular Limits (角度制限)] では動きの回転範囲を設定します (有効な場合はプレビュー ビジュアリゼーション オプションで表示されます)。

    [Setup] および [Constraint] 設定の詳細については、スケルタル制御のAnimDynamics セクションをご覧ください。

  7. [Compile (コンパイル)] をクリックして、ハーネス オブジェクトが横に傾いている様子を確認してください。

    6_Furnance1b.png

    Y 軸の Angular Limits は、上の画像で緑色のコーンで表されているように非常に大きくなっています。この範囲を狭めてみましょう。

  8. ノードを選択した状態で、[Constraints]セクションの [Angular Limits Min (最小角度制限)][Angular Limits Max (最大角度制限)] を下の画像のように設定します。

    6_Furnance1c.png

    コンパイル すると、今回はハーネスがいずれの側にもあまり傾かないようになります ([Speed] または [IsInAir?] の設定を調整した場合でもあまり傾きません)。

    6_Furnanced.png

  9. シーケンスの 2 つ目の AnimDynamics ノードを選択して、次の画像のように設定します。

    クリックしてフルサイズで表示

    上の画像の設定では、キャラクターの Furnace_Pivot ボーンをターゲットにするよう Bound Bone の設定を変更し、ファーネス オブジェクトに影響を与えるようにしました。[Twist Axis (ツイスト軸)] も調整して Y 軸上でツイストするように設定し、横方向ではなく前後に動くようにしました。また、動く範囲として、[Angular Limits] の最小値および最大値をそれぞれ 「-50」「50」 に設定しました。

  10. コンパイル保存 し、エディタで再生します。

最終結果

この例のキャラクターの動きに合わせて、コンストレイントの設定に基づいてファーネスも動くようになったことがわかります。

[Setup] セクションの Box Extent 値と Local Joint Offset 値、および [Constraints] セクションの LinearAngular Limits の値を調整して、AnimDynamics によってボーンの動きがどのように変化するかを試してみてください。

このページは Unreal Engine の前のバージョン用です。現在リリースされている Unreal Engine 5.3 に対して更新は行われていません。
Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル