Language:
Page Info
Engine Version:

物理ベースのアニメーション

PhysicsBlend.png

このドキュメントでは、物理駆動のアニメーションをキャラクターとスケルタルメッシュに適用する方法を説明します。コンセプトは、シミュレーション結果を、キーフレーム アニメーションとブレンドし、「ラグドール」エフェクトを示す必要があるキャラクターが自然にシミュレーションされる感覚が得られるというものです。

このコンセプトの実例は、Content Examples プロジェクトにある PhysicalAnimation.umap という名前のマップ内にあります。このマップには、アニメーションが適用された一連のスケルタルメッシュがあります。各スケルタルメッシュで、何らかの方法でインタラクションすることも可能で、物理アニメーションが既存のモーションを引き継いでいることがわかります。

いかなる形態であれスケルタルメッシュで物理を使用するには、そのメッシュで物理アセットをセットアップし、適用する必要があることにご注意ください。関連ドキュメント、物理アセットツール (PhAT) を参照してください。

この例では全体的に単純化するためにスケルタルメッシュを使用しています。キャラクターやポーンに同様の技術を適用できます。これは、この例で行うようなシンプルなブループリント アクタの Event Graph ではなく、Animation ブループリントの Event Graph 内で Set All Bodies Simulate Physics ノードと Set All Bodies Below Physics Blend Weight ノードを使用すれば可能です。

セットアップ

物理をキャラクターに適用するには多くの方法がありますが、ここの例では、いくつかの可能性だけを示します。この方法では、以下の 2 つの主要ツールが必要です。Set All Bodies Simulate Physics ノードと Set All Bodies Below Physics Blend Weight ノードの 2 つです。通常はキャラクターの Animation ブループリントの Event Graph 内に配置されます。

PhysicsWeghtNodes.png

Set All Bodies Below Simulate Physics

Set All Bodies Below Simulate Physics ノードは、物理アセット ボディをスケルタルメッシュ上で再帰的にアクティベートし、任意のボーンで物理のシミュレーションを開始し、ボーン チェーンを再帰的に下方に移動します。たとえば、左鎖骨にシミュレーションを開始するように指示すると、スケルタル階層でそこから下方のすべてのボーンもシミュレーションし、足を引きずって歩いたり、ラグドール化した腕になります。簡単に言うと、このノードは任意のボーンからの物理シミュレーションを開始または停止するオン / オフのスイッチと考えることができます。

Set All Bodies Below Physics Blend Weight

このノードは、アニメートされたスケルタルメッシュに対して物理アセットがどの程度影響を及ぼすかを制御します。値 1.0 で、任意のボーンとそれより下のボーンは完全に物理駆動になります。値 0.0 で、スケルタルメッシュがオリジナルのキーフレーム アニメーションに戻ります。多くの場合、Physics Blend Weight 値をスムーズにアニメートできるように、このノードを各ティックで動作させます。

ヒットベースの作用の概要

ヒットベースの物理作用は、キャラクターのシミュレーションで一般的に使用します。例えば、キャラクターが発射物によって攻撃された場合などがあります。主に、以下を必要とします。

  • 攻撃されるボーンの名前を取得します。名前取得は、即効性のある武器のトレース、または該当する場合は projectile クラス内のトレースによって行うことができます。

  • 一般的に Set All Bodies Below Simulate Physics ノードを介して、Event Graph で使用するために、そのボーン名をキャラクターの Animation ブループリントに入れます。これによってシミュレーション システムがアクティベートします。

  • Set All Below Physics Blend Weight ノードで [Physics Blend Weight] プロパティをコントロールします。物理作用がブレンドして、その後元に戻るように、一般的にこれを 1.0 まで迅速にアニメートしてから、 0.0 に戻します。これは一般的に Animation ブループリントの Event Graph 内から行います。

  • 作用が完了し、Physics Blend Weight が 0 に戻ったら、Set All Bodies Below Simulate Physics ノードを再度使用して、シミュレーションを停止します。

Content Examples プロジェクト内にある PhysicalAnimation.umap level の Example 1.2 でこの技術の例をご覧いただくことができます。