本教程主要介紹了使用nCloth打造氣球爆炸的過程,在製作是請忽略氣球之外的東西,我們主要注意氣球的初始狀態、鼓起、懸浮、爆炸這樣一個過程。希望對大家有所幫助!
教程開始
要建立一個球體的模型,但是我發現如果用一個簡單的poly Sphere並不能得到很好的動畫效果,它兩頭各有一個極點,最好的模型是完美的四邊形鑲嵌。我們可以通過Subdiv的Sphere轉成Polygon得到,就是下圖中間一個球體。(圖01)
圖01
下一步就是一點建模工作,做出一個氣口,我做的很醜,大家應該整的比我好。(圖02)
圖02
建模完成以後,先讓它結算一下,看一下大概的結果,注意,這裏隻是檢查一下模型,在真正結算之前還有很多工作要做。(圖03)
圖03
這一步就是建立tearable Constraint,通過選擇Vertex點來指定碎裂的路徑。
真實的氣球爆炸不是像我畫的那樣,但為了好看,我就多畫了幾道。nCloth的約束有一點不方便的地方就是所有的約束做出來都是一個名字:dynamicConstraint,所以我們最好根據不同的類型重命名一下。(圖04)
圖04
我將Tearable Constraint的Glue Strength打到了1,代表點之間會牢牢的粘在一起,不會分開。需要注意的是,Glue屬性是和場景中物體的大小關聯的,如果Glue值打到1,布料還是會分裂,或者相反布料無法分裂,就需要調節一下Glue Strength Scale的值。
在Glue Strength的數值為1的情況下,我才能繼續解算布料的Initial State。
在做完這一步以後,有一點需要注意:如果需要在Tearable以後進行諸如添加新的nCloth約束,繪製VertexMap等操作,必須在InputMesh上進行。
我希望氣球癟氣的時候是成長條狀伏在地麵上 (這裏的“地麵”,我使用了Nucleus節點下的Ground Plane虛擬了一個高度為0的地麵),辦法有很多,如果你的機器性能較好,可以使用Interactive Playback實時地拖拽布料直到滿意,我用的方法是做一個模子,幫助布料塑形。一旦對初始狀態滿意,記得使用Edit nCloth-> initial state -> set from Current保存當前狀態。(圖05)
圖05
[page]
這就是我解算完成的氣球的初始狀態。(圖06)
圖06
當完成tearable Constraint以後,我們要考慮一件事情,什麼時候tearableConstraint會發生作用。
當我們施加了T.Cnstraints以後,在解算的第一幀,Maya便完成模型的分割,根據glueStrength的數值來決定布料對於外界施加力的“靈敏度”,glueStrength數值為0時,布料一旦開始解算就會分裂,相反為1時,布料不會分裂(glueStrengthScale==1)。所以,我們可以用兩種方法:
A:通過多次解算,嚐試出一個數值,使布料在某一時刻點破碎,或某一次碰撞強度下破碎。
B:直接在glueStrength上加關鍵幀動畫,在需要布料破碎的那一個點上,把數值打到0,這樣布料就瞬間破碎了。
對於氣球的爆破,B方法最合適不過了。
決定了爆破的方法,下麵的事情就很簡單,讓氣球充氣變大,上浮,爆破(glueStrength=0)。
因為這裏使用Manual,隻有兩個屬性,Pressure就是Pressure,沒什麼多解釋的,數值大內壓高,模型就鼓起來,負值就是內壓逃逸了。(圖07)
圖07
需要關心的是下麵這三個數值,是布料行為的最重要的三個屬性,在syflex中,也有對應的屬性名稱。分別是抗延展,抗收縮,和抗彎折,這三個屬性對應的是布料的link和edge的行為。(圖08)
圖08
在這裏,就是氣球對內部壓力的“抵抗”。好在Maya為我們預置了很多不同的屬性組合產生不同的效果,我們可以在nClothShape節點的presets裏麵選擇一個適合的start point,比如Solid Rubber (固體橡皮),把stretchRes調低,或者最中性的Tshirt,調高一點damp,減小摩擦就可以得到想要的效果。
下麵是我的設置。(圖09)
圖09
至於布料的漂浮,方法不下四五種,還可以互相組合,最簡單、最直接的就是將重力方向反一下,氣球就會上舉,根據氣球充氣變大的速度,加上動畫即可。(圖10)
圖10
[page]
最後的收尾工作
在完成以上的步驟以後,反複調試數值組合,我們要收拾一下氣球破裂以後的殘局。
雖然氣球破碎了,但是,所有的相關屬性和節點都還在起作用,包括pressure,所有的Constraints,還有布料本身的自碰撞,如果不關閉這些屬性,那麼氣球破裂以後,那些碎片會上下翻飛最後扭做一團!
處理的方法也很簡單,直接在一些boolean值上K動畫,在爆破後關閉所有的約束和自碰撞以及preesure,隻留下和地麵以及其他passiveObjects的碰撞,貼上一些例子,注意這些Tangents都是stepped的。(圖11、圖12)
圖11
圖12