Forge Dynamics Shape
Forge Dynamics は、Erin Catto による素晴らしい Box2D 上に構築された 2D 物理エンジンです。
Forge Dynamics を始める
Create > Demo Scenes > Dynamics メニューまたは Try Pro ボタンを使用して、Starter ライセンスで Forge Dynamics をテストできます。機能を試すことは可能ですが、保存とレンダリングはブロックされます。詳細については Licence Types を参照してください。
- Shape
- Mask
- Bodies
- Initial State
- Advanced
Start Frame - シミュレーションを開始するフレームを設定します。
Gravity - 重力の強さを設定します。
Ground Mode - シミュレーションがコンポジション境界にどのように反応するかを決定します。
- Off - コンポジションの端を無視します。
- Composition Bottom - コンポジションの下部と衝突します。
- Composition Edges - コンポジションのすべての端と衝突します。
Ground Friction - コンポジションの端との衝突に対する摩擦の影響度を決定する値を設定します。摩擦値が高いほど、形状はより速く速度を失います。
Velocity Iterations - Shapes に適用される力をどれだけ強く補正するか。値が高いほど結果はより正確になります。
Position Iterations - 衝突中に Shapes の位置をどれだけ強く補正して重なりを減らすか。値が高いほど結果はより正確になります。
Fields - シミュレーションに Field を追加します。
Collision Events - シミュレーションに Collision Event を追加します。Collision Events は、Body タブの設定を使用して「ボディごと」に追加することもできます。
Body に追加された Collision Events は、Forge Dynamics Shape に追加された Collision Events を上書きします。
Bodies - シミュレーションに含める Shapes を接続します。Shapes は Scene Window からこの属性にドラッグするか、right click > Add Body > select Shape、または Connection Anchor を使用して追加できます。
Bodies リストには、それらを有効/無効にしたり、特定の設定を行ったり、シミュレーションから削除したりするオプションが含まれています。
ボディごとの設定
「ボディごとの設定」という見出しのセクションBodies リスト内の歯車アイコンから「ボディごと」の設定にアクセスできます:
- Input Shape - Body として使用される Shape。
- Friction - 摩擦を決定する値を設定します。Friction 値が高いほど、Shapes はより速く速度を失います。
- Bounce - Shapes の弾み具合を決定する値を設定します。Bounce 値が高いほど、Shapes はより高く/遠くに弾みます。
- Density - Shapes の密度を決定する値を設定します。Density 値が高いほど、Shapes はより重い外観になり、移動により大きな力が必要になります。
- Gravity Scale - Shape タブの Gravity 属性が Shapes に与える影響を増減します。値
-1は Shape の Gravity 設定を反転し、値2はそれを 2 倍にします。 - Body Type:
- Dynamic - Bodies はシミュレーションに設定されたプロパティに基づいて移動します。
- Still - Bodies はその場に留まり、衝突には含まれますが、位置や回転は影響を受けません。
- Kinematic - Body の位置と回転は、Input Shape 上のキーフレームアニメーションによって決まります。
- Kinematic Hybrid - Body の位置と回転は、最後のキーフレームまで Input Shape 上のキーフレームアニメーションによって決まり、その時点でシミュレーションに加わります。
Kinematic Shapes ではキーフレームアニメーションのみがサポートされています。Behaviours によるプロシージャルアニメーションはサポートされていません。
- Constrain Hybrids - この設定は Hybrid Body にバネを取り付け、アニメーションの終了時にバネで停止するようにします。
- Hybrid Frequency - バネの周波数を Hz で設定します。
- Hybrid Damping - バネが静止状態に戻る速さを設定します。値が高いほど二次的な動きが少なくなります。
- Sensor - Sensor は衝突イベントをトリガーできるが、衝突自体は引き起こさない形状です。
- Collision Shape Type - 衝突に使用する形状を設定します。これらは「最適推定」を使用して自動的に設定されますが、手動で設定することもできます。より複雑なシナリオでは、より単純な形状がパフォーマンスの向上に役立ちますが、シミュレーションの精度は低下します。Viewport Settings で Draw Debug Information を有効にした Forge Dynamics Shape を選択すると、Viewport に衝突形状を表示できます(レイヤーがロック解除されていることを確認してください)。
- Box - Shape のバウンディングボックスを使用します。
- Circle - Shape に「最適にフィット」する円を使用します。
- Simple Polygon - Shape に「最適にフィット」する多角形を使用します。最大 12 辺の多角形を使用できます。Body を近似するのに 12 辺の多角形が使用できない場合は、代わりにボックスが使用されます。
- Complex Polygon - 凹型 Shapes をサポートするために、Shape をより小さなフィクスチャ(サブ Bodies)に分割して衝突形状を作成します。
- Chain - 開いた輪郭/パスにこの設定を使用します。これは片面衝突であり、正しい設定を見つけるには輪郭の描画方法によって異なります。ガイドとして - Edit Shape ツールで輪郭を選択すると、方向を示す小さな矢印が現れる側が衝突する側です。
- Chain (Reversed) - 開いた輪郭/パスにこの設定を使用します。Chain が輪郭に対して機能しない場合、それは「上下逆さま」であり、衝突から除外されている可能性があります。その場合はこの設定を試してください。
- Soft Body - この設定を使用して変形可能なオブジェクトをシミュレートします。
Chain Collision Shape Type は開いたパスでの使用を目的としています。開いたパスには体積がないため、力を受けることができず、Body Type に関係なく常に静的のままです。閉じたパスを Chain に設定することは可能ですが、同じ原則が適用されます。
- Max Fixtures Per Body - Collision Shape Type が Complex Polygon に設定されている場合、作成する「フィクスチャ/サブ Bodies」の最大数を設定します。
- Stiffness - Collision Shape Type が Soft Body に設定されている場合、バネの周波数を Hz(1 秒あたりの振動数)で設定します。値が高いほどソフトボディは硬くなります。
- Damping - Collision Shape Type が Soft Body に設定されている場合、振動がどれだけ速く収束するかを制御する減衰比を設定します。
- Pressure - Collision Shape Type が Soft Body に設定されている場合、体積保持のための内部圧力を設定します。値が高いほど、ボディの形状を維持するために粒子が外側に押し出されます。
- Shape Matching - Collision Shape Type が Soft Body に設定されている場合、Soft Body の粒子を元の位置に戻す影響を設定し、衝突で Shape が変形した後に形状の一貫性を維持するのに役立ちます。
- Particle Radius - Collision Shape Type が Soft Body に設定されている場合、ソフトボディのシミュレーションに使用される粒子のサイズを設定します。値が小さいほど詳細は細かくなりますが、粒子数が増え、制御が難しくなる可能性もあります。
- Max Stretch - Collision Shape Type が Soft Body に設定されている場合、バネ接続の最大許容伸びを静止長の倍数として設定します。値が低いほど、衝撃下での形状維持に優れますが、柔軟性が低下する可能性があります。値
2はバネが静止長の 2 倍まで伸びることができることを意味します。 - Live Forever - チェックすると、Body は常にシミュレーションに含まれます。
- Lifespan - Body がシミュレーションから削除されるまでの持続時間(秒単位)を設定します。
- Starts Asleep - チェックすると、Body は別の形状が衝突するまで休眠状態になります。
- Allows Sleep - チェックすると、Body は休眠状態になったときにスリープが許可されます。これはパフォーマンスの向上に役立ちます。
- Starting Velocity - Body が最初に現れる時点で Body に適用される速度を設定します。
- Starting Rotational Velocity - Body が最初に現れる時点で Body に適用される回転速度を設定します。
- Position Damping - Body の位置に対する減衰を設定します。値が高いほど、より速く減速します。
- Rotation Damping - Body の回転に対する減衰を設定します。値が高いほど、より速く回転が減速します。
- Use Maximum Velocity - チェックすると、すべての Bodies の速度が Maximum Velocity に制限されます。
- Maximum Velocity - Bodies が到達できる最大速度を設定します。
- Use Maximum Rotational Velocity - チェックすると、すべての Bodies の回転速度が Maximum Rotational Velocity に制限されます。
- Maximum Rotational Velocity - Bodies が到達できる最大回転速度を設定します。
- Collision Groups - カンマ区切りの文字列(例:
text, rocks)を入力して衝突グループを割り当てます。これらは、Fields が個々の Bodies に与える影響や、Bodies が他の Bodies とどのように相互作用するかをフィルタリングするために使用できます。 - Collides With - カンマ区切りの文字列(例:
text, rocks)を入力して、Body が衝突する特定の Collision Groups を指定します。特殊トークンnoneを使用すると、Body をすべての衝突から除外できます。 - Level Mode - サブメッシュのどのレベルに影響を与えるかを選択します。詳細は Sub-Mesh を参照してください。
- Custom… - Custom Level を手動で設定します。
- Text (Lines) - Text Shape で使用し、各行に影響を与えます。
- Text (Words) - Text Shape で使用し、各単語に影響を与えます。
- Text (Characters) - Text Shape で使用し、各文字に影響を与えます。
- All - レベルに関係なく、すべてのサブメッシュに影響を与えます。
- Custom Level - カスタムレベルを手動で設定します。
- Constraints - Constraints を追加します。
- Collision Events - Collision Events を追加します。
グローバル設定
「グローバル設定」という見出しのセクションUse Maximum Velocity - チェックすると、すべての Bodies の速度が Maximum Velocity に制限されます。
Maximum Velocity - Bodies が到達できる最大速度を設定します。
Use Maximum Rotational Velocity - チェックすると、すべての Bodies の回転速度が Maximum Rotational Velocity に制限されます。
Maximum Rotational Velocity - Bodies が到達できる最大回転速度を設定します。
Initial Position Strength - Body を開始位置に引き戻す力を設定します。この属性をキーフレーミングすることで、シミュレーションの途中で Bodies を開始位置に戻すことができます。
Initial Rotation Strength - Body を開始回転に引き戻す力を設定します。この属性をキーフレーミングすることで、シミュレーションの途中で Bodies を開始回転に戻すことができます。
Starting Velocity - すべての Bodies が最初に現れる時点で適用される速度を設定します。
Starting Rotational Velocity - すべての Bodies が最初に現れる時点で適用される回転速度を設定します。
World Scale - シミュレーションに非常に大きい、または非常に小さい Shapes がある場合に、ワールドスケールを調整してシミュレーション品質を向上させます。
Time Step - シミュレーションが 1 秒あたりに何回ステップ(計算)されるかを設定します。値が高いほど高品質なシミュレーションになりますが、パフォーマンスに影響する可能性があります。
Cache Solver(ボタン)- Forge Dynamics シミュレーションをキャッシュします。Cavalry は Playback Range を再生してキャッシュファイルをディスクに保存します。キャッシュが保存されると、このボタンは Update Cache ボタンになります。これにより、使用中の既存のキャッシュが上書きされます。
Remove Cache(ボタン)- 保存されたキャッシュファイルを削除します。これはファイルシステムから .sdcache ファイルを削除しません。
Use File Cache - チェックすると、シミュレーションを .sdcache ファイルに保存できます。これは、より重いシミュレーションでの高速再生や、Cache Offset によるリタイミングに役立ちます。Motion Blur にも必要です。
Cache File Path - キャッシュファイルの保存場所を設定します。これは、初めてソルバーをキャッシュするときに決定されるか、フォルダアイコンを使用して Finder/Explorer ウィンドウを開き、既存の .sdcache ファイルにナビゲートします。
Cache Offset - キャッシュの時間オフセットを設定します。
キャッシュを使用してシミュレーションを「巻き戻し」、必要に応じてループを作成できます。これを行うには:
- シミュレーションをキャッシュします。
- シミュレーションが終了した直後に Cache Offset のキーフレームを設定します。
- 例えば、そのキーフレームがフレーム 100 に設定された場合、再生ヘッドをフレーム 200(例:さらに 100 フレーム進める)に移動し、値 -200 のキーフレームを追加します。
フレーム 200 で値 -200 のキーフレームを設定することで、実質的にキャッシュにフレーム 200 + -200、つまり = 0 を表示するよう要求しています。つまり、キャッシュはフレーム 0(開始)に戻ります。
以下の表は、Cache Offset がどのようにフレーム 0 へのループを作成するかを示しています。
| Frame | Cache Offset Value | Equivalent Value |
|---|---|---|
| 0 | 0 | 0 |
| 100 | 0 | 100 |
| 200 | -200 | 0 |
シミュレーション中に Shape のジオメトリを更新することはできません。例えば:
- Scale のアニメーション化。
- プリミティブ Shapes の属性のアニメーション化(例:Rectangle の Width や Ellipse の Radius)。
- 頂点のアニメーション化(別名 Path Animation)。
- Deformers の使用。
- Convex Hull や Connect Shape などの Shapes のアニメーション化。