2011/03/18

Building demolition建築物爆破流程


整理一下建築物爆破(Building demolition)的製作心得. 就像所有的視覺特效一樣, 想像很容易但實際製作上卻會遇到很多愈想不到的問題, 這邊把建模->拆UV->碎模型->碎裂的物理模擬->添加煙霧->算圖 這一整個流程的細節重點做簡單的說明.

首先是建模. 因為之後要做實體碎裂, 不是只有單純的算圖表現而已, 所以模型要很嚴格的要求1.不能有重疊面 2.所有相接的vertex要焊接起來 3.不可以有開口的面 這是最基本的要求. 如果模型做得太細緻的話之後在做切割的時候會有問題.

拆UV. 因為建築物本身是經過好幾的布林操作合併而成的, 所以每個原件再合併以前就要先拆好UV, 如果是合併後再拆的話會變得很麻煩. 因為Rayfire或是VolumeBreaker在切碎的時候, 會自動在截斷面給予新的material ID, 所以那部份的UV就不必擔心了.

材質, 因為建築本身會分好幾個區塊, 所以要分好Material ID. 材質會建議用程序性材質會比較好掌控. max 2012的Substance Texture會是不錯的選擇.


用Rayfire的Voronoi的切割算法, 結果如箭頭所示建築物內部(凹面)出現計算錯誤.

利用Cebas VolumeBreaker切割出來的效果. 可以用Pivot為中心做不同密度的切割效果. "幾乎"沒有計算錯誤. 但是如果你分割的碎片過細的話 還是有可能產生具有重疊面, 破面的模型. 所以要適度的調整參數.

如果像是雕像這種的凸面模型, 切割就容易得多了.

碎裂, 如果你是一簡單的Box要切碎的話, 其實很單純. 用Rayfire, SplitItUP, Voroni maxscript這些都可以做得很好. 但是如建築物模型這種有凹面(concave)的幾合體, 狀況就變得很複雜. 因為碎裂涉及到切割, 還有把切割截面補洞(Caphole). 這個動作往往會計算錯誤.

VolumeBreaker的參數非常不直覺. 建議參考上面的數值調整到適合您的大小.

物理模擬使用的是Rayfire的PhysX即時物理運算. 基本上是先讓所有的碎片inactivate (不計算物理), 等到移動的box碰觸到碎片的時候才讓碎片計算物理模擬, 因此會有由上往下的碎裂效果. 細節上會把一大片的碎片先做成group, Rayfire有功能可以讓group內的碎片先黏在一起, 再根據衝撞的強度來讓這些碎片再分離開. 參數設定如下:







碎裂的物理動態好了以後, 接下來就是要處理煙塵的部分了. 我們要用碎片當做煙霧產生的來源. 所以用Particle Flow的speed test, 在選取內的碎片當作Position Object, 如此只有當碎片達到某個速度的時候, 才會產生煙霧所要使用的粒子.


PF也可以用來產生更細小的碎片. 所以沒有必要把所有的碎片利用Rayfire來產生, 畢竟用物理算的東西需要很高的效能與精確性. 極小的碎片用PF反而更有效率.

以PF做為來源

以Cylinder做為來源

接下來, 進入到Phoenix的階段, 請參考之前的教學設定. 主要差別是場景中有兩個PHXSource, 一個是用PF當作來源, 另外一個是圓柱擺放在建築物底部, 做為建築物垮下地面揚起的煙塵的來源.

Displacement是增加細節的好方法

Truc的Sampler Type可以表現極高的細節, 效果很寫實

Phoenix FD製作細節表現的煙有兩種方式: 一種是用displacement來增加細節; 另外一種是把Sampler Type由spherical改為Truc, 同時把cell size調到很低. 後者可以做出極寫實的細節但是會耗費大量cache. 所以這裡我們用的是前者的方法.

增加了煙霧的倒塌效果也增加了寫實度.




以上是爆破的流程, 打好基礎後接下來就是要製作更細緻的效果了 ; )

[相關教學]

Post a Comment