跳到內容

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

Common Attributes +

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。

參見 Common Attributes

Bodies - 連接要包含在模擬中的 Shapes。可以透過 Scene Window 將 Shapes 拖入此屬性,使用 right click > Add Body > select Shape,或透過 Connection Anchor 添加。

Bodies 列表包含啟用/停用它們、設定特定設定或從模擬中移除它們的選項。

您可以透過 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 InformationForge 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 - 設定快取的時間偏移。

您可以使用快取來”倒回”模擬,並在需要時建立循環。為此:

  1. 快取模擬。
  2. 在模擬剛結束後,為 Cache Offset 設定一個關鍵影格。
  3. 例如,如果該關鍵影格設定在第 100 影格,則將播放頭移動到第 200 影格(例如再前進 100 影格),然後添加一個值為 -200 的關鍵影格。

透過在第 200 影格設定值為 -200 的關鍵影格,您實際上是在要求快取顯示第 200 + -200 影格,即 = 0。即快取回到了第 0 影格(開始)。

下表說明了 Cache Offset 如何建立回到第 0 影格的循環。

FrameCache Offset ValueEquivalent Value
000
1000100
200-2000

模擬過程中無法更新 Shape 的幾何形狀。例如:

  • 動畫化 Scale
  • 動畫化原始 Shapes 的屬性(例如 Rectangle 的 Width 或 Ellipse 的 Radius)。
  • 動畫化頂點(又名 Path Animation)。
  • 使用 Deformers
  • 動畫化像 Convex HullConnect Shape 這樣的 Shapes。