Forge Dynamics Shape
Forge Dynamics 是一個 2D 物理引擎,基於 Erin Catto 開發的出色 Box2D。
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”的基礎上添加。
添加到 Body 的任何 Collision Events 將覆寫添加到 Forge Dynamics Shape 的 Collision Events。
Bodies - 連接要包含在模擬中的 Shapes。可以透過 Scene Window 將 Shapes 拖入此屬性,使用 right click > Add Body > select Shape,或透過 Connection Anchor 添加。
Bodies 列表包含啟用/停用它們、設定特定設定或從模擬中移除它們的選項。
每個 Body 的設定
标题为“每個 Body 的設定”的章节您可以透過 Bodies 列表中的齒輪圖示存取”每個 Body”的設定:
- Input Shape - 用作 Body 的 Shape。
- Friction - 設定一個值來確定摩擦力。較高的 Friction 值將導致 Shapes 更快地失去速度。
- Bounce - 設定一個值來確定 Shapes 的彈性程度。較高的 Bounce 值將導致 Shapes 彈得更高/更遠。
- Density - 設定一個值來確定 Shapes 的密度。較高的 Density 值將賦予 Shapes 更重的外觀,並導致它們需要更大的力來移動。
- Gravity Scale - 增加/減少 Shape 選項卡下 Gravity 屬性對 Shapes 的影響。值為
-1將反轉 Shape 的 Gravity 設定,值為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 條邊的多邊形。如果無法使用 12 邊形來近似 Body,則將使用方框代替。
- Complex Polygon - 透過將 Shape 分割為更小的夾具(子 Bodies)來建立碰撞形狀,以支援凹形 Shapes。
- 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(每秒振動次數)設定彈簧頻率。較高的值使軟體更堅硬。
- 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意味著彈簧可以拉伸到其靜止長度的兩倍。 - 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 首次出現的時刻施加於所有 Bodies 的速度。
Starting Rotational Velocity - 設定在所有 Bodies 首次出現的時刻施加於所有 Bodies 的旋轉速度。
World Scale - 當模擬中存在非常大或非常小的 Shapes 時,使用此選項調整世界比例以改善模擬品質。
Time Step - 設定模擬每秒步進(計算)的次數。較高的值將產生更高品質的模擬,但可能會影響效能。
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。