2011/04/21

Thinking particles的物理碰撞與輸出


Cebas Thinking particles可以做出很多變化, 但是如果只是單純要用來做物理碰撞模擬, 反而不會比Particle Flow困難. 要讓TP產生的粒子進行真實的物理碰撞就要靠Opertaor/ShapeCollision/SC 的Operator.


雖然說SC Node有處理碰撞的參數, 不過每個Particle Group裡面也有Voxel Grid的參數. 如果模擬結果覺得有黏滯感, 可以把Dynamic Friction由100調降到10左右即可.

PhysX plugin沒有concave的類型 必須手動許多基本模型拼湊出凹面的碰撞體.

Rayfire不支援使用Concave的模型. 雖然可以用Group的方式處理, 但是比較麻煩.

一般在用NVidia PhysX 3ds max plugin或是Rayfire做物理模擬時都要考慮凹面或是凸面. 大部分與設定都是用凸面(convex)在做計算, 所以如果模型如甜甜圈這種有凹面的就容易有計算錯誤 或是粒子外推等問題.

紅色代表voxel的點, 密度越高碰撞越精確.

Thinking particles身為好萊屋特效等級的外掛, 它的物理計算就多了叫Voxel的計算基礎. 類似FumeFX 的voxel grid, 它的計算像Tutbosmooth之於polygon類似, voxel grid越高 就會把原本的模型細分的越細. 所以在做物理模擬時 第一要考慮佈線要平均, 再來就是以Turbosmooth的角度來思考voxel grid要設定多高. 一般到30就夠了.

Edge sample是對模型的edge的採樣, 對於那些狹長的面很有用, 如果模型有狹長的面那就把這個數值提高.

在SC Operator裡面Show Voxels裡面可以顯示粒子之間的碰撞. 勾選Initialized Only是只有真正碰撞的時候才會顯示 (螢光綠點), 可以用在debug用.

Collision leak指的是粒子跟粒子之前沒有正常的碰撞 (相互穿透) 比方說用TP做茶壺掉到地上, 茶壺沒有在地板反彈 卻直接穿透了地板, 這就是collision leak. 要怎樣避免呢? 首先模型的細分要夠 再來就是voxel grid的要夠高; 可是對於快速移動的物件還是很容易發生穿透的問題怎麼辦? 可以以試著提高FPS, 由30往上提高. 在某些情況甚至要增加到24000

TP縱使效能比PF要好很多, 可是在計算大量物理碰撞的時候, 場景的動畫還是很重. 於是就需要把動畫bake 或是直接輸出帶key的模型. 後者可以把TP整個殺掉, 動畫還是在.

要把粒子輸出成帶key的obj, 其實很簡單. 只要把想要的group串接到Operator/Expot
按下Export按鈕 這時就可以把粒子輸出成帶key的模型了, 這時候可以把TP整個殺掉, 交給工作流程下游的夥伴.


另外一個讓playback變快的方法是用快取, 這個方法的缺點是會產生很大的快取檔 優點是不會有像export方法會有產生先隱藏再顯示的物件 (當使用volumebreaker的時候會有這樣的問題). MasterDynamic裡面就可以設定FPS (或稱做Sample), 採樣越高就越不會有穿透的問題. 按下RECORD按鈕就開始寫入快取了, 計算完畢後動畫就會變得很輕, 可以接著做其他特效操作, 比方說FumeFX.

Thinking particles碰撞的缺陷: 一般來說把FPS提升到2400加上夠高的Voxel Grid就可以避免collision leak; 可是有種狀況卻很容易發生碰撞穿透, 那就是計算粒子之間旋轉的碰撞, 例如鍊子的旋轉就很容易讓碰撞穿透, 這大概是一個TP的罩門.




大致上掌握這些重點就可以很歡樂地用TP玩物理了.

---完----

[相關文章]

1 comment:

s963406 said...

其實RayFire V1.57已經可以支援Concave幾何形狀了!