2011/04/02

thinkingParticles R4: volumeBreaker程序性碎裂


近花了點時間把很久以前就想學的thinkingParticles弄懂了它的使用流程. 用這個東西可以實現程序性的碎裂效果: 也就是一旦節點都串好了以後 只要替換模型就可以隨時產生新的寫實碎裂效果了. 相當的理想.

這裡翻譯整理出主要涉及的操作子(operator)的重要參數:
  1. ShapeCollision 用來計算實體碰撞
  2. VolumeBreak用來把模型切碎
  3. VolumeActivate Operator用來控制模型碎裂的動態過程

---以下為翻譯---

//SC Operator//
SC是新的 ShapeCollision操作子(Operator), 這是原廠要來取代舊的ShapeCollision operator. 這個新的操作子能夠提供更好的解算功能, 用的是最新的演算法來計算剛體動態, 提供更快速, 更精確的結果, 跟舊的相比會更有效率, 效能也比較好! 但是為了能向下相容, 舊的 ShapeCollision還是保留在那邊, 算出來的結果跟以前一樣.

我們建議你用新的SC操作子, 不要用舊的ShapeCollision!

用新的SC有以下好處:
  • 支援多點Joint類型
  • 加強對多核心計算的支援
  • 再也不需要指定接觸的類型了(contact type)
  • 加快了整體速度
  • 大大的減少了快速的抖動問題
  • 添加了Voxel debug模式
SC操作子的威力到底如何呢? 我們可以在暢銷的電影2012裡面知道它的成功, 這在電影裡面的破壞特效暫了重要角色!

雖然你可以在 DynamicSet裡面添加多個 Shape Collision operators, 建議你盡量用越少越好, 因為這會需要大量的記憶體來計算.

Floor Node - (Node) 地面節點. 這個節點可以輸入地面的資料做為碰撞之用, 地面物件會自動設定為不可移動, 且具有無限大的質量.

Collision Iteration 碰撞迭代計算. 這個參數可以用來計算物件的真實碰撞點, 這個數值越小, 模擬的速度會越快, 但是結果會不精確. 大部分的狀況建議你設定成5-10, 如果你希望結果精確一點那可以設定成30.

Contact Iteration 接觸的迭代計算. 用來計算兩個物件接觸的細分, 產生的接觸狀況, 面對面(face to face)在物理引擎裡面是最複雜的計算狀況, 增加這個數值會產生更寫實的模擬結果.

Deactivation Time 取消作用的時間. 這個參數用來控制粒子到底是真的在移動還是只是在胡亂的抖動, 如果粒子落在這個時間區間裡面, 則會參考它的速度或是旋轉數值, TP4會據此來決定是否要讓粒子進入休眠或是凍結狀態. 這個參數越小粒子就凍結的越快, 這個參數會跟以下兩個參數協同作用一起影響粒子的動態.

Velocity Threshold 速度的閾值. 這個參數定義最小速度, 讓粒子進入凍結狀態.

Rotation Threshold旋轉的閾值. 這個參數定義最小旋轉數值, 讓粒子進入凍結狀態.

//VolumeBreak Operator//
VolumeBreak操作子是一個會計算實體模型碎裂的工具. 這個操作子是由 volumeBreaker為基礎, 快速地創造出模型的碎片.這些碎片是真的根據模型體積計算出來的.有了 volumeBreaker , cebas公司帶給您好萊屋特效等級的破壞工具, 而VolumeBreaker的開發有徵詢過顧問以及特效專家們 , 這些專家參與的都是數百萬等級的大電影的人.

VolumeBreak幾乎可以套用在任何類型的模型, 包括那種很懶惰的人做出來的模型 (沒有完全閉合的模型). VolumeBreaker 會試著補償模型本身的錯誤, 例如沒有焊接的點, 或是開啟的邊(open edges). 這個操作子所計算出來的碎片能夠被thinkingParticles其它的操作子所取用.

Activate 啟動碎裂. 定義碎裂的百分比, 100%代表完全碎裂 ; 0%代表完全不碎. 通常會對這個參數設定動畫 當然你也可以用動態的方式控制

Raster
細分的大小 這會計算每個碎片的最小距離 因此可以控制碎片的大小 請注意如果把這個參數設定太小或產生大量模型碎片 會耗費許多計算時間

//VolumeActivate Operator//
這個操作子是thinkingParticles的新血, 把TP的整體功能強化! 這是第一次你可以在TP裡面進行跨DynamicSets的, 把資料由一個操作子餵到另外一個操作子的功能. 這個特殊的功能, VolumeActivate operator可以取代並且蓋過 VolumeBreak operator的activation data. 如此, 你就可以用TP做出多點衝擊(多個撞擊點)的效果了!

簡單的說, 你可以控制 VolumeBreak operator裡面的物件何時碎裂, 在哪個地方碎裂, 以及要怎樣碎裂. 請注意, 這個VolumeActivate Operator必須要搭配VolumeBreak operator才能使用, 而且是被用來告訴VolumeBreak operator他哪邊要進行碎裂(透過Position input); 碎裂的範圍有多遠(透過Initial Length控制) ;而這個範圍擴張的速度有多快 (由Spreading Second控制); 甚至也能決定發生的位置類型(World, Object, Normalized).

Position - 起始長度. 設定volumeBreak碎裂效果的起始長度, 這個長度是以 position 參數為中心做為起始, 告訴VolumeBreak內部碎裂的起始範圍, 來決定啟動 VB fragments的範圍有多廣.
Spreading Length - 擴張長度. 定義碎裂由上述參數起始, 最大可延伸到多大的碎裂範圍.

Spreading Second - 擴張秒數. 這設定要釋放所有的碎片要花多久的時間 , 這個參數可以用來模擬出震波效果.

----翻譯完畢----

[推薦文章]

No comments: