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

AnimDynamics ノードを使用して、シミュレートされた物理モーションを、ネックレス、ブレスレット、荷物、ワイヤー、髪の毛、服などの伽rカウターのスケルタルメッシュの一部、またはキャラクター モーションと連動して物理ベースでシミュレーションを行いたいその他のアイテムに適用することができます。
ここで Anim Dynamics ノードは、キャラクターの頭の動きに反応してキャラクターのアンテナの動きを動的に制御するために使用されています。
![]() |
![]() |
---|---|
Anim Dynamics が無効な場合 | Anim Dynamics が有効な場合 |
概要
AnimDynamics ノードは、AnimGraph で処理されるパフォーマンス コストの低い物理ソルバです。パフォーマンスのコストを低く抑えるため、AnimDynamics ノードでは考慮が必要となるいくつかの概算を行います。
-
シミュレートされた ボックス は、各セグメントの慣性を計算するために、ボーンや物理ボディの代わりにボックスが使用されます。
-
コリジョンは計算されません。代わりに、コンストレイント を使用して動きを制限することができます。
AnimDynamics ノードは 線形、角度、および 平面 コンストレイントをサポートし、物理的に影響を受けるモーションをシミュレートします。線形 および 角度 コンストレイントは、より弾力のある感覚を実現するために スプリング によって制御されますが、平面 コンストレイントは、オブジェクトが交差しない平面を作成するために使用されます。コンストレイントをそれぞれ切り替え、関連するプロパティを Anim Dynamics ノードの [Details] パネルで調整することができます。

単一ボディのシミュレーション
Anim Dynamics ノードを使用することにより、参照点としてボーンを使用してキャラクター上の任意のオブジェクトにシミュレートされた物理モーションを適用することができます。ここでは、AnimDyamics ノードの例を使って、キャラクターのランニング アニメーションに動的に反応しているドラムに動的な動きを適用しています。
![]() |
![]() |
---|---|
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 プロパティがドラム オブジェクト全体を含むように設定されていることを示します。

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

Anim Dynamics ノードを使用する単体の物理シミュレーションの作成の詳細については、「ダイナミック アニメーションを作成する」ワークフロー ガイドを参照してください。
外力
External Force (外力) を物理シミュレートされたモーションに適用して、シミュレーションする物体に重さを加えたり、より慣性を与えてより反動的な動きをさせることができます。デフォルトでは、External Force ベクターは AnimGraph のピンを使用して適用されます。

External Force を使用して AnimDynamics ノードで物理シミュレーションを作成する方法の詳細については、「ダイナミック アニメーションを作成する」ワークフロー ガイドを参照してください。
チェーン
[Details] パネルで Chain プロパティを有効にすると、Anim Dynamics ノードを使用して、ボーンのチェーンのモーションとコリジョンをシミュレートできます。

チェーン シミュレーションは、単一のボディ シミュレーションよりも、プロジェクトにとってはるかに多くのリソースを必要とするプロセスです。チェーン シミュレーションでは、リンクされた制約を解決する必要があります。正しく収束するためにさらに多くのイテレーションが必要となります。イテレーション回数は、[Details] パネルの Num Solver Iterations Pre Update プロパティおよび Num Solver Iterations Post Update プロパティを使用して、ノードごとに構成することもできます。
Chain プロパティを有効にして Bound Bone と Chain End を選択すると、Anim Dynamics はその間のボーンを使用してチェーンを生成します。Bound Bone 以外のチェーンを構成する各ボーンには、モーションやチェーン内の他のボーンとのコリジョンをシミュレートするためのコンストレイント ボックスが生成されます。適切な結果を得るためには、これらのコンストレイント ボックスを手動で調整する必要があります。

コンストレイントが重複していると、ボーンが激しく揺れたり、制御できていないモーションが表示されたりするなど、望ましくない結果が発生する可能性があります。このような結果が現れた場合は、チェーン コンストレイントが重複していないことを確認してください。
コリジョンのシミュレーション
平面 と 球面 の制限を使用すると、AnimDyanmic ノードのシミュレートされた構造体との単純なコリジョンのシミュレーションが可能になります。
平面制限
平面制限を使用すると、オブジェクトが交差できない境界線を定めるため、構造体の動きを制限する平面を設定することができます。これらの平面コンストレイントを使用して、シミュレートされた構造がキャラクターの スケルタルメッシュ または地面の他の部分とオーバーラップするのを防ぐことができます。

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

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

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

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

AnimDynamics プロパティとその機能のリファレンスを以下に示します。
プロパティ | 説明 |
---|---|
Preview Live | 有効にすると、ライブ物理オブジェクトのプレビューがビューポートのメッシュに描画されます。 |
Show Linear Limits | 有効にすると、線形制限 (プリズマティック) のプレビューがビューポートのメッシュに描画されます。 |
Show Angular Limits | 有効にすると、角度制限 範囲のプレビューがビューポートのメッシュに描画されます。 |
Show Planer Limit | 有効にすると、平面制限 情報 (実際の平面、平面法線) のプレビューがビューポートのメッシュに描画されます。 |
Show Spherical Limit | 有効にすると、球面制限 のプレビューがビューポートのメッシュに描画されます。 |
Show Collision Spheres | Planer Limits が有効で Collision Mode が Custom Sphere、Inner Sphere または Outer Sphere に設定されている場合、コリジョン球体を表すプレビュー球体がビューポートのメッシュに描画されます。 |
Reset Simulation | このノードのシミュレーションをリセットします。 |
Simulation Space | シミュレーションの実行に使用される空間。選択可能なオプションは次のとおりです。
テレポートするキャラクターに World シミュレーション モードを使用することはお勧めしません。
|
Relative Space Bone | Simulation Space が Bone Relative に設定されていると、シミュレーションではキャラクターの スケルトン から選択されたボーンを元の参照として使用します。 |
Chain | 有効にすると、ノードではソルバを使用して接続されているチェーンをシミュレートします |
Bound Bone | キャラクターの スケルトン からボーンを選択して物理ボディをアタッチします。Chain プロパティが有効な場合、選択されたボーンは定義されたチェーンの最上位、または最初のボーンになります。 |
Chain End | Chain プロパティが有効な場合、キャラクターの スケルトン から選択されたボーンは定義されたチェーンの最下位、または最後のボーンになります。Chain プロパティが無効の場合、このプロパティは無視されます。 |
Box Extents | 物理シミュレーションに使用する X、Y、および 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 | ワールド空間以外のシミュレーションを使用している場合は、このプロパティにより、ローカル空間シミュレーションに渡されるコンポーネントのワールド空間加速度の度合いが制御されます。ベクター値は X、Y、および Z 軸で使用されます。 |
Component Linear Vel Scale | ワールド空間以外のシミュレーションを使用している場合は、コンポーネントのワールド空間の速度に基づいて、ローカル空間シミュレーション内のボディにドラッグが適用されます。ベクター値は X、Y、および 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 | X、Y、および Z の軸ごとに線形の移動を許可する最小値を設定します。 特定の軸で線形モーションをロックするには、Linear Axes Min プロパティと Linear Axis Max プロパティで対象の軸の値を「0」に設定します。 |
Linear Axes Max | X、Y、および 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 | 角運動を制限するときにツイストが X、Y、および Z のどの軸で発生するのかを選択します。 |
Cone Angle | Angular Constraint Types が Cone に設定されている場合に使用するコーン角を設定します。 |
Angular Limits Min | Angular Constraint Types が角度に設定されている場合に使用する X、Y、および Z の各軸の最小角度制限を設定します。 |
Angular Limits Max | Angular Constraint Types が角度に設定されている場合に使用する X、Y、および Z の各軸の最大角度制限を設定します。 |
Angular Target Axis | X、Y、および 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 Type が Custom 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 が指定されていない場合はコンポーネント空間に、駆動するボーンが存在する場合はボーン空間にあります。平面の Location、Rotation、および Scale プロパティの X、Y、および Z の値を設定します。 |
Enable Wind | 有効にすると、このシミュレーションでボディへの風が考慮されます。 |
Wind Scale | スケールを設定して、ソルバで算出された風速を適用します。 |