包含4節(jié)視頻教程
關(guān)注14.7萬(wàn)次
3dmax動(dòng)畫(huà)包括曲線編輯、動(dòng)畫(huà)調(diào)節(jié)基礎(chǔ)、各種控制器的掌握、表情動(dòng)畫(huà)等,讓你輕輕松松學(xué)動(dòng)畫(huà),做動(dòng)畫(huà)。
導(dǎo)言:
本教程主要介紹如何Maya硬件粒子來(lái)模擬煙花的絢爛效果,里面涉及較高級(jí)的Maya粒子表達(dá)方式的使用方法,其中包括如何用速度控制粒子的生命,如何通過(guò)ParentId粒子的子父粒子屬性繼承其父粒子的顏色等等!
按F5快捷鍵,切換到動(dòng)力學(xué)模塊,選擇Particles->Create Emitter(粒子->創(chuàng)建發(fā)射器),創(chuàng)建一個(gè)獨(dú)立的粒子發(fā)射器,設(shè)置參數(shù),體積發(fā)射器,方形,發(fā)射數(shù)量為2,方向?yàn)閅軸向上,隨機(jī)方向?yàn)?,隨機(jī)速度為3,方向速度為10,其它速度為0 。確定發(fā)射器是在世界坐標(biāo)原點(diǎn)的位置,調(diào)整方形放射器的大小為(2,0.1,2)。這樣可以使粒子都從地面發(fā)射出來(lái)(也可以使用面發(fā)射器)。調(diào)整時(shí)間劃條為1至500。播放動(dòng)畫(huà),因?yàn)榱W影l(fā)射數(shù)量很少,所以在視圖里只能看到很少的粒子。(圖01)
圖01
命名發(fā)射器為baseEmitter,命名粒子為mainPart(后面會(huì)有多個(gè)粒子出現(xiàn),明確地命名可以防止混淆物體)。選擇粒子mainPart,選擇Fields->Gravity(場(chǎng)->重力場(chǎng)),為其創(chuàng)建重力場(chǎng),命名剛創(chuàng)建的重力場(chǎng)為mainGravity,設(shè)置重力場(chǎng)mainGravity的參數(shù):強(qiáng)度為2,衰減為0,方向?yàn)閅軸向下。(圖02)
圖02
選擇粒子mainPart設(shè)置它的生命類型為每粒子,粒子的最大數(shù)量為1,lifespanMode為lifespanPPonly,maxCount為1。為粒子mainPart的每粒子生命寫(xiě)表達(dá)方式。在粒子的屬性編輯器里找到每粒子屬性卷展欄(perParticle(Array)Atrributes)。在屬性lifespanPP右邊的長(zhǎng)方框里點(diǎn)右鍵,在出現(xiàn)的菜單中選擇Creation Expression(創(chuàng)建時(shí)表達(dá)方式)打開(kāi)表達(dá)方式編輯窗口。(圖03)
圖03
為粒子mainPart的每粒子生命寫(xiě)創(chuàng)建時(shí)表達(dá)方式:
lifespanPP=20;
注意這句表達(dá)方式后面的分號(hào),它代表這句表達(dá)方式的結(jié)束。這句表達(dá)方式是給每個(gè)粒子在它出生時(shí)定義了一個(gè)生命值,這個(gè)生命值的大小不是特別重要,我們還要在運(yùn)行時(shí)的表達(dá)方式里來(lái)改變它的生命值,這里只要給它一個(gè)生命,讓它不活就行了。(寫(xiě)表達(dá)方式時(shí)要注意字母的大小寫(xiě))。輸入完表達(dá)方式,點(diǎn)擊下邊的Create創(chuàng)建按鈕,創(chuàng)建表達(dá)方式(創(chuàng)建按鈕在創(chuàng)建成功時(shí)會(huì)變成Edit編輯)。(圖04)
圖04
小技巧:在表達(dá)方式編輯窗口里按住Ctrl鍵,然后滑動(dòng)鼠標(biāo)中鍵可以放大編輯的字母。
為粒子mainPart的每粒子生命寫(xiě)運(yùn)行時(shí)表達(dá)方式,播放可以看出粒子出生時(shí)向上升起,在達(dá)到一定高度時(shí),因?yàn)槭苤亓Φ淖饔镁蜁?huì)往下落,這里主要控制的是只要粒子往下落,就讓粒子活亡。在表達(dá)方式編輯窗口中,把粒子表達(dá)方式點(diǎn)到運(yùn)行時(shí)的編輯窗口中,在窗口中間有一個(gè)Particle粒子表達(dá)方式大體上是分兩種:第一種是在粒子的創(chuàng)建時(shí)表達(dá)方式,是在粒子出生的那一幀為粒子計(jì)算一次,也就是說(shuō),創(chuàng)建時(shí)表達(dá)方式只計(jì)算一次。第二種是運(yùn)行時(shí)表達(dá)方式,運(yùn)行時(shí)表達(dá)方式是在粒子出生之后的每一幀為粒子計(jì)算一次。而運(yùn)行時(shí)表達(dá)方式又細(xì)分為兩種:一種是動(dòng)力場(chǎng)之前計(jì)算,另一種是動(dòng)力場(chǎng)之后計(jì)算。Particle后邊的三個(gè)單選按鈕就是這三種表達(dá)方式:
Runtime before dynamics、Runtime after dynamics和Creatio,分別是運(yùn)行時(shí)場(chǎng)前表達(dá)方式、運(yùn)行時(shí)場(chǎng)后表達(dá)方式和創(chuàng)建時(shí)表達(dá)方式。
選擇運(yùn)行時(shí)場(chǎng)后表達(dá)方式,為粒子mainPart的每粒子生命寫(xiě)運(yùn)行時(shí)表達(dá)方式:
Vector $vel=velocity;
If($vel.y<0) lifespanPP=0;(圖05)
圖05
完成每粒子生命表達(dá)方式,播放時(shí)會(huì)發(fā)現(xiàn)粒子在上升時(shí)不會(huì)活亡,而只有粒子在往下落時(shí)就會(huì)活亡。接下來(lái)設(shè)置粒子的渲染類型,在粒子的屬性編輯器中,找到Render Attributes渲染屬性。在Particle Render Type后邊的下拉菜單中選擇multiStreak多條紋渲染類型。然后點(diǎn)擊Add Attributes For后邊的Current Render Type添加當(dāng)前渲染類型的渲染屬性按鈕,(如果看不見(jiàn)屬性,就點(diǎn)擊屬性編輯器下邊的Load Attributes載入屬性按鈕)。(圖06)
圖06
修改粒子多條紋的數(shù)量屬性Multi Count為30,多條紋半徑Multi Radius的數(shù)值為0.15,尾部的透明TailFade為-1。為粒子mainPart添加顏色和透明。在屬性編輯器中找到Add Dynamic Attributes卷展欄。(圖07)
圖07
先點(diǎn)擊Color添加顏色按鈕,打開(kāi)添加顏色窗口,在打開(kāi)的窗口中選擇Add Per Particle Attribute。點(diǎn)擊Add Attribute按鈕,添加每粒子顏色屬性。這時(shí)在每粒子屬性卷展欄里會(huì)看到RGB PP屬性。(圖08)
圖08
用同樣的方法添加每粒子透明屬性,點(diǎn)擊Opacity按鈕,打開(kāi)添加透明屬性的窗口。在打開(kāi)的窗口中選擇Add Per Particle Attribute。點(diǎn)擊Add Attribute按鈕,添加每粒子透明屬性。在每粒子屬性卷展欄里會(huì)看到Opcity PP屬性。(圖09)
圖09
在每粒子透明屬性O(shè)pacity PP右邊的欄里點(diǎn)右鍵,在出現(xiàn)的菜單中選擇Create Ramp為屬性添加一個(gè)斜面紋理。然后再在已添加斜面紋理的每粒子透明屬性O(shè)pacity PP右邊的欄里點(diǎn)右鍵,在出現(xiàn)的菜單中選擇Array Maper1.out ValuePP->Edit Ramp打開(kāi)斜面紋理屬性窗口。修改斜面紋理的顏色塊的位置和V值。(圖10)
圖10
返回到粒子屬性窗口,為rgbPP每粒子顏色添加另一個(gè)斜面紋理,方法與透明不同,需要在出現(xiàn)的右鍵菜單中選擇Create Ramp后面的小方塊,打開(kāi)斜面紋理創(chuàng)建窗口。在斜面紋理創(chuàng)建窗口中把Input V項(xiàng)改成rgbVPP。(圖11)
圖11
點(diǎn)擊OK按鈕,為每粒子顏色屬性創(chuàng)建斜面紋理,但同時(shí)也創(chuàng)建了一個(gè)新屬性,rgbVPP,可以在每粒子屬性卷展欄里看見(jiàn)它。打開(kāi)表達(dá)方式編輯窗口,為rgbVPP寫(xiě)創(chuàng)建時(shí)表達(dá)方式:
rgbVPP=rand(1);(圖12)
圖12
注意:之前寫(xiě)的創(chuàng)建時(shí)表達(dá)方式不可以刪除掉,粒子mainPart的所有創(chuàng)建時(shí)表達(dá)方式都存在與這個(gè)窗口中。
點(diǎn)擊Edit編輯按鈕。這時(shí)可以按Alt+B快捷鍵,將視圖的背景眼色改為黑色,播放動(dòng)畫(huà),能清楚的看到粒子的顏色是五顏六色的(也可以修改rgbPP每粒子顏色的斜面紋理,給它一個(gè)特定的色相)。(圖13)
圖13
接下來(lái),創(chuàng)建一個(gè)新粒子,模擬煙花在高空咋開(kāi)的效果。這個(gè)新粒子要從第一個(gè)粒子mainPart身上發(fā)射出來(lái),而且是在mainPart要活亡時(shí)才發(fā)射出來(lái),才是這里想要的效果。所以,選擇粒子mainPart,選擇Particles->Emit From Object(粒子->從物體發(fā)射后邊的小方塊,打開(kāi)創(chuàng)建從物體發(fā)射選項(xiàng)窗口,設(shè)置發(fā)射器的參數(shù),點(diǎn)發(fā)射器,速度為6,隨機(jī)速度為4。點(diǎn)擊Create創(chuàng)建按鈕,創(chuàng)建第二個(gè)粒子,命名粒子為sparkPart。(圖14)
圖14
選擇粒子mainPart(第一創(chuàng)建的粒子),選擇Particles Per->Point Emission Rates(粒子->每粒子發(fā)射數(shù)量,為粒子mainPart添加每粒子發(fā)射數(shù)量屬性emitter1RatePP,在粒子mainPart的屬性編輯器中找到該屬性)。(圖15)
圖15
每粒子發(fā)射數(shù)量屬性emitter1RatePP,是控制粒子mainPart發(fā)射粒子sparkPart多少個(gè)的屬性,給該屬性添加一個(gè)斜面紋理,與添加透明斜面紋理時(shí)相同,編輯該紋理,將Interpolation插值改為none,刪除一個(gè)顏色,只留下兩個(gè),下邊的是純黑色,上邊顏色的位置在0.95,顏色是白色,但V值要設(shè)置的很高,這里可以是2400,也可以或多或少,但太少會(huì)看不到粒子出現(xiàn)。(圖16)
圖16
選擇粒子sparkPart,選擇Fields->Gravity(場(chǎng)->重力場(chǎng)),創(chuàng)為其創(chuàng)建重力場(chǎng),命名重力場(chǎng)為 sparkGravity,設(shè)置重力場(chǎng)sparkGravity的強(qiáng)度為3。(圖17)
圖17
選擇粒子sparkPart,修改它的conserve繼承屬性為0.97,生命類型為randomRange隨機(jī)范圍lifespan生命范圍為2,lifespanRandom隨機(jī)范圍為1。為粒子sparkPart添加每粒子顏色rgbPP和每粒子透明opacityPP,與第一個(gè)粒子mainPart的添加方法相同。在粒子sparkPart的屬性編輯器中找到新添加的每粒子顏色rgbPP和每粒子透明opacityPP屬性。為粒子sparkPart的透明opacityPP添加一個(gè)斜面紋理,方法與粒子mainPart的方法相同。(圖18)
圖18
給粒子sparkPart添加顏色的方法很多,這里介紹一種可以繼承它的父粒子顏色的方法,就是發(fā)射它的粒子mainPart是什么顏色,就給它也定義成什么顏色。所以要添加一個(gè)新屬性parentId,這個(gè)屬性記錄了它的父粒子的ID號(hào)。在粒子sparkPart的屬性編輯器里,點(diǎn)擊Add Dynamic Attributes添加動(dòng)態(tài)屬性卷展欄里,添加每粒子顏色左邊的general按鈕,打開(kāi)添加粒子動(dòng)態(tài)屬性窗口。(圖19)
圖19
在添加粒子動(dòng)態(tài)屬性窗口中,默認(rèn)是new標(biāo)簽,點(diǎn)擊中間的particle標(biāo)簽,在下邊的列表中找到parentId屬性。點(diǎn)擊OK按鈕,添加屬性,屬性會(huì)出現(xiàn)在每粒子屬性欄里。(圖20)
圖20
為粒子sparkPart的rgbPP每粒子顏色寫(xiě)創(chuàng)建時(shí)表達(dá)方式:
Int $pid=parentId;
Float $rgb[]=`getParticleAttr –at rgbPP mainPart.pt[$pid]`;
rgbPP=<<($rgb[0]),($rgb[1]),($rgb[2])>>;(圖21)
圖21
修改粒子sparkPart的渲染類型為multiStreak多條紋,設(shè)置參數(shù),勾選顏色疊加,設(shè)置多條紋的數(shù)量為24,多條紋的半徑為0.1,尾巴的透明為-1。(圖22)
圖22
給兩個(gè)粒子分別添加拖尾效果。先給粒子mainPart添加拖尾,選擇粒子mainPart,選擇Particles->Emit From Obects后邊的小方塊,打開(kāi)物體發(fā)射選項(xiàng)窗口,設(shè)置發(fā)射器的速度為0。點(diǎn)Create創(chuàng)建按鈕,創(chuàng)建第三個(gè)新粒子,命名為mainTailPart,選擇新粒子mainTailPart,選擇Fields->VolumeAxis(場(chǎng)->體積軸場(chǎng)),為其創(chuàng)建體積軸場(chǎng),命名體積軸場(chǎng)為mainVolumeAxis,調(diào)整場(chǎng)的縮放為(50,50,50),設(shè)置體積軸場(chǎng)mainVolumeAxis的參數(shù)。(圖23)
圖23
修改粒子mainTailPart的生命類型為隨機(jī)范圍。修改粒子mainTailPart的渲染類型為multiPoint多點(diǎn)。(圖24)
圖24
為粒子mainTailPart添加每粒子顏色rgbPP,每粒子透明opacityPP,和父粒子ID號(hào)屬性parentId。(圖25)
圖25
為粒子mainTailPart的每粒子透明屬性opacityPP添加一個(gè)斜面紋理,方法與前面相同,修改斜面紋理的屬性。(圖26)
圖26
為粒子mainTailPart的每粒子顏色屬性rgbPP寫(xiě)創(chuàng)建時(shí)表達(dá)方式:
int $pid=parentId;
float $rgb[]=`getParticleAttr -at rgbPP mainPart.pt[$pid]`;
rgbPP=<<($rgb[0]),($rgb[1]),($rgb[2])>>;(圖27)
圖27
這時(shí)會(huì)發(fā)現(xiàn)拖尾的粒子太實(shí)了,需要它再透明一些,可以在每粒子透明的屬性opacityPP上點(diǎn)右鍵,在出現(xiàn)的菜單中,選擇Array Maper1.out ValuePP->Edit Array Maper打開(kāi)斜面紋理巨陣編輯窗口,設(shè)置MaxValue為0.08。(圖28)
圖28
為粒子sparkPart添加一個(gè)拖尾粒子。方法與第一個(gè)拖尾相同,不同的地方,要注意這拖尾粒子是從sparkPart上發(fā)射出來(lái)的,它繼承的顏色也是sparkPart的顏色,還有就是它不需要體積軸場(chǎng)。命名新拖尾粒子的名字為sparkTailPart。表達(dá)式為:
Int $pid=parented;
Float $rgb[]=`getParticleAttr –at rgbPP sparkPart.pt[$pid]`;
rgbPP=<<($rgb[0]),($rgb[1]),($rgb[2])>>;(圖29)
圖29
這時(shí)發(fā)現(xiàn)粒子sparkTailPart后邊有點(diǎn)太細(xì)了,適當(dāng)給它的發(fā)生器一點(diǎn)速度數(shù)值,可以使它向外散開(kāi)一點(diǎn),調(diào)整發(fā)射器屬性,調(diào)整速度和隨機(jī)速度為0.1。(圖30)
圖30
然后創(chuàng)建最后一個(gè)粒子,為粒子mainPart添加另一個(gè)拖尾效果,選擇粒子mainPart,選擇Particles->Emit From Obects后邊的小方塊,打開(kāi)物體發(fā)射選項(xiàng)窗口,設(shè)置發(fā)射器的類型為點(diǎn)發(fā)射器,速度和隨機(jī)速度都為1 。命名剛創(chuàng)建出來(lái)的粒子為mainTailPart1。(圖31)
圖31
修改粒子mainTailPart1的生命類型為隨機(jī)范圍,生命值為1,隨機(jī)生命為0.5,修改粒子mainTailPart1的渲染類型為多點(diǎn),勾選顏色疊加,多點(diǎn)數(shù)量為10,多點(diǎn)半徑為0.05,點(diǎn)的大小為1。為粒子mainTailPart1添加每粒子顏色rgbPP,每粒子透明opacityPP。分別為粒子mainTailPart1的rgbPP和opacityPP添加兩個(gè)默認(rèn)的斜面紋理,適當(dāng)修改兩個(gè)紋理的V值和顏色。(圖32)
圖32
調(diào)整基本色調(diào),這里的顏色控制,主要在粒子mainPart上,它的顏色決定了后面所有粒子的顏色,現(xiàn)在來(lái)調(diào)整一下煙花的色調(diào)。選擇粒子mainPart,在屬性編輯器里編輯它的rgbPP的斜面紋理的顏色。(圖33)
圖33
在Outliner中,將所有的物體選擇,這里只選擇最上層的物體。(圖34)
圖34
按Ctrl+G快捷鍵,打組,名命新組為yanhuaGrp。到此為一組顏色偏暖的煙花效果,保存文件,命名文件為yanhua。另存文件,命名文件yanhua_ok。選擇File->Import導(dǎo)入窗口中選擇yanhua文件,點(diǎn)擊Import按鈕,導(dǎo)入同樣的煙花粒子。(圖35)
圖35
調(diào)整新導(dǎo)入的煙花粒子發(fā)射器的位置,在Y軸旋轉(zhuǎn)45度。選擇新導(dǎo)入的粒子yanhua:mainPartShape,調(diào)整它發(fā)射器的隨機(jī)屬性。(圖36)
圖36
調(diào)整新導(dǎo)入的粒子yanhua:mainPartShape的每粒子顏色屬性,使其與前邊的顏色不同。(圖37)
圖37
修改導(dǎo)入粒子的表達(dá)方式,這步很重要。選擇粒子yanhua:sparkPart,打開(kāi)創(chuàng)建時(shí)表達(dá)方式編輯窗口,看一下修改前的。(圖38)
圖38
本來(lái)表達(dá)式是可以自動(dòng)修改物體名的。但因?yàn)檫@里的表達(dá)式里使用了MEL命令,物體的名字在這里沒(méi)有自動(dòng)更新,所以要手動(dòng)修改表達(dá)式,修改之后的表達(dá)式。(圖39)
圖39
粒子yanhua:mainTailPart,yanhua:sparkTailPart的表達(dá)方式做同樣的修改。(圖40)
圖40
注:這里為了得到更隨機(jī)的效果,很多東西都可以調(diào)整,比如場(chǎng)的參數(shù),粒子的各個(gè)參數(shù)等等。
重復(fù)前五步,導(dǎo)入第三組粒子,完成最終效果。(圖41、42)
圖41
朱峰社區(qū)網(wǎng)頁(yè)版(手機(jī)掃描-分享-添加到屏幕)
朱峰社區(qū)微信公眾號(hào)(微信掃一掃-關(guān)注)
未知用戶
2005-2025 朱峰社區(qū) 版權(quán)所有 遼ICP備2021001865號(hào)-1
2005-2025 ZhuFeng Community All Rights Reserved
VIP