玻璃被球或子彈打穿後碎裂的特效,雖然是經典老梗,但要做得好看、自然,其實並不容易。
實現玻璃碎裂的方式有很多,以下是幾種常見的方法:
-
Time Test:手動設定觸發時間點,精準對準球剛好碰到玻璃的那一幀。
-
PhysX Collision:利用物理碰撞偵測,當球(剛體)撞擊玻璃時觸發碎裂。
-
Surface Test(Distance):當球與玻璃距離接近某個門檻時,自動觸發碎裂效果。
玻璃被球或子彈打穿後碎裂的特效,雖然是經典老梗,但要做得好看、自然,其實並不容易。
實現玻璃碎裂的方式有很多,以下是幾種常見的方法:
Time Test:手動設定觸發時間點,精準對準球剛好碰到玻璃的那一幀。
PhysX Collision:利用物理碰撞偵測,當球(剛體)撞擊玻璃時觸發碎裂。
Surface Test(Distance):當球與玻璃距離接近某個門檻時,自動觸發碎裂效果。
tyflow的Surface Test - Volume (inside)就相當於thinkingParticles的Inmesh operator。意思是包含在裡面的粒子就進到下一個事件。
一般來說會在場景中拉出一個BOX,設置動態,然後配合Surface Test - Volume (inside)使用。
Cluster op讓你可以把粒子分成好幾個群組,這些群組可供日後在其他op中(例如PhysX Bind使用)。用Cluster可讓碎裂的效果增添更多細節。
操作方式是,首先添加Cluster,在Channel中手動輸入clusters 供日後使用。tyflow的Property Test可過濾出Awake (PhysX)的粒子,說白話就是醒過來的粒子。那甚麼是醒過來的粒子。
如果是用thinkingParticles來做隨機選取進到下一個群組,十分麻煩。用tyflow可以很簡單地做到。透過Time Test op,其中把Test value的Variation設置為100就可以做到。
粒子原本為黑色,隨著時間,隨機選取進入到下一個事件,變成紅色。
[相關文章]
球去撞牆,牆碎掉 - 很經典的測試場景。同樣的效果可以有很多不同的設置都能做到,這裡我們介紹其中一種方法。
球是keyframe的,在撞擊到牆之前,牆先用voronoi切割,用PhysX Switch - Kinematic切換為不啟動鋼體運算。然後用Suface Test拾取那顆球,這時進入到下一個事件。再次添加PhysX Shape,這石剛體就會啟動運算,再加上PhysX Collision拾取那顆球。效果完成。
使用Suface Test的好處是,可以控制剛體啟動的時機,比較不會有碰撞交錯的問題。
以上設置不適合用於玻璃效果,因為玻璃是透明的不適合預先切碎的設置。
tyflow的Roation op - 當不勾選Affect particle shape orientation時,就相當於3ds max的Affect pivot only。可以使用Align to shape mesh來改變軸向,這個功能可以做很多事,比方說使用Voronoi op要把物件切割成木片時,軸向變得很重要。但又不想調整原始幾何體的軸向,就可用這個方法。
以前有個maxscript叫Detach Elements,可以把幾何體中的每個Elements拆分成一個一個獨立的幾何體。tyflow的Element Fracture op做的是一樣的事。
使用的時機: 物件有預先切割,比方說磚塊構成的房屋,由單一幾何體構成。但你想要拆成一塊一塊磚塊,這時就可用Element Fracture。
如果是玻璃,預先碎裂看起來就不好,所以要在爆炸衝擊時才進行切割會比較好,該怎樣做呢?
首先,不管是用Multifracture或Voronoi Fracture op,在作用時間Timing都設置為Continous持續計算。這個效果常常見於Motion Effect。以前用thinkingParticles很複雜但是用tyflow卻能輕易做到。
先導入幾何體,然後用Face fracture切割成一個一個面。添加Scale op,在Scale中設置為Absolute。勾選Multiply by proximity。在Objects清單中添加場景移動中的球。 這樣球移動那哪裡,面就會縮小放大。 勾選Invert則效果相反。
tyflow提供各式力場,但都不如用PhysX的球體去推擠其他剛體來的效果更加真實。我們可以產生球體使其隨時間而變大來擠壓其他剛體。方法是添加Scale op,Timing設置為Continious,Scale設置為Relative multiply。將Scale value設置為150%。這樣球體就會隨著時間越來越大。但也不能讓它無限放大,因此在最後添加Delete op - Age。
PhysX的剛體計算會透過近似的幾何體進行 - 稱之為Hull。這個Hull可以是球體,方塊或是原本的幾何體,或是...合成出來的近似幾何體 Compound。
Hull的選擇很重要,它會影響模擬的速度與精確度。不夠精確會讓碎裂的物體在一開始就爆裂,不穩定。而 Compound是很不錯的Hull類型,它以Grid的模式去近似原本的幾何體。所以Slice Length越小,越精確。
用Voronoi Fracture或Multifracture op所切割的物體,很容易在一開始模擬時就爆開。在tyflow中的PhysX Shape中的Start penetrations起始穿透的選項中有提供Sticky starting penetrations,可以避免碎片在一開始就爆開。因此這個選項預設是啟動的。
當然這跟你剛體的Hull精確度有關,大部分情況Hull的類型不會很精確,有穿透是正常的。
如果想要一開始就計算所有的鋼體穿透,就選Process all penetrations。
tyflow Property Test - Neighbor count可以用來選取距離某粒子內的粒子。以此為例就是我們希望靠近子彈粒子的玻璃粒子再次碎裂,就可利用之。使用Property Test op,Test type選Neighbor count,在Test value選Greater than,Value 為0。根據實際需求,在Search value中設置距離範圍。
tyflow grow operator可以做出生長或是閃電的效果。 可以產生這樣的mesh之後,然後取其mesh,做出簡易的閃電動畫。