2013年11月11日 星期一

碎裂模擬軟體 Pulldownit 快速上手

Pulldownit 推倒它,簡稱pdi,是一個由西班牙Thinkinetic公司所開發的"碎裂運算""剛體模擬"的特效軟體,可以外掛在3ds maxMaya兩種主流3D平台上。Pulldownit是基於Vorono演算法產生碎裂,這項技術能在幾秒內對大量實體碎片做運算,讓使用者很快速的得到碎裂的動態結果。

雖然模擬的精確度不如Rayfire或是Houdini這些電影等級的高階特效軟體,但是個人使用後的心得是:Pulldownit的模擬速度非常快,耗用電腦資源也不高,操作上非常容易上手,大概只要2-3天就可以熟悉整個流程,非常適合用在動態精確度要求沒那麼高的MV、動畫或是廣告影像上使用。

下面就是要分享個人對Maya的Pdi參數的瞭解,以及使用上的心得和工作流程。有任何問題、想法或建議,都歡迎留言交流討論,感謝。

Work Flow

Layout 確定鏡頭 
 > 針對鏡頭構思破碎動態

check model 檢查模型 
 > 將分離的物件合為一體(combine)
 > 做厚度或是補洞(fillhole)
 > 軸心回歸物件中心(center pivot)
 > group名稱與物件不可相同
 > delete history

Shatter It 切破碎
 > 由大切小
 > 針對鏡頭
 > 注意合理性

Basic Fractures 基本破碎
 > 破碎物"狀態"設定(靜止、動力學、動畫物件、模擬方式)
 > 破碎物"群組"設定(材質、連動性、時間點、距離鏡頭遠近)
 > 調整破碎群組參數(聚合度、摩擦力、彈性)

Simulation 物理模擬
 > 設置碰撞
 > 力場調整
 > 破碎煙塵

Bake Simulation 動態截取
 > 用key frame確保破碎動態


shatterIt feature  切破碎
Num shards:破碎數量

shatter style 
uniform均勻破碎,就是整體破碎的意思
pivot based局部破碎,即使基於物體的中心來破碎
radial環狀破碎,Num rings是破碎的環數 noise是噪波值
Wood Splinters木板破碎
path based路徑破碎,可用曲線來畫路徑,然後在按select path來選擇該路徑,就會沿路徑來破碎了

Main axis:是破碎基礎的軸向選擇
S(shortest)是以最短的邊來破碎 / M(medium)是以中間值的邊來做破碎 / L(longest)是以長邊來做破碎
original geometry 原物件處理
hide隱藏 /  remove移除                   

create pdi object from fragments:從碎片中創建pdi 物體。
assign new material to cut faces:設定新的材質在被切的內部面體上。在材質窗口Hypershade可以看見一個綠色的材質

另外還有一種切破碎的方式,就是利用Maya內建工具,在dynamics模式下effects裡面也有切破碎工具effect-create shatter,製作出的破碎物體也可以作為pdi物體來使用,能很好的和maya的特效進行融合。




UV狀況


create pdi body 創建pdi物體
Type 物體模式
Dynamics 動力學模式 / Static 靜止模式 / Kinematic 動畫模式

Bounding Volume 碰撞模式 
none:無的狀態可以對破碎物體進行任意的移動,其他狀態不可以隨便移動,即便移動了,還是變回原來的位置
capsule:膠囊破碎,破碎物體周圍出現膠囊狀的網格線條做碰撞,是比較不精確的碰撞,破碎物體運動的時候會破碎得比較開一點,碰撞更有彈力甚至亂跳。計算速度快很多,適合用於背景或是沒拍攝到地板的地方做使用
convex hull:邊緣破碎,它的破碎是基於破碎的邊緣做計算。相對於膠囊破碎來說更精確的碰撞,它破碎的範圍沒有那麼廣,比較密集
mesh:面體破碎,是pdi最精密準確的一種破碎運算,耗費時間也最久
auto:自動,系統預設
 > flip collision side:反轉碰撞面向,與反轉模型法線(Flip Normal)效果相同
 > animated:動畫物件,需要搭配Kinematic
passive:被動物件,本身靜止並與動態物件產生碰撞的物件模式

active at first hit:產生第一次碰撞時啟動運算,當破碎物體碰撞到被動物體時,會和被動物體發生反應,破碎物體碰到被動物體後,和被動物體一起落下
Update Transform:更新起始位置,當模型轉為pdi物件後,要再次移動它,就必須要用這個功能更新位置讓pdi系統知道,否則運算時仍會跳回原位

特殊做法:可以用convex hull模式做平整面的破碎,用mesh做複雜凹凸面的破碎,因為convex hull的邊緣計算在平整面的結果近似mesh,但是速度會快許多。


pdi dynamics properties  Pdi動力學參數
bounciness:彈力
friction:摩擦力,摩擦力越大,阻尼值越大
linear damping:線性阻尼
angular damping:有角度的阻尼
gap factor:間隙係數,該值越大,碰撞後彈開的間隙越大,就會彈得越遠。
mass:質量
mass centre:質量中心
inital velocity:初始化速度 > value:速度值 > random:隨機速度值
initial spin:初始化旋轉 > value:旋轉值 > random:隨機旋轉值
affects force fields:勾選後,pdi物體會受maya力場的影響
選中破碎物體後 > 勾選 > 按include/exclude > 選擇要接受的力場 > accept接受



pdi solver options  pdi運算選項 
use maya gird as ground:使用maya網格最為碰撞地面
enable multithreading:開啟多功模式,一般狀況時可以開啟加快運算速度
enable cached mode:開啟cache模式,一般測試時可以關閉加快運算速度
gravity:重力,勾選disabled後就沒有重力了
substep:精確度,會影響到計算速度,一般測試時可以用preview預覽模式加快速度




manage pdi world  pdi物體管理
Pdi物體管理器,分做添加add、移除remove、全部移除remove all三種模式。
把物體創建為Pdi物體時,在manage pdi world,按add鍵來添加這些pdi物體
remove和remove  all這兩個按鈕只是讓物體消失在pdi物體管理器而已,並不是真的把這些pdi物體刪除。
delete selected是刪除你所選擇的Pdi物體delete all Pdi Bodies是刪除所有的pdi物體。

當Pdi運作起來怪怪的時候,可以到這裡來還原整個情況,移除所有的pdi節點在重新來過。不過要小心這些步驟是沒辦法undo的,所以在delete all Pdi Bodies前記得先記下數值,還原成沒有模擬前的狀況。



pdi basic fractures  pdi基本破碎
簡單來說就是破碎物件的群組(group)功能,可以將想要視為一體的破碎物選取起來,像是同樣材質或是同時間點要破碎,然後按創建(create)可以把破碎的物體創建為一個整體,並由下方的參數直接對整體做調整,參數調整又分為內部聚合與外部碰撞兩種

switch on/off stresses view:打開或者關閉壓力顯示,即打開後,破碎物體會有白色和藍色的面出現,白色代表破碎的強度大,藍色代表破碎的強度比較小
disabled:勾選後,物體碰撞後,不會發生反應,只是會穿過該物體
torsion:扭轉,勾選後,物體碰撞後會產生左右晃動的反應

內部聚合特性
hardness:脆度(brittleness),設置dpi群體的脆度,脆度越大,碰撞產生的碎塊就越少,反之亦然
clusterize:聚集度,聚集度為0時,破碎的聚集度是最大,即破碎物體幾乎為一個整體,聚集度為100時,破碎物體為最分散,容易破碎

外部碰撞特性
參數功能與設定單一物件的pdi dynamics properties相同
Propagation Scheme 碰撞能量傳播方式
 > continuous:持續碰撞,會導致整體破碎,較不真實  
 > local:局部碰撞,只有碰撞部位周圍破碎,較接近真實          
mass:質量的設置
friction:摩擦力的設置
bounciness:彈力的設置
initial velocity:物件一開始的初速度,可以拿來設置物件動態
inital spin:物件一開始的旋轉程度
affects force fields:力場的影響,勾選後可以用maya的力場來影響物體動態


pdi advanced fractures  pdi進階破碎
基於pdi basic fractures的延伸項目,可以控制單一破碎物與其所接面體的聚合關係

show border stresses 可以控制破碎物件每個相鄰面體的破碎狀況
在破碎物體選中其中一個破碎的面體,然後在fragments(碎片)窗口會顯示該面體的名稱,選中名稱,會再stresses(壓力)窗口會出現與該面體相連接的面體,selected all後,所有相連的面體都會被選中,invert selection就是反選的意思。
作法是:選擇全部的面體後,再調節

break threshold:破碎限值,數值愈大,會出現面體碰撞時愈難分開,像互相吸附一樣,顯示為黑色
break energy:破碎能量,數值愈大,分離時的能量愈小,分離的距離愈短,顯示為紅色
可以針對特定破碎物件將它周圍所有的相鄰面體的數值都開高或調低,藉此控制撞擊之後的碎裂效果

break at time -可以控制相鄰面體的分離時間在某個特定格,時間要設在物件撞擊後才能看到明顯效果。
deatch -將pdi物件轉為passive物件


bake pdi simulation  動態保存
用Maya關鍵張(Key frame)將動態保存下來

sample by:多少frame設一個key,若是超過1則必須先cache好動態,否則模擬會沒有反應

bake pdi simulation:用Maya keyframe保存模擬完的動態
delete pdi data:bake完之後可以刪除所有的pdi節點,減輕檔案負擔
delete all pdi keys:刪除所有破碎物上的keyframe重新模擬



沒有留言: