AnimDynamics

キャラクターに物理ベースのセカンダリ アニメーションを適用するために使用できる軽量の物理シミュレーション ソリューションとして、Anim Dynamics AnimBP ノードを使用する方法について説明します。

AnimDynamics の Animation Blueprint ノードは、ランタイムにキャラクターの スケルタル メッシュ の一部に物理ベースのセカンダリ アニメーションを適用するために使用できる軽量の物理シミュレーション ソリューションです。キャラクターの 物理アセット を使用する 剛体ボディ と異なり、Anim Dynamics ノードはボディをシミュレートしてプロジェクトのパフォーマンスを向上させます。

anim dynamics skeletal control animation blueprint node

AnimDynamics ノードを使用して、シミュレートされた物理モーションを、ネックレス、ブレスレット、荷物、ワイヤー、髪の毛、服などの伽rカウターのスケルタルメッシュの一部、またはキャラクター モーションと連動して物理ベースでシミュレーションを行いたいその他のアイテムに適用することができます。

ここで Anim Dynamics ノードは、キャラクターの頭の動きに反応してキャラクターのアンテナの動きを動的に制御するために使用されています。

anim dynamics animation blueprint bot demo disabled

anim dynamics animation blueprint node bot demo enabled

Anim Dynamics が無効な場合

Anim Dynamics が有効な場合

概要

AnimDynamics ノードは、AnimGraph で処理されるパフォーマンス コストの低い物理ソルバです。パフォーマンスのコストを低く抑えるため、AnimDynamics ノードでは考慮が必要となるいくつかの概算を行います。

  • シミュレートされた ボックス は、各セグメントの慣性を計算するために、ボーンや物理ボディの代わりにボックスが使用されます。

  • コリジョンは計算されません。代わりに、コンストレイント を使用して動きを制限することができます。

AnimDynamics ノードは 線形角度、および 平面 コンストレイントをサポートし、物理的に影響を受けるモーションをシミュレートします。線形 および 角度 コンストレイントは、より弾力のある感覚を実現するために スプリング によって制御されますが、平面 コンストレイントは、オブジェクトが交差しない平面を作成するために使用されます。コンストレイントをそれぞれ切り替え、関連するプロパティを Anim Dynamics ノードの [Details] パネルで調整することができます。

anim dynamics skeletal control animation blueprint node constraints settings

単一ボディのシミュレーション

Anim Dynamics ノードを使用することにより、参照点としてボーンを使用してキャラクター上の任意のオブジェクトにシミュレートされた物理モーションを適用することができます。ここでは、AnimDyamics ノードの例を使って、キャラクターのランニング アニメーションに動的に反応しているドラムに動的な動きを適用しています。

anim dynamics animation blueprint node drum demo disabled

anim dynamics animation blueprint node drum demo enabled

Anim Dynamics が無効な場合

Anim Dynamics が有効な場合

ドラムのボーンを Bound Bone として選択すると、Box Constraints プロパティでバウンディング ボックスを定義して物理法則に従った動きをコントロールすることができます。Local Joint Offset は、Bound Bone のジョイントからのオフセットであり、コンストレイントの参照点を決定するために使用されます。

Box Constraints プロパティと Local Joint Offset プロパティをデフォルト値のままにしておくと、動きが見られない場合があります。これは、コンストレイントがオブジェクトの動きを妨げているためです。バウンディング ボックスのディメンションを小さくすると、動きを見ることができます。

ここでは、Anim Dynamics の Debug プロパティが有効になっており、Bounding Box プロパティと Local Joint Offset プロパティがドラム オブジェクト全体を含むように設定されていることを示します。

anim dynamics animation blueprint node debug draw enabled

この例では、Rotation Constraints も設定されています。そのため、ドラムは指定された範囲内で、設定された軸に沿ってのみ移動できます。Y 軸に沿って適用された Rotation Constraint は、緑の角度オーバーレイで表され、メッシュ自体が重ならないようにするのに便利です。

anim dynamincs animation blueprint node constraints example

Anim Dynamics ノードを使用する単体の物理シミュレーションの作成の詳細については、「ダイナミック アニメーションを作成する」ワークフロー ガイドを参照してください。

外力

External Force (外力) を物理シミュレートされたモーションに適用して、シミュレーションする物体に重さを加えたり、より慣性を与えてより反動的な動きをさせることができます。デフォルトでは、External Force ベクターは AnimGraph のピンを使用して適用されます。

anim dynamics external forces input pin property animation blueprint node

External Force を使用して AnimDynamics ノードで物理シミュレーションを作成する方法の詳細については、「ダイナミック アニメーションを作成する」ワークフロー ガイドを参照してください。

チェーン

[Details] パネルで Chain プロパティを有効にすると、Anim Dynamics ノードを使用して、ボーンのチェーンのモーションとコリジョンをシミュレートできます。

anim dynamics animation blueprint node chain demo

チェーン シミュレーションは、単一のボディ シミュレーションよりも、プロジェクトにとってはるかに多くのリソースを必要とするプロセスです。チェーン シミュレーションでは、リンクされた制約を解決する必要があります。正しく収束するためにさらに多くのイテレーションが必要となります。イテレーション回数は、[Details] パネルの Num Solver Iterations Pre Update プロパティおよび Num Solver Iterations Post Update プロパティを使用して、ノードごとに構成することもできます。

Chain プロパティを有効にして Bound BoneChain End を選択すると、Anim Dynamics はその間のボーンを使用してチェーンを生成します。Bound Bone 以外のチェーンを構成する各ボーンには、モーションやチェーン内の他のボーンとのコリジョンをシミュレートするためのコンストレイント ボックスが生成されます。適切な結果を得るためには、これらのコンストレイント ボックスを手動で調整する必要があります。

anim dynamics animation blueprint chain settings details panel

コンストレイントが重複していると、ボーンが激しく揺れたり、制御できていないモーションが表示されたりするなど、望ましくない結果が発生する可能性があります。このような結果が現れた場合は、チェーン コンストレイントが重複していないことを確認してください。

コリジョンのシミュレーション

平面球面 の制限を使用すると、AnimDyanmic ノードのシミュレートされた構造体との単純なコリジョンのシミュレーションが可能になります。

平面制限

平面制限を使用すると、オブジェクトが交差できない境界線を定めるため、構造体の動きを制限する平面を設定することができます。これらの平面コンストレイントを使用して、シミュレートされた構造がキャラクターの スケルタルメッシュ または地面の他の部分とオーバーラップするのを防ぐことができます。

anim dynamics planer consrtaints demo

Anim Dynamics の [Details (詳細)] パネルでは、Use Planer Limits プロパティを使用して平面制限を有効にしてから、[Add (+) (追加)] を使って インデックス を作成して、個々の平面制限を設定して、シミュレートされた構造の動作を制御することができます。各インデックスで、駆動するボーン を平面制限の位置に対する参照ポイントとして設定できます。次に、Plane Transform プロパティを使用して平面制限の LocationRotation、および Scale プロパティを設定し、シミュレートされた構造体が交差できない平面の境界を規定します。

たとえば、キャラクターの ルート ボーン に平面制限を追加すると、地面を表す境界線ができ、シミュレーションされたオブジェクトはその境界を超えることができなくなります。

anim dynamics planer constraint settings for floor boundary

球面制限

球面制限を使用すると、AnimDynamics 物理でシミュレートされた構造体上のポイントを囲む球体を作成し、単純な衝突防止として機能させることができます。

anim dynamics sphere constraints demo

Anim Dynamics の [Details] パネルで Use Spherical Limits プロパティを有効にすると、インデックスを [Add (+) (追加)] して新しい球面制限を作成できます。各インデックス内で球体の位置を示す参照ポイントとして機能する 駆動するボーン を設定し、Sphere Local Offset プロパティを使用して XY、および Z 軸でその位置をオフセットすることができます。また、球体の 制限半径 を設定して球体の大きさを決定したり、制限タイプを設定して球体が スケルタル メッシュ とインタラクトする方法を決定したりすることもできます。

anim dynamics sphere constraints tail settings demo

球面制限の 制限タイプOuter (外側) に設定すると、オブジェクトが球体を通過できないように球面制限を使用して構造体の衝突を防ぐことができます。また、球面制限の 制限タイプInner (内側) に設定して、構造体を含めることもできます。

プロパティ リファレンス

anim dynamics animation blueprint node details panel

AnimDynamics プロパティとその機能のリファレンスを以下に示します。

プロパティ

説明

Preview Live

有効にすると、ライブ物理オブジェクトのプレビューがビューポートのメッシュに描画されます。

Show Linear Limits

有効にすると、線形制限 (プリズマティック) のプレビューがビューポートのメッシュに描画されます。

Show Angular Limits

有効にすると、角度制限 範囲のプレビューがビューポートのメッシュに描画されます。

Show Planer Limit

有効にすると、平面制限 情報 (実際の平面、平面法線) のプレビューがビューポートのメッシュに描画されます。

Show Spherical Limit

有効にすると、球面制限 のプレビューがビューポートのメッシュに描画されます。

Show Collision Spheres

Planer Limits が有効で Collision ModeCustom SphereInner Sphere または Outer Sphere に設定されている場合、コリジョン球体を表すプレビュー球体がビューポートのメッシュに描画されます。

Reset Simulation

このノードのシミュレーションをリセットします。

Simulation Space

シミュレーションの実行に使用される空間。選択可能なオプションは次のとおりです。

  • Component:シミュレーションの原点は、スケルタル メッシュ コンポーネントの位置と方向を使用して算出されます。

  • Actor: シミュレーションの原点は、スケルタル メッシュ コンポーネントを含む アクタ の位置と方向を使用して算出されます。

  • World:シミュレーションの原点は、ワールド基点を使用して算出されます。

テレポートするキャラクターに World シミュレーション モードを使用することはお勧めしません。

  • Root Relative:シミュレーションの原点は、スケルトン のルート ボーンの位置と方向を使用して算出されます。

  • Bone Relative:シミュレーションの原点は、Relative Space Bone プロパティで指定されているボーンの位置と方向を使用して算出されます。

Relative Space Bone

Simulation SpaceBone Relative に設定されていると、シミュレーションではキャラクターの スケルトン から選択されたボーンを元の参照として使用します。

Chain

有効にすると、ノードではソルバを使用して接続されているチェーンをシミュレートします

Bound Bone

キャラクターの スケルトン からボーンを選択して物理ボディをアタッチします。Chain プロパティが有効な場合、選択されたボーンは定義されたチェーンの最上位、または最初のボーンになります。

Chain End

Chain プロパティが有効な場合、キャラクターの スケルトン から選択されたボーンは定義されたチェーンの最下位、または最後のボーンになります。Chain プロパティが無効の場合、このプロパティは無視されます。

Box Extents

物理シミュレーションに使用する XY、および Z のボックスの範囲を設定します。Simulation Space の座標は、Local Joint Offset の位置を参照しています。

Local Joint Offset

最寄りのジョイントから バインドされているボーン まで、ボックス範囲 の位置オフセットを設定します。

Angular Spring Constraints

Angular Spring プロパティが有効な場合に使用するスプリング定数を設定します。値が大きいほど、スプリングの強度が高くなります。

結果を表示するには、Angular Target Axis プロパティおよび Angular Target プロパティが定義されていることを確認してください。

Use Gravity Override

有効にすると、シミュレーションで Gravity Scale の代わりに Gravity Override プロパティの値が使用されます。

Gravity Override

Use Gravity Override が有効な場合、Gravity Scale をオーバーライドするようにベクター値を設定します。

Gravity Override in Sim Space

有効にすると、シミュレーション空間に Gravity Override が定義されます。無効にすると、ワールド空間に Gravity Override が定義されます。

Gravity Scale

シミュレーションで使用する重力のスケールを設定します。値「1」は完全な重力の重みです。「1」より大きな値の場合は、重力による力が増加します。

Linear Spring

有効にすると、ボディは Linear Spring Constraint プロパティの値をスケールとして使用し、初期位置に戻ろうとします。

Angular Spring

有効にすると、ボディは Angular Spring Constraint プロパティの値をスケールとして使用し、指定された角度ターゲットに合わせて自身を整列しようとします。

Linear Spring Constraint

線形スプリングを計算するときに使用するスプリング定数を設定します。値が大きいほど、スプリングの強度が高くなります。

Num Solver Iterations Post Update

[Details] パネルの Constraint プロパティ セクションにある 線形 制限および 傾斜 制限に渡される更新の数を設定します。Post Update は、ソルバでボディの位置を取得した後に発生する更新パスの設定数を示しています。

設定値は設定されている Number Solver Iterations Pre Update プロパティの約 4 分の 1 にすることをお勧めします。

Do Eval

有効にすると、ノードはボーン トランスフォーム評価を実施します。このプロパティを無効にすると、デフォルトのアニメーション ステートを視覚化し、物理シミュレーションをデフォルトのアニメーション ステートと簡単に比較することができます。

Num Solver Iterations Pre Update

[Details] パネルの Constraint プロパティ セクションにある 線形 制限および 傾斜 制限に渡される更新の数を設定します。Pre Update は、ソルバでボディの位置を取得した後に発生する更新パスの設定数を示しています。

設定値は設定されている NumSolverIterationsPostUpdate プロパティの値の約 4 倍にすることをお勧めします。

Linear Damping Override

Override Linear Damping プロパティが有効な場合に使用される値を設定します。

デフォルト値は「0.7」です。0.7 未満の値は効果がありません。

Angular Damping Override

Override Angular Damping プロパティが有効な場合に使用される値を設定します。

デフォルト値は「0.7」です。0.7 未満の値は効果がありません。

Angular Bias Override

Override Angular Bias プロパティが有効な場合に使用される値を設定します。

傾斜バイアスはチェーンの力のねじれを低減し、チェーンの安定性をチェックするためのデフォルト値になります。シミュレーションでは、単一ボディの角度の力がメッシュの位置から遅れて表示される場合があります。この問題が発生した場合は、正しく安定するように Angular Bias Override の値を「1.0f」まで微調整することができます。

Do Update

有効にすると、ノードは物理シミュレーションの更新を実施します。無効にすると、ベース アニメーションのポーズを表示します。このプロパティは、ノードの効果を切り替えるのに役立ちます。

Override Linear Damping

有効にすると、Linear Damping Override の値を使用して線形減衰を適用します。

Override Angular Bias

有効にすると、Angular Bias Override の値を使用して、このノードのボディに傾斜減衰を適用します。

傾斜バイアスはチェーンの力のねじれを低減するもので、チェーンの安定性をチェックするためのデフォルト値になります。単一ボディのシステムを使用している場合、角度の力がメッシュのモーションから遅れているように見えることがあります。その場合は、Override Angular Bias を有効にして、Angular Bias Override の値を「1.0f」まで微調整しながら正しく安定させます。

Override Angular Damping

有効にすると、Angular Damping Override の値を使用して傾斜減衰を適用します。

Component Linear Acc Scale

ワールド空間以外のシミュレーションを使用している場合は、このプロパティにより、ローカル空間シミュレーションに渡されるコンポーネントのワールド空間加速度の度合いが制御されます。ベクター値は XY、および Z 軸で使用されます。

Component Linear Vel Scale

ワールド空間以外のシミュレーションを使用している場合は、コンポーネントのワールド空間の速度に基づいて、ローカル空間シミュレーション内のボディにドラッグが適用されます。ベクター値は XY、および Z 軸で使用されます。

Component Applied Linear Acc Clamp

ワールド空間以外のシミュレーションを使用している場合は、全体が Component Linear Acc Scale プロパティと Component Linear Vel Scale プロパティから派生した加速度にクランプされます。

Linear XLimit Type

Limit を選択することにより、線形 X 軸モーションを制限します。Free を選択すると、すべての制限を無効にします。

Linear YLimit Type

Limit を選択することにより、線形 Y 軸モーションを制限します。Free を選択すると、すべての制限を無効にします。

Linear ZLimit Type

Limit を選択することにより、線形 Z 軸モーションを制限します。Free を選択すると、すべての制限を無効にします。

Linear Axes Min

XY、および Z の軸ごとに線形の移動を許可する最小値を設定します。

特定の軸で線形モーションをロックするには、Linear Axes Min プロパティと Linear Axis Max プロパティで対象の軸の値を「0」に設定します。

Linear Axes Max

XY、および Z の軸ごとに線形の移動を許可する最大値を設定します。

特定の軸で線形モーションをロックするには、Linear Axes Min プロパティと Linear Axis Max プロパティで対象の軸の値を「0」に設定します。

Angular Constraint Types

角運動を制限するために使用するメソッドを選択します。角度 は、Angular Limits Min プロパティ、Angular Limits Max プロパティ、Angular Target Axis プロパティ、および Angular Target プロパティで設定されているパラメータに基づいてモーションを制限します。コーン は、原点が バインドされるボーン のジョイントからベクター化され、角度が Cone Angle プロパティで設定されるコーン内のモーションを制限します。

Twist Axis

角運動を制限するときにツイストが XY、および Z のどの軸で発生するのかを選択します。

Cone Angle

Angular Constraint TypesCone に設定されている場合に使用するコーン角を設定します。

Angular Limits Min

Angular Constraint Types が角度に設定されている場合に使用する XY、および Z の各軸の最小角度制限を設定します。

Angular Limits Max

Angular Constraint Types が角度に設定されている場合に使用する XY、および Z の各軸の最大角度制限を設定します。

Angular Target Axis

XY、および Z の軸を設定します。角度は、角度ターゲット と位置を合わせるために使用されます。通常、これは バインドされているボーン に沿う軸です。

これは傾斜スプリング コンストレイントの影響を受けます。

Angular Target

傾斜スプリング コンストレイント で位置を合わせる軸を設定します。位置合わせを組み込む際に値を「0」にすると軸が無効になり、「1」 にすると軸が有効になります。

プロパティ値は通常、ボーンを指すように設定されます。たとえば、プロパティの設定が「(1.0, 0.0, 0.0)」の場合も、他の値を選択してスプリングを別の方向に揃えることができます。

External Forces

設定すると、ワールド空間で指定されている外力をシミュレーションですべてのボディに適用できます。このプロパティは、デフォルトで AnimGraph 内のノードにピンとして表示されます。このページの 「外力」セクション も参照してください。

Collision Type

Planer Limits が有効な場合に使用する解決メソッドを設定します。オプションは次のとおりです。 CoM (Center of Mass):交差する平面から重心のみを制限します。 Custom Sphere:指定した球体半径を使用して、平面と衝突させます。 Inner Sphere:ボディ範囲内で完全に適合する最大の球体を使用して、平面と衝突させます。 Outer Sphere:ボディ範囲を完全に含む最小の球体を使用して、平面と衝突させます。

Sphere Collision Radius

Collision TypeCustom Sphere に設定されている場合に球体を計算する半径を設定します。

Use Spherical Limits

有効にすると、球面制限が評価されます。

Spherical Limits

Use Spherical Limits が有効な場合、配列に球面制限を追加することができます。要素の追加後、プロパティには次のものが含まれます。

Driving Bone:球体をアタッチするボーンです。 Sphere Local Offset:球体に対するオフセットです。駆動するボーンが設定されていない場合はノード空間にあり、そうでない場合はボーン空間にあります。 Limit Radius:球体の半径を設定します。 Limit Type:球体の内側 (Inner) と外側 (Outer) のどちらでボディをロックするかを指定します。

Use Planer Limits

有効にすると、平面制限が評価されます。

Planer Limits

Use Planer Limits が有効な場合、配列に平面制限を追加することができます。要素の追加後、プロパティには次のものが含まれます。

Driving Bone:駆動するボーンを使用している場合、平面トランスフォームはボーン トランスフォームと相対的になります。 Planer Transform:平面のトランスフォームを設定します。これは Driving Bone が指定されていない場合はコンポーネント空間に、駆動するボーンが存在する場合はボーン空間にあります。平面の LocationRotation、および Scale プロパティの XY、および Z の値を設定します。

Enable Wind

有効にすると、このシミュレーションでボディへの風が考慮されます。

Wind Scale

スケールを設定して、ソルバで算出された風速を適用します。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル