キャラクターの動きにより現実味を与える方法の一つとして、キャラクターが持つアイテムや着ているアイテムにダイナミック アニメーションを加える方法があります。 AnimDynamics を使用することで、髪の毛やネックレス、ブレスレット、剣、小物入れなど、現実世界であなたの動きに合わせて動くものを、ゲームの中でもキャラクターの動きに合わせて動かすことができます。
この操作ガイドでは、キャラクターに AnimDynamics を適用して、下のビデオで示されている効果を与える方法を説明します。
上のビデオでは、キャラクターが首にかけているハーネス (装着帯) とファーネスに AnimDynamics が適用されています。いるハーネス (harness) とファーネス (furnace) に AnimDynamics を適用します。キャラクターの動きに合わせてハーネスがやや動き、ファーネスが前後により大きく揺れます。 これらが動く量は AnimDynamics ノードの [Details (詳細)] パネルで調整できるため、必要に応じてより現実味のある動きを表現することができます。追加のコンストレイントを加えて、ボーンの動きのみを操作することもできます。
AnimBlueprint を適用済みのキャラクターおよび AnimDynamics を実行する準備の整ったボーンがすでにある場合は、手順 2 に進んでください。
1 - 必要な設定
ダイナミック アニメーションをキャラクターに適用する前に、使用するキャラクターを設定する必要があります。テンプレート キャラクターには使用可能なダイナミック ボーンが含まれていないため、テンプレート キャラクターからアニメーションを、AnimDynamics の影響を受けるボーンを含む「Infinity Blade」キャラクターにリターゲットします。
このガイドでは、Blueprint Third Person テンプレートを使用して新しいプロジェクトを作成しました。
次に、Marketplace で無料で入手可能な Infinity Blade:Adversaries パックをプロジェクトに追加しました。

Infinity Blade アセットが追加された Blueprint Third Person ベースのテンプレート プロジェクトを開いた状態で以下の手順を実行します。
-
コンテンツ ブラウザ で 「Content」 > 「Mannequin」 > 「Character」 > 「Mesh」 フォルダに移動し、UE4_Mannequin_Skeleton アセットを開きます。
-
[Retarget Manager (リターゲット マネージャ)] ボタンをクリックして、[Select Rig (リグの選択)] で [Humanoid (ヒューマノイド)] を選択します。
ここでは、このキャラクターの AnimBlueprint とアニメーションを Infinity Blade キャラクターに リターゲット します。
-
コンテンツ ブラウザ で、「Infinity Blade Adversaries」 フォルダの [SK_Master_Grunt_Skeleton] に移動して、これを開きます。
-
[Retarget Manager (リターゲット マネージャ)] ボタンをクリックします。次に [Select Rig] オプションで [Humanoid] を選択します。
-
このリグのそれぞれのノードに、スケルトンのボーンを割り当てます。
割り当ての完全な一覧は次の通りです。
ノード (リグ) ボーン (スケルトン) 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 リターゲティングを行う前に、アニメーションが正しく再生されるように平行移動リターゲティングを調整します。
-
スケルトン ツリー の [Show Advanced Options (詳細オプションを表示)] ボタンをクリックします。
-
b_MF_Root ボーン上で 右クリック して、[Recursively Set Translation Retargeting Skeleton (平行移動リターゲティング スケルトンを再帰的に設定)] を選択します。
-
[Translation Retargeting (平行移動リターゲティング)] で、[b_MF_Root] を [Animation (アニメーション)] に設定し、[b_MF_Pelvis] を [Animation Scaled (スケーリングされたアニメーション)] に設定します。
スケルトンが設定されて、テンプレート キャラクターから AnimBluperint とアニメーションをリターゲットする準備が整いました。
-
[ThirdPersonAnimBP] に移動してこれを 右クリック し、[Duplicate Anim Blueprints and Retarget (Anim ブループリントを複製してリターゲット)] を選択します。
-
[Select Skeleton (スケルトンの選択)] ウィンドウで SK_Master_Grunt_Skeleton アセットを選択してから [Retarget] を選びます。
[Change... (変更)] ボタンをクリックして、リターゲットしたアセットをどこにコピーするかを必要に応じて割り当てます。
-
複製したアセットに移動し、新しい AnimBlueprint を 「GruntAnimBP」 に名前変更します。
-
ThirdPersonCharacter ブループリントに移動し、開きます。
-
[Components] ウィンドウの [Mesh] をクリックして、[Details (詳細)] パネルで [SK_Master_Grunt] と [GruntAnimBP_C] を割り当てます。
-
コンパイル し 保存 してから、ブループリントを閉じます。
この時点でエディタで再生すると、WASD キーと スペースバー で、Grunt Character を制御し、走らせたりジャンプさせたりすることができます。
キャラクターが首にかけているハーネスとファーネスの動きが制限されていることに注目してください。現時点でこれらのオブジェクトは比較的スタティックですが、キャラクターの動きに合わせてこれらが動くようにすることで、キャラクターがより自然に見えるようになります。
次の手順では、AnimDynamics ノードを使用してハーネスとファーネスをアニメートし、キャラクターの動きに反応するようにします。
2 - AnimDynamics を適用する
キャラクターを Animation ブループリント で設定し、動的にアニメートするボーンを加えたので、 AnimDynamics ノードを使って Animation Blueprint の AnimGraph からアニメートを行います。
この例では、キャラクターは大型のファーネスを首にかけて運んでいます。これをキャラクターの動きに応じてアニメートします。独自のキャラクターを使用している場合は、次の手順に従って、AnimDynamics で操作するボーンを割り当てて、必要に応じて設定を調整してください。
手順
-
コンテンツ ブラウザ で、キャラクターの Animation ブループリント (GruntAnimBP) を開きます。
-
MyBlueprint をクリックして、次に AnimGraph をクリックして、Animation Graph を開きます。
-
グラフ内を 右クリック して、 AnimDynamics ノードを検索して追加します。
AnimDynamics ノードでは External Force (外力) の値を取り込みます。これはシミュレーションですべてのボディに適用される付加的な力です (これはオプションの設定ですが、必要に応じて考慮してください。)このノードでは、参照ポーズ データである [Component Pose (コンポーネント ポーズ)] と [Alpha の値も取り込みます。Alpha 値はスケルタル制御を適用する強度で、「0」は強度なし、「1」は最強度を示します。
-
このノードを コピー & ペースト し、以下のようにノードをつなげます。
ポーズのピンを接続すると Local to Component と Component to Local が自動的に作成されます。
この例では、2 つの AnimDynamics ノードを使っています (ひとつはハーネス (Harness) に影響を与え、もうひとつはファーネス (Furnace) に影響を与えます)。
-
シーケンスの最初の AnimDynamics ノードを選択し、[Details (詳細)] パネルで下の画像のように設定を割り当てます。
[Preview (プレビュー)] セクションの項目はすべてビジュアリゼーションに関連するもので、動きに適用されている現在の制限をビューポート内で示します。[Planar Limits (平面の制限)] を使用しており [CoM]** (重心) が有効になっていない場合は、コリジョン球体も表示することができます。これはこの例で扱う範囲外ですが、この設定を試すこともできます。これはこの例で扱う範囲外ですが、この設定を試すこともできます。
最後に設定するのは [Bound Bone (バインドされるボーン)]、つまり影響を及ぼすボーンです。ここでは、キャラクターの furnace ボーンに設定します (このボーンはハーネスにに影響を及ぼします)。
-
ノードを選択した状態で、下の画像のように [Setup (設定)] と [Constraint (コンストレイント)] セクションを設定します。
[Setup] セクションと [Constraint] セクションは、AnimDynamics で操作される動きとその範囲を定義します。[Box Extent (ボックス エクステント)] では慣性を設定し、[Local Joint Offset (ローカル ジョイント オフセット)] ではピボット ポイントを定義し、[Angular Limits (角度制限)] では動きの回転範囲を設定します (有効な場合はプレビュー ビジュアリゼーション オプションで表示されます)。
[Setup] および [Constraint] 設定の詳細については、スケルタル制御のAnimDynamics セクションをご覧ください。
-
[Compile (コンパイル)] をクリックして、ハーネス オブジェクトが横に傾いている様子を確認してください。
Y 軸の Angular Limits は、上の画像で緑色のコーンで表されているように非常に大きくなっています。この範囲を狭めてみましょう。
-
ノードを選択した状態で、[Constraints]セクションの [Angular Limits Min (最小角度制限)] と [Angular Limits Max (最大角度制限)] を下の画像のように設定します。
コンパイル すると、今回はハーネスがいずれの側にもあまり傾かないようになります ([Speed] または [IsInAir?] の設定を調整した場合でもあまり傾きません)。
-
シーケンスの 2 つ目の AnimDynamics ノードを選択して、次の画像のように設定します。
クリックしてフルサイズで表示
上の画像の設定では、キャラクターの Furnace_Pivot ボーンをターゲットにするよう Bound Bone の設定を変更し、ファーネス オブジェクトに影響を与えるようにしました。[Twist Axis (ツイスト軸)] も調整して Y 軸上でツイストするように設定し、横方向ではなく前後に動くようにしました。また、動く範囲として、[Angular Limits] の最小値および最大値をそれぞれ 「-50」 と 「50」 に設定しました。
-
コンパイル し 保存 し、エディタで再生します。
最終結果
この例のキャラクターの動きに合わせて、コンストレイントの設定に基づいてファーネスも動くようになったことがわかります。
[Setup] セクションの Box Extent 値と Local Joint Offset 値、および [Constraints] セクションの Linear と Angular Limits の値を調整して、AnimDynamics によってボーンの動きがどのように変化するかを試してみてください。