宋瑋 黃學(xué)軍 陳志勛
摘 ?要: 為了改善特效制作效果,更好的利用MAYA制作動畫特效。通過,根據(jù)MAYA操作實際情況,以龍卷風(fēng)特效制作為例,介紹了如何運(yùn)用MAYA制作龍卷風(fēng)特效。通過MAYA能夠制作出逼真的動畫特效。因此,可以在特效制作過程之中合理運(yùn)用MAYA,進(jìn)而作出精彩的特效。
關(guān)鍵詞: MAYA;龍卷風(fēng);特效
中圖分類號: TP391.41 ? ?文獻(xiàn)標(biāo)識碼: A ? ?DOI:10.3969/j.issn.1003-6970.2020.08.054
本文著錄格式:宋瑋,黃學(xué)軍,陳志勛. MAYA實現(xiàn)龍卷風(fēng)特效實踐[J]. 軟件,2020,41(08):200-204
【Abstract】: In order to improve the effect of special effects, better use Maya to make animation effects. Through, according to the actual situation of Maya operation, taking tornado special effect production as an example, this paper introduces how to use Maya to make tornado effect. Through Maya, we can make realistic animation effects. Therefore, we can use Maya reasonably in the process of special effects production, and then make wonderful special effects.
【Key words】: Maya; Tornado; Special effects
0 ?引言
MAYA軟件是Autodesk旗下的三維建模和動畫軟件,也是現(xiàn)今最為流行三維動畫軟件,在國外絕大多數(shù)的視覺設(shè)計領(lǐng)域都在使用maya,即使在國內(nèi)該軟件也是越來越普及,隨著計算機(jī)性能的不斷提升,越來越多的CG鏡頭被應(yīng)用到影視作品中,比如《指環(huán)王》、《蜘蛛俠》、《哈里波特》、《權(quán)力的游戲》等系列作品都出自MAYA。
為更好地制作龍卷風(fēng)特效,首先簡單介紹龍卷風(fēng)的形成過程:在高溫高濕的不穩(wěn)定云團(tuán)中,地面與高空中的空氣溫差過大,使得熱空氣迅速上升,冷空氣急劇下降,上下層空氣對流速度過快形成許多小漩渦。當(dāng)漩渦逐漸擴(kuò)大再加上激烈震蕩就容易形成大漩渦,當(dāng)發(fā)展的渦旋到達(dá)地面高度時,地面氣壓急劇下降,地面風(fēng)速急劇上升,形成龍卷風(fēng)。龍卷風(fēng)中心的風(fēng)速極快,破壞力極強(qiáng),常會拔起大樹、掀翻地面物體甚至摧毀建筑物等。
圖1是用Maya實現(xiàn)龍卷風(fēng)的最終合成圖,按制在介紹龍卷風(fēng)主體整個制作過程之前先簡單介紹特效中需要用到的粒子、力場、流體、以及粒子表達(dá)式的相關(guān)屬性和知識點。
1 ?粒子系統(tǒng)
粒子系統(tǒng)主要是用來模擬用基礎(chǔ)幾何體無法表達(dá)的物理現(xiàn)象,比如煙霧、云霧、火焰、水流、爆炸、雷電等。主要用到幾個屬性。
發(fā)射類型:Maya粒子有點發(fā)射、線發(fā)射、面發(fā)射、體積發(fā)射以及從物體發(fā)射等幾種。
發(fā)射速率:發(fā)射器在一秒內(nèi)發(fā)射粒子的數(shù)量。
生命周期:粒子的生存時間,可以永久,指定時間或者指定區(qū)間內(nèi)隨機(jī)生命值。
粒子可以通過Goal命令將粒子吸附到幾何表面的控制點。
2 ?Maya力場
Maya力場是動力學(xué)模擬中不可缺少的一部分,為動力學(xué)對象比如粒子、布料、幾何體等產(chǎn)生運(yùn)動所需的力。包括獨(dú)立場(比如重力場、空氣場等)、對象場(由對象產(chǎn)生對對象自身或其他對象產(chǎn)生影響)、體積場(對封閉空間內(nèi)的動力學(xué)對象產(chǎn)生影響)、體積軸場(用Nurbs曲線定義一個軸場,影響該曲線軸場范圍內(nèi)的動力學(xué)對象)。主要用到以下幾個屬性。
Along Axis:沿軸運(yùn)動。
Around ?Axis:繞軸運(yùn)動。
Away From Axis:遠(yuǎn)離軸運(yùn)動。
Away From Center:遠(yuǎn)離中心運(yùn)動
Away From Center:遠(yuǎn)離軸心運(yùn)動。
Magnitude:場強(qiáng)幅度。
Turbulence:模擬隨時間變化的湍流風(fēng)的力的強(qiáng)度。
Turbulence Speed:湍流隨時間更改的速度。
Turbulence Frequency X、Y、Z:控制適用于發(fā)射器邊界體積內(nèi)部的湍流函數(shù)的重復(fù)次數(shù)。
Detail Turbulence:第一個湍流由于慣性衍生出的第二個湍流的相對于第一個湍流的強(qiáng)度。
3 ?Maya流體主
Maya流體主要用來模擬各種大氣、液體、爆破等效果[1]。包括動力學(xué)流體和非動力學(xué)流體兩種,動力學(xué)流體指遵循流體動力學(xué)的物理規(guī)律,Maya內(nèi)部在每一幀都會用相關(guān)方程和公式來解算動力學(xué)流體。非動力學(xué)流體實際上是通過對流體的外觀和紋理設(shè)置相關(guān)動畫來模擬流體運(yùn)動,在運(yùn)行效率上遠(yuǎn)快于動力學(xué)流體,但由于僅僅只能模擬流體的外觀和紋理,實際上運(yùn)用有限,幾乎只能用來模擬2D流體。本文中使用的是動力學(xué)流體,主要用到以下幾個模塊。
3.1 ?容器特性
Base Resolution:基本分辨率,在保持流體的最小單位依然為正方體時,同時調(diào)整容器的X、Y、Z三軸的分辨率。可以簡單的理解為一個單位立方體中包含流體數(shù)量的多少。
Size X、Y、Z:流體容器在X、Y、Z方向上的單位數(shù)量??s放流體容器大小并不會增加流體容器的單位數(shù)量。
Auto Resize:自動調(diào)整大小,因為在動力學(xué)模擬中流體密度有可能會消散,較小的模擬區(qū)域可以提高模擬速度。
Resize Closed Boundaries:調(diào)整閉合邊界大小,啟用之后流體將沿X、Y、Z方向的邊界屬性設(shè)定來自動調(diào)整大小。本文中用自動調(diào)整大小以及調(diào)整閉合邊界大小使龍卷風(fēng)特效中沿Y方向自動調(diào)整大小以節(jié)省計算量。
3.2 ?動力學(xué)模擬
Dynamic Simulation:動力學(xué)模擬部分包括了重力、粘度、摩檫力、阻尼等物理現(xiàn)象以及解算方式等屬性。
Substeps:子步,指在一幀中執(zhí)行計算的次數(shù),對高密度以及高細(xì)節(jié)的流體的穩(wěn)定性和模擬結(jié)果非常有用。
Contents Details:主要包含密度、速度、湍流、溫度、燃料、顏色幾個部分,下面介紹本文中僅涉及密度、速度、湍流相關(guān)屬性。
密度Gradient Force:漸變力指沿密度變化方向上的力,正值使流體逐漸蓬松、負(fù)值使流體緊縮,效果類似于Self Attraction and Repulsion(自吸引和排斥),但由于該屬性僅對相鄰流體進(jìn)行解算,所以會降低不少的解算時間。
速度Swirl:可以在流體生成小比例的漩渦和渦流。
湍流屬性與動力場的湍流完全相同。
3.3 ?流體著色
Shading屬性包括了流體的透明度、輝光、顏色、不透明度等著色屬性。
4 ?粒子表達(dá)式
粒子表達(dá)式是Maya的Mel語言與粒子本身屬性以及自定義屬性相結(jié)合的結(jié)果,可以編寫表達(dá)式同時控制所有的粒子或者按不同的方式控制每個單一的粒子[2]。分為創(chuàng)建時表達(dá)式和運(yùn)行時表達(dá)式兩種,創(chuàng)建時表達(dá)式在發(fā)射粒子或運(yùn)行動畫前時執(zhí)行,僅僅影響粒子運(yùn)動的第一幀。運(yùn)動時表達(dá)式在除發(fā)射粒子以外的每一幀都執(zhí)行??梢詫⒘W釉谶\(yùn)行時某一幀的狀態(tài)(包括位置、速度、旋轉(zhuǎn)、縮放等)初始化為粒子第一幀。
圖2是龍卷風(fēng)主體的制作流程圖,可以看到包括了一個由Nurbs曲線、圓環(huán)擠壓產(chǎn)生的Nurbs曲面,然后再由曲面重建UV后得到第一套粒子系統(tǒng)粒子1,粒子1的運(yùn)動是連續(xù)并且一致的,產(chǎn)生的流體完全無法控制。為實現(xiàn)真實的龍卷風(fēng)效果,還需要由粒子1發(fā)射第二套粒子系統(tǒng)粒子2。為了得到龍卷風(fēng)外部的湍流運(yùn)動細(xì)節(jié),再由Nurbs曲線創(chuàng)建一個volumeAxis?Fields體積軸場。用于控制粒子2和流體容器的運(yùn)動細(xì)節(jié),粒子2緩存之后作為流體容器的發(fā)射器。流體容器產(chǎn)生的流體云,也就是最終形成的龍卷風(fēng),由流體自身的動態(tài)模擬屬性、粒子2、以及volumeAxisFields體積軸場三個部分共同控制。
4.1 ?Nubrs曲面部分
Nubrs曲面由Nurbs曲線和圓環(huán)擠壓產(chǎn)生,然后通過調(diào)整曲面的控制點得到龍卷風(fēng)的外形,這里需要注意的是Nurbs曲面要刪除創(chuàng)建歷史,否則在通過Nurbs曲線創(chuàng)建volumeAxisFields體積軸場的時候如果需要調(diào)節(jié)Nurbs曲線會同樣影響到Nurbs曲面的形狀。而且為了方便以后的粒子計算,需要重建該柱面的UV的范圍為0到1[3-4]。該曲面的主要作用是將粒子1執(zhí)行Goal命令將粒子1吸附到曲面上。最后制作出的曲面如圖3所示。
4.2 ?粒子系統(tǒng)1部分
為模擬龍卷風(fēng)特效,粒子1需要粒子從上自下沿曲面V方向運(yùn)動,并且在曲面的U方向上順時針旋轉(zhuǎn)。
創(chuàng)建粒子發(fā)射器,把發(fā)射器放到Nurbs曲面的頂端附近。為方便以后計算以及后期合成,將MAYA的默認(rèn)幀率設(shè)置為25幀每秒,發(fā)射器的發(fā)射速率Rate設(shè)定在500左右。選擇發(fā)射器產(chǎn)生的粒子1與龍卷風(fēng)曲面執(zhí)行Goal命令,目標(biāo)權(quán)重設(shè)為1,可以將粒子吸附到龍卷風(fēng)曲面的控制點上。為了得到自上而下的螺旋線運(yùn)動,給粒子1添加GoalU、GoalV兩個屬性,在GoalV屬性上添加漸變貼圖,并調(diào)節(jié)漸變方向使粒子自上而下沿曲面U=0的參考線運(yùn)動。粒子的運(yùn)動速度由粒子壽命lifespan決定,即lifespan屬性值等于粒子從上至下運(yùn)動所需的時間,這里設(shè)置為8秒。在給GoalU屬性添加Creation創(chuàng)建時表達(dá)式particleShape1.goalU= rand(1,0),可以得到粒子在Nurbs曲面上邊緣的隨機(jī)位置沿曲面自上而下運(yùn)動,類似下雪的散射效果。在GoalU屬性添加Runtime before dynamic運(yùn)行表達(dá)式particleShape1.goalU+=0.015。這里的0.015就是粒子每幀沿U方向的位移增量。到這里已經(jīng)得到了沿曲面進(jìn)行自上而下的螺旋運(yùn)動的粒子1。
4.3 ?粒子系統(tǒng)2部分
粒子系統(tǒng)2由粒子系統(tǒng)1創(chuàng)建,主要作用是完整的模擬出龍卷風(fēng)的運(yùn)動軌跡以及外部的湍流細(xì)節(jié)。
選擇粒子1,執(zhí)行nParticles菜單下的Emit from Object,發(fā)射類型設(shè)置為Omni,發(fā)射速率22左右。粒子2是在粒子1的基礎(chǔ)上發(fā)射粒子,生命周期需要設(shè)置得短一些,粒子2設(shè)置為隨機(jī)生命,Lifespan為0.25,Lifespan Random為0.125,粒子2的生命值在(0.125,0.375)這個區(qū)間中隨機(jī)取值。為模擬龍卷風(fēng)的效果,粒子2的運(yùn)動速度相對粒子1更慢一些,把Conserve值設(shè)為0.75,該屬性表示粒子的相對速度值。這里得到的粒子2系統(tǒng)只是從粒子1系統(tǒng)直接發(fā)射出的散射效果,并沒有龍卷風(fēng)外形中的湍流效果。
接下來為粒子2添加Volume Curve曲線控制,選擇nurbs曲線,執(zhí)行Fields/Solvers菜單下的Volume Curve命令,可以得到一段和曲線形狀走勢相同的體積軸場volumeAxisFields,作用范圍就是在體積軸場的封裝范圍內(nèi),用這個場去控制粒子2的發(fā)射形態(tài)可以得到很好的龍卷風(fēng)外形[5-6]。設(shè)置volumeAxisFields的section Radius半徑值為8左右,添加Curve Radius的控制點,使體積軸場的外形與開始創(chuàng)建的NURBS柱面相似并且完全把柱面封裝在體積軸場以內(nèi)。設(shè)置好體積軸場的外形之后選擇第二套粒子以及體積軸場執(zhí)行Fields/Solvers菜單下Assign to select命令使體積軸場與第二套粒子關(guān)聯(lián)。設(shè)置體積軸場的Along Axis、Away From Center值為0,這兩個值會影響第二套粒子偏離軸以及偏離中心的值,龍卷風(fēng)特效中并不需要粒子偏離軸以及偏離中心?,F(xiàn)在的第二套粒子運(yùn)動與添加體積軸場之前的運(yùn)動并沒有太大區(qū)別,為了得到龍卷風(fēng)外外層那些類似小溪湍流的形體效果,將體積軸場的Turbulence、Turbulence Speed、Detail Turbulence值設(shè)置為1,Turbulence Frequency X、Y、Z值設(shè)為0.75?,F(xiàn)在得到的粒子運(yùn)動與龍卷風(fēng)就很相似了,也可以細(xì)調(diào)之前的第二套粒子的生命周期區(qū)間,Turbulence相關(guān)的屬性值,直到符合效果為止。在調(diào)整結(jié)束之后必須要為粒子做緩存,否則因為隨機(jī)值的存在粒子在每次播放的運(yùn)動都不可能完全與上一次一致,這對后期的渲染合成來說是致命的,因為一旦合成需要調(diào)整某一幀畫面的時候,無法再通過渲染得到完全一致的畫面。緩存的目的就是把粒子的運(yùn)動結(jié)果保存到磁盤上,保證每次粒子運(yùn)動的一致性。選擇第二套粒子執(zhí)行nCache中的Crate Particle Disk Cache命令,設(shè)置緩存目錄以及緩存更新方式即可。接下來使用第二套粒子以及MAYA流體實現(xiàn)龍卷風(fēng)效果。
4.4 ?流體云部分
流體云部分是最后實際形成的龍卷風(fēng)主體,粒子2系統(tǒng)作為流體云的發(fā)射器負(fù)責(zé)流體的發(fā)射,體積軸場作為外部場對流體產(chǎn)生影響,流體自身的動態(tài)模擬、著色等都在流體云部分進(jìn)行設(shè)置。
創(chuàng)建3D流體容器,并且在容器中不添加任何發(fā)射器。將容器的位置移動到龍卷風(fēng)的頂端附近,將流體容器的分辨率設(shè)置為80左右,該分辨率只是在測試過程便于觀察的折中分辨率,設(shè)置過高影響測試速度,太低無法體現(xiàn)效果。
流體容器的X、Z方向的面積大小要足以包含第二套粒子,讓流體在擴(kuò)散的過程中不至于觸碰到容器。這里設(shè)置SizeX、Z屬性值為24。Y方向會用跟隨粒子的方式進(jìn)行自動大小調(diào)節(jié),SizeY給一個初始值5,以避免在最開始粒子運(yùn)動的時候尺寸太小流體觸碰到容器。BoundaryX、Z設(shè)置為bothsides,BoundaryY設(shè)置為Yside。在Auto Resize選項里勾選Auto Resize選項,取消勾選Resize Closed Boundaries選項,這樣就指定自動調(diào)整大小為Y方向。為保證自動大小調(diào)節(jié)的過程中流體不會觸碰到容器壁,Auto Resize Margin值設(shè)置為3。
流體模擬龍卷風(fēng)特效中只需要流體的動力學(xué)以及密度兩個屬性,首先設(shè)置流體的動態(tài)模擬,Gravity重力設(shè)置9.8。由于龍卷風(fēng)特效中并不需要viscosity粘度以及Friction摩檫力,設(shè)置為0。Damp阻尼可以控制流體的矢量速度,該屬性的大小值很敏感,這里設(shè)置為0.03。High Detail Solve高質(zhì)量解算設(shè)置為All grids。由于流體是從粒子產(chǎn)生的,substeps設(shè)置為2或者更高一些,并且勾選Emit in substeps選項,以避免隨機(jī)壽命很小的粒子不能發(fā)射出流體。Solver Quality解算質(zhì)量可以設(shè)置得高一些,比如200左右。這里的解算只是對流體的運(yùn)動進(jìn)行解算。在Density面板下設(shè)置Dissipation耗散值為3左右,Gradient Force漸變力可以影響流體的膨脹,這里設(shè)置為45。在Velocity面板下設(shè)置Swirl旋流值為6左右,Noise噪聲值為0.25。Turbulence面板下設(shè)置Strength值為0.35,F(xiàn)requency、Speed值為0.5。最后選擇第二套粒子作為流體容器的發(fā)射器。
選擇fluidEmitter1,將發(fā)射類型設(shè)置為Omni,為得到細(xì)膩的流體效果,Max Distance設(shè)置為0.1,這里的值是每個粒子發(fā)射的流體的寬度,0.1就是0.1個網(wǎng)格單位,默認(rèn)單位是厘米。Rate值設(shè)置為1200左右。流體的熱量和燃料通常用來模擬火焰、巖漿等,為節(jié)約計算資源,在Fluid Attributes面板下關(guān)閉發(fā)射Heat method、Fuel method。在之前制作的第二套粒子運(yùn)動狀態(tài)已經(jīng)很好的模擬出龍卷風(fēng)效果,在Emissions Speed Attributes面板下設(shè)置Speed Method的方式為Replace,使粒子發(fā)射的流體繼承流體的速度,Inherit Velocity設(shè)置為1或者更高一些。到這里流體的動力學(xué)部分就已經(jīng)設(shè)置完成,最后將流體與之前的體積軸場相關(guān)聯(lián)即可。
流體的著色,這個屬性與動力學(xué)不同,這里的屬性在做了流體緩存之后依然可以根據(jù)緩存文件來進(jìn)行調(diào)整,并不需要重新緩存一次。主要是透明度、陰影、顏色等設(shè)置。在透明度面板下的Input Bias值可以很直觀的影響流體的厚度,Lighting面板下必須勾選Self Shadow自陰影選項,否則流體看上去就是白糊糊一篇,沒有層次感。其他選項可根據(jù)審美需要調(diào)整。
流體的動力學(xué)以及外觀屬性已經(jīng)設(shè)置完成,根據(jù)工作站的性能設(shè)置流體的基本分辨率,分辨率不宜低于150,否則會丟失很多細(xì)節(jié)甚至整個形態(tài)都會發(fā)生變化。也不宜過高,太高的分辨率在視覺上并沒有多少提升,但是計算量幾乎是以指數(shù)倍數(shù)增長的。這里給出一個參考值,基礎(chǔ)分辨率設(shè)置200,3.4G的8線程Cpu計算完整的一次龍卷風(fēng)特效大約需要47小時左右。計算完成之后對流體進(jìn)行緩存,由于龍卷風(fēng)特效中并沒有使用流體的溫度、燃料、顏色以及紋理屬性,取消勾選這些選項可以提高緩存的速度。為方便后期管理緩存文件設(shè)置為指定時間范圍內(nèi)一個文件,由于緩存文件相對較大,本文中最后得到的緩存文件約為90G,所以緩存文件格式應(yīng)選擇mcx格式,該格式使用64位索引創(chuàng)建,大小可以超過2G,mcc使用32位索引創(chuàng)建,單個文件不能超過2G。
圖4為本文創(chuàng)建出的龍卷風(fēng)主體的動畫截圖,可以看到外形基本和之前的Nurbs曲面保持一致,而且龍卷風(fēng)有自上而下逐漸產(chǎn)生的過程,在流體自身的動力學(xué)屬性以及體積軸場的作用下,龍卷風(fēng)外部有很好的湍流以及消散細(xì)節(jié)。頂部積云以及底部龍卷風(fēng)兩個組成部分的創(chuàng)建過程與龍卷風(fēng)主體相同,僅僅是外形和細(xì)節(jié)上的區(qū)別,這里不再贅述。需要注意的是頂部積云與底部龍卷風(fēng)的速度與龍卷風(fēng)速度不同,頂部積云相對龍卷風(fēng)主體的旋轉(zhuǎn)速度要慢一些,底部龍卷風(fēng)的旋轉(zhuǎn)速度相對龍卷風(fēng)主體要稍快一些。在制作過程中流體旋轉(zhuǎn)速度就應(yīng)該相應(yīng)的設(shè)置得更慢或者更快一些。
4.5 ?地面塵埃
圖5是地面塵埃的創(chuàng)建流程圖,地面塵埃相對龍卷風(fēng)來說要簡單一些,僅僅需要一套粒子系統(tǒng)即可完成,基本思路是給粒子系統(tǒng)添加重力場,使粒子與地平面發(fā)生碰撞,再給粒子添加體積場,使粒子繞場中心旋轉(zhuǎn),緩存之后使用幾何體做粒子替代就可以渲染輸出了。這里簡單介紹下粒子運(yùn)動以及粒子替代的基本方法。
創(chuàng)建一套粒子系統(tǒng),將發(fā)射類型設(shè)置為volume,發(fā)射速率為1500左右,即每秒發(fā)射1500個粒子。再將volume的類型設(shè)置為Cube立方體,Cube的面積相比之前制作的龍卷風(fēng)相比要足夠大。發(fā)射器的Away From Center以及Away From Axis屬性設(shè)置為0。將時間線長度設(shè)置為10秒,播放完動畫可以得到約15000個粒子。盡管粒子的數(shù)量越高就顯得越真實,但這里粒子的總數(shù)不宜過高,否則導(dǎo)入龍卷風(fēng)特效中會遮擋住大部分龍卷風(fēng),視覺效果并不好。然后對粒子進(jìn)行初始化,再將發(fā)射器的發(fā)射速率更改為0。創(chuàng)建一個地平面,面積至少要保證粒子不會掉到地平面以外。給粒子添加重力場,對粒子和地平面執(zhí)行碰撞命令,resilience彈跳、Friction摩擦、offset偏移值保持默認(rèn)。
添加一個VolumeAxisField體積軸場,將Volume Shape設(shè)置為球形。這里需要注意的是只用到體積軸場的上半球,將體積軸場的球心位置在地平面稍微往下一點的位置,由于粒子會與地平面碰撞不會掉落到地平面以下,也就保證了只有上半球影響到粒子。如果下半球也影響到粒子,將在調(diào)整粒子運(yùn)動上帶來更多的步驟以及不可控因素。
體積軸場Around Axis屬性值的正負(fù)表示粒子圍繞圓心做順時針還是逆時針運(yùn)動,為了和龍卷風(fēng)的旋轉(zhuǎn)方向一致這里設(shè)置為–8,Magnitude值設(shè)為8,Turbulence湍流設(shè)置1,Turbulence Speed設(shè)置為0.125,Detail Turbulence設(shè)置為1。粒子的Conserve值設(shè)置為0.95。這里可以通過不斷調(diào)節(jié)屬性以及多次初始化粒子得到滿意的動態(tài)效果,調(diào)節(jié)完畢之后為粒子創(chuàng)建緩存文件。
粒子替代在測試階段為了便于觀察僅需要基礎(chǔ)的立方體、球體、圓柱體、圓錐體即可,但這里需要注意的是所有替代幾何體的都需要做物體凍結(jié),即所有幾何體的位置、旋轉(zhuǎn)值為0,縮放為1。并且位于坐標(biāo)原點。否則在進(jìn)行替代的時候會出現(xiàn)偏移。為粒子添加每粒子自定義屬性,主要用于幾何體的隨機(jī)替代以及每粒子自轉(zhuǎn)、縮放、速度屬性。這里的表達(dá)式與之前龍卷風(fēng)主體粒子1系統(tǒng)的表達(dá)式類似,給替代Id一個隨機(jī)值可以得到幾何體隨機(jī)替代的效果,給自轉(zhuǎn)、速度屬性一個初始的隨機(jī)值以及一個很小的每幀增量就可以得到每個幾何體相對運(yùn)動的隨機(jī)效果。給縮放一個隨機(jī)值就可以由一個幾何體產(chǎn)生很多大小不同的幾何體??梢源蟠鬁p小替代幾何體的數(shù)量。需要注意的是這里所有的表達(dá)式需要在創(chuàng)建時運(yùn)行,但僅由于之前對粒子做了初始化處理,所以這里粒子的創(chuàng)建表達(dá)式并不會對所有粒子進(jìn)行取值。比如幾何體隨機(jī)替代,在創(chuàng)建時給出了隨機(jī)值,但實際上在第一幀并不會隨機(jī)替代幾何體,僅僅會把粒子替代為Id為0的幾何體。如果把隨機(jī)表達(dá)式寫到運(yùn)行時,則會發(fā)生每一幀幾何體都在不停的隨機(jī)變化,比如立方體在下一幀變?yōu)榍蝮w等。解決方法比較取巧也相對簡單,將隨機(jī)表達(dá)式寫到運(yùn)行時,播放動畫,把效果滿意的一幀對粒子進(jìn)行初始化,再刪掉運(yùn)行時的隨機(jī)表達(dá)式,就可以得到隨機(jī)替代的幾何體。自轉(zhuǎn)、速度、縮放也可以用同樣的方法得到滿意的隨機(jī)值。對粒子替代的動態(tài)效果滿意之后可以直接將所需替代的幾何體直接添加到替代節(jié)點并刪除之前的立方體、球體、圓柱體、圓錐體的測試替代幾何體即可。
最后再介紹下龍卷風(fēng)特效的渲染,Maya2017版本以來引入了新的Arnold渲染器,并且不再提供之前的MentalRay渲染器。Arnold渲染器相對于MentalRay渲染器更簡單一些,不再像之前MentalRay渲染器需要進(jìn)行多次測試才能得到較好的渲染結(jié)果。在本文的龍卷風(fēng)特效中添加了用一張Hdr貼圖控制Sky-dome light,然后再給了一個平行光進(jìn)行補(bǔ)光就可以得到不錯的渲染結(jié)果。在粒子替代方面為了節(jié)省渲染時間也僅僅使用了幾種樹葉作為替代。為了后期合成還必須要將各部分分層渲染以及渲染出不同的通道,例如AO、Shadow、reflection等。
圖6為最終渲染出的動畫文件,流體部分已經(jīng)很好的模擬出龍卷風(fēng)的效果,與龍卷風(fēng)伴隨的雷電效果在合成軟件中完成相對更為方便。地面塵埃部分如果需要更好的效果可以使用幾套粒子共同完成,比如離龍卷風(fēng)距離較近的部分使用一套粒子,粒子替代可以用一些稍大的幾何體比如樹干、石塊等,旋轉(zhuǎn)速度可以稍快一些。較遠(yuǎn)的部分用樹葉等替代,旋轉(zhuǎn)速度也可以稍慢一些,使塵埃部分更有體積感和層次感。
5 ?結(jié)語
MAYA是當(dāng)前最為流行的一款三維動畫軟件,其在視覺領(lǐng)域中有著非常廣泛的應(yīng)用。上文結(jié)合龍卷風(fēng)特效制作,對MAYA進(jìn)行了介紹。通過最終效果圖可以看到,利用MAYA制作出的龍卷風(fēng)特效效果逼真。因此,可以利用MAYA根據(jù)實際需求來制作出各種所需的動畫特效。
參考文獻(xiàn)
[1] 陳建彬. 基于Maya的流體特效表示和轉(zhuǎn)化工具研發(fā)[D]. 山東大學(xué), 2019.
[2] 胡曉輝. MAYA粒子特效動畫模塊研究[J]. 科技創(chuàng)新與應(yīng)用, 2018(5): 193-194+196.
[3] 胡曉輝, 肖新元. MAYA的UV和材質(zhì)渲染無損傳導(dǎo)研究[J]. 科技廣場, 2017(10): 43-46.
[4] 周彥鵬. 基于Maya技術(shù)的數(shù)字游戲場景設(shè)計與制作[J]. 藝術(shù)科技, 2017, 30(3): 105.
[5] 劉永剛. Maya粒子表達(dá)式應(yīng)用——Crowded Bugs特效制作[J]. 影視制作, 2020, 26(1): 66-74.
[6] 李偉. Maya在影視動漫產(chǎn)業(yè)中的應(yīng)用[J]. 信息與電腦(理論版), 2019(15): 155-156.