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

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

Windows
MacOS
Linux

キャラクターの動きにより現実味を与える方法の一つとして、キャラクターが持つアイテムや着ているアイテムにダイナミック アニメーションを加える方法があります。 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 によってボーンの動きがどのように変化するかを試してみてください。

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