當前位置:首頁 >教程首頁 > Maya >煙花效果製作步驟詳解

煙花效果製作步驟詳解

發布時間:2018-11-17 19:57:24

 

 

導言:
本教程主要介紹如何Maya硬件粒子來模擬煙花的絢爛效果,裏麵涉及較高級的Maya粒子表達方式的使用方法,其中包括如何用速度控製粒子的生命,如何通過ParentId粒子的子父粒子屬性繼承其父粒子的顏色等等!

 

按F5快捷鍵,切換到動力學模塊,選擇Particles->Create Emitter(粒子->創建發射器),創建一個獨立的粒子發射器,設置參數,體積發射器,方形,發射數量為2,方向為Y軸向上,隨機方向為1,隨機速度為3,方向速度為10,其它速度為0 。確定發射器是在世界坐標原點的位置,調整方形放射器的大小為(2,0.1,2)。這樣可以使粒子都從地麵發射出來(也可以使用麵發射器)。調整時間劃條為1至500。播放動畫,因為粒子發射數量很少,所以在視圖裏隻能看到很少的粒子。(圖01)

 

圖01

 

命名發射器為baseEmitter,命名粒子為mainPart(後麵會有多個粒子出現,明確地命名可以防止混淆物體)。選擇粒子mainPart,選擇Fields->Gravity(場->重力場),為其創建重力場,命名剛創建的重力場為mainGravity,設置重力場mainGravity的參數:強度為2,衰減為0,方向為Y軸向下。(圖02)

 

圖02

 

選擇粒子mainPart設置它的生命類型為每粒子,粒子的最大數量為1,lifespanMode為lifespanPPonly,maxCount為1。為粒子mainPart的每粒子生命寫表達方式。在粒子的屬性編輯器裏找到每粒子屬性卷展欄(perParticle(Array)Atrributes)。在屬性lifespanPP右邊的長方框裏點右鍵,在出現的菜單中選擇Creation Expression(創建時表達方式)打開表達方式編輯窗口。(圖03)

 

圖03

 

為粒子mainPart的每粒子生命寫創建時表達方式:

 

lifespanPP=20;

 

注意這句表達方式後麵的分號,它代表這句表達方式的結束。這句表達方式是給每個粒子在它出生時定義了一個生命值,這個生命值的大小不是特別重要,我們還要在運行時的表達方式裏來改變它的生命值,這裏隻要給它一個生命,讓它不活就行了。(寫表達方式時要注意字母的大小寫)。輸入完表達方式,點擊下邊的Create創建按鈕,創建表達方式(創建按鈕在創建成功時會變成Edit編輯)。(圖04)

 

圖04

 

小技巧:在表達方式編輯窗口裏按住Ctrl鍵,然後滑動鼠標中鍵可以放大編輯的字母。#p#e#

 

為粒子mainPart的每粒子生命寫運行時表達方式,播放可以看出粒子出生時向上升起,在達到一定高度時,因為受重力的作用就會往下落,這裏主要控製的是隻要粒子往下落,就讓粒子活亡。在表達方式編輯窗口中,把粒子表達方式點到運行時的編輯窗口中,在窗口中間有一個Particle粒子表達方式大體上是分兩種:第一種是在粒子的創建時表達方式,是在粒子出生的那一幀為粒子計算一次,也就是說,創建時表達方式隻計算一次。第二種是運行時表達方式,運行時表達方式是在粒子出生之後的每一幀為粒子計算一次。而運行時表達方式又細分為兩種:一種是動力場之前計算,另一種是動力場之後計算。Particle後邊的三個單選按鈕就是這三種表達方式:

 

Runtime before dynamics、Runtime after dynamics和Creatio,分別是運行時場前表達方式、運行時場後表達方式和創建時表達方式。

 

選擇運行時場後表達方式,為粒子mainPart的每粒子生命寫運行時表達方式:

 

Vector $vel=velocity;
If($vel.y<0) lifespanPP=0;(圖05)

 

圖05

 

完成每粒子生命表達方式,播放時會發現粒子在上升時不會活亡,而隻有粒子在往下落時就會活亡。接下來設置粒子的渲染類型,在粒子的屬性編輯器中,找到Render Attributes渲染屬性。在Particle Render Type後邊的下拉菜單中選擇multiStreak多條紋渲染類型。然後點擊Add Attributes For後邊的Current Render Type添加當前渲染類型的渲染屬性按鈕,(如果看不見屬性,就點擊屬性編輯器下邊的Load Attributes載入屬性按鈕)。(圖06)

 

圖06

 

修改粒子多條紋的數量屬性Multi Count為30,多條紋半徑Multi Radius的數值為0.15,尾部的透明TailFade為-1。為粒子mainPart添加顏色和透明。在屬性編輯器中找到Add Dynamic Attributes卷展欄。(圖07)

 

圖07

 

先點擊Color添加顏色按鈕,打開添加顏色窗口,在打開的窗口中選擇Add Per Particle Attribute。點擊Add Attribute按鈕,添加每粒子顏色屬性。這時在每粒子屬性卷展欄裏會看到RGB PP屬性。(圖08)

 

圖08#p#e#

 

用同樣的方法添加每粒子透明屬性,點擊Opacity按鈕,打開添加透明屬性的窗口。在打開的窗口中選擇Add Per Particle Attribute。點擊Add Attribute按鈕,添加每粒子透明屬性。在每粒子屬性卷展欄裏會看到Opcity PP屬性。(圖09)

 

圖09

 

在每粒子透明屬性Opacity PP右邊的欄裏點右鍵,在出現的菜單中選擇Create Ramp為屬性添加一個斜麵紋理。然後再在已添加斜麵紋理的每粒子透明屬性Opacity PP右邊的欄裏點右鍵,在出現的菜單中選擇Array Maper1.out ValuePP->Edit Ramp打開斜麵紋理屬性窗口。修改斜麵紋理的顏色塊的位置和V值。(圖10)

 

圖10

 

返回到粒子屬性窗口,為rgbPP每粒子顏色添加另一個斜麵紋理,方法與透明不同,需要在出現的右鍵菜單中選擇Create Ramp後麵的小方塊,打開斜麵紋理創建窗口。在斜麵紋理創建窗口中把Input V項改成rgbVPP。(圖11)

 

圖11

 

點擊OK按鈕,為每粒子顏色屬性創建斜麵紋理,但同時也創建了一個新屬性,rgbVPP,可以在每粒子屬性卷展欄裏看見它。打開表達方式編輯窗口,為rgbVPP寫創建時表達方式:

 

rgbVPP=rand(1);(圖12)

 

圖12

 

注意:之前寫的創建時表達方式不可以刪除掉,粒子mainPart的所有創建時表達方式都存在與這個窗口中。#p#e#

 

點擊Edit編輯按鈕。這時可以按Alt+B快捷鍵,將視圖的背景眼色改為黑色,播放動畫,能清楚的看到粒子的顏色是五顏六色的(也可以修改rgbPP每粒子顏色的斜麵紋理,給它一個特定的色相)。(圖13)

 

圖13

 

接下來,創建一個新粒子,模擬煙花在高空咋開的效果。這個新粒子要從第一個粒子mainPart身上發射出來,而且是在mainPart要活亡時才發射出來,才是這裏想要的效果。所以,選擇粒子mainPart,選擇Particles->Emit From Object(粒子->從物體發射後邊的小方塊,打開創建從物體發射選項窗口,設置發射器的參數,點發射器,速度為6,隨機速度為4。點擊Create創建按鈕,創建第二個粒子,命名粒子為sparkPart。(圖14)

 

圖14

 

選擇粒子mainPart(第一創建的粒子),選擇Particles Per->Point Emission Rates(粒子->每粒子發射數量,為粒子mainPart添加每粒子發射數量屬性emitter1RatePP,在粒子mainPart的屬性編輯器中找到該屬性)。(圖15)

 

圖15

 

每粒子發射數量屬性emitter1RatePP,是控製粒子mainPart發射粒子sparkPart多少個的屬性,給該屬性添加一個斜麵紋理,與添加透明斜麵紋理時相同,編輯該紋理,將Interpolation插值改為none,刪除一個顏色,隻留下兩個,下邊的是純黑色,上邊顏色的位置在0.95,顏色是白色,但V值要設置的很高,這裏可以是2400,也可以或多或少,但太少會看不到粒子出現。(圖16)

 

圖16#p#e#

 

選擇粒子sparkPart,選擇Fields->Gravity(場->重力場),創為其創建重力場,命名重力場為 sparkGravity,設置重力場sparkGravity的強度為3。(圖17)

 

圖17

 

選擇粒子sparkPart,修改它的conserve繼承屬性為0.97,生命類型為randomRange隨機範圍lifespan生命範圍為2,lifespanRandom隨機範圍為1。為粒子sparkPart添加每粒子顏色rgbPP和每粒子透明opacityPP,與第一個粒子mainPart的添加方法相同。在粒子sparkPart的屬性編輯器中找到新添加的每粒子顏色rgbPP和每粒子透明opacityPP屬性。為粒子sparkPart的透明opacityPP添加一個斜麵紋理,方法與粒子mainPart的方法相同。(圖18)

 

圖18

 

給粒子sparkPart添加顏色的方法很多,這裏介紹一種可以繼承它的父粒子顏色的方法,就是發射它的粒子mainPart是什麼顏色,就給它也定義成什麼顏色。所以要添加一個新屬性parentId,這個屬性記錄了它的父粒子的ID號。在粒子sparkPart的屬性編輯器裏,點擊Add Dynamic Attributes添加動態屬性卷展欄裏,添加每粒子顏色左邊的general按鈕,打開添加粒子動態屬性窗口。(圖19)

 

圖19

 

在添加粒子動態屬性窗口中,默認是new標簽,點擊中間的particle標簽,在下邊的列表中找到parentId屬性。點擊OK按鈕,添加屬性,屬性會出現在每粒子屬性欄裏。(圖20)

 

圖20#p#e#

 

為粒子sparkPart的rgbPP每粒子顏色寫創建時表達方式:

 

Int $pid=parentId;
Float $rgb[]=`getParticleAttr –at rgbPP mainPart.pt[$pid]`;
rgbPP=<<($rgb[0]),($rgb[1]),($rgb[2])>>;(圖21)

 

圖21

 

修改粒子sparkPart的渲染類型為multiStreak多條紋,設置參數,勾選顏色疊加,設置多條紋的數量為24,多條紋的半徑為0.1,尾巴的透明為-1。(圖22)

 

圖22

 

給兩個粒子分別添加拖尾效果。先給粒子mainPart添加拖尾,選擇粒子mainPart,選擇Particles->Emit From Obects後邊的小方塊,打開物體發射選項窗口,設置發射器的速度為0。點Create創建按鈕,創建第三個新粒子,命名為mainTailPart,選擇新粒子mainTailPart,選擇Fields->VolumeAxis(場->體積軸場),為其創建體積軸場,命名體積軸場為mainVolumeAxis,調整場的縮放為(50,50,50),設置體積軸場mainVolumeAxis的參數。(圖23)

 

圖23

 

修改粒子mainTailPart的生命類型為隨機範圍。修改粒子mainTailPart的渲染類型為multiPoint多點。(圖24)

 

圖24#p#e#

 

為粒子mainTailPart添加每粒子顏色rgbPP,每粒子透明opacityPP,和父粒子ID號屬性parentId。(圖25)

 

圖25

 

為粒子mainTailPart的每粒子透明屬性opacityPP添加一個斜麵紋理,方法與前麵相同,修改斜麵紋理的屬性。(圖26)

 

圖26

 

為粒子mainTailPart的每粒子顏色屬性rgbPP寫創建時表達方式:

 

int $pid=parentId;
float $rgb[]=`getParticleAttr -at rgbPP mainPart.pt[$pid]`;
rgbPP=<<($rgb[0]),($rgb[1]),($rgb[2])>>;(圖27)

 

圖27

 

這時會發現拖尾的粒子太實了,需要它再透明一些,可以在每粒子透明的屬性opacityPP上點右鍵,在出現的菜單中,選擇Array Maper1.out ValuePP->Edit Array Maper打開斜麵紋理巨陣編輯窗口,設置MaxValue為0.08。(圖28)

 

圖28#p#e#

 

為粒子sparkPart添加一個拖尾粒子。方法與第一個拖尾相同,不同的地方,要注意這拖尾粒子是從sparkPart上發射出來的,它繼承的顏色也是sparkPart的顏色,還有就是它不需要體積軸場。命名新拖尾粒子的名字為sparkTailPart。表達式為:

 

Int $pid=parented;
Float $rgb[]=`getParticleAttr –at rgbPP sparkPart.pt[$pid]`;
rgbPP=<<($rgb[0]),($rgb[1]),($rgb[2])>>;(圖29)

 

圖29

 

這時發現粒子sparkTailPart後邊有點太細了,適當給它的發生器一點速度數值,可以使它向外散開一點,調整發射器屬性,調整速度和隨機速度為0.1。(圖30)

 

圖30

 

然後創建最後一個粒子,為粒子mainPart添加另一個拖尾效果,選擇粒子mainPart,選擇Particles->Emit From Obects後邊的小方塊,打開物體發射選項窗口,設置發射器的類型為點發射器,速度和隨機速度都為1 。命名剛創建出來的粒子為mainTailPart1。(圖31)

 

圖31

 

修改粒子mainTailPart1的生命類型為隨機範圍,生命值為1,隨機生命為0.5,修改粒子mainTailPart1的渲染類型為多點,勾選顏色疊加,多點數量為10,多點半徑為0.05,點的大小為1。為粒子mainTailPart1添加每粒子顏色rgbPP,每粒子透明opacityPP。分別為粒子mainTailPart1的rgbPP和opacityPP添加兩個默認的斜麵紋理,適當修改兩個紋理的V值和顏色。(圖32)

 

圖32#p#e#

 

調整基本色調,這裏的顏色控製,主要在粒子mainPart上,它的顏色決定了後麵所有粒子的顏色,現在來調整一下煙花的色調。選擇粒子mainPart,在屬性編輯器裏編輯它的rgbPP的斜麵紋理的顏色。(圖33)

 

圖33

 

在Outliner中,將所有的物體選擇,這裏隻選擇最上層的物體。(圖34)

 

圖34

 

按Ctrl+G快捷鍵,打組,名命新組為yanhuaGrp。到此為一組顏色偏暖的煙花效果,保存文件,命名文件為yanhua。另存文件,命名文件yanhua_ok。選擇File->Import導入窗口中選擇yanhua文件,點擊Import按鈕,導入同樣的煙花粒子。(圖35)

 

圖35

 

調整新導入的煙花粒子發射器的位置,在Y軸旋轉45度。選擇新導入的粒子yanhua:mainPartShape,調整它發射器的隨機屬性。(圖36)

 

圖36#p#e#

 

調整新導入的粒子yanhua:mainPartShape的每粒子顏色屬性,使其與前邊的顏色不同。(圖37)

 

圖37

 

修改導入粒子的表達方式,這步很重要。選擇粒子yanhua:sparkPart,打開創建時表達方式編輯窗口,看一下修改前的。(圖38)

 

圖38

 

本來表達式是可以自動修改物體名的。但因為這裏的表達式裏使用了MEL命令,物體的名字在這裏沒有自動更新,所以要手動修改表達式,修改之後的表達式。(圖39)

 

圖39

 

粒子yanhua:mainTailPart,yanhua:sparkTailPart的表達方式做同樣的修改。(圖40)

 

圖40

 

:這裏為了得到更隨機的效果,很多東西都可以調整,比如場的參數,粒子的各個參數等等。#p#e#

 

重複前五步,導入第三組粒子,完成最終效果。(圖41、42)

 

圖41

 

圖42(點擊放大)

华体会hth体育网 賞析
  • 2101期學員李思庭作品

    2101期學員李思庭作品

  • 2104期學員林雪茹作品

    2104期學員林雪茹作品

  • 2107期學員趙淩作品

    2107期學員趙淩作品

  • 2107期學員趙燃作品

    2107期學員趙燃作品

  • 2106期學員徐正浩作品

    2106期學員徐正浩作品

  • 2106期學員弓莉作品

    2106期學員弓莉作品

  • 2105期學員白羽新作品

    2105期學員白羽新作品

  • 2107期學員王佳蕊作品

    2107期學員王佳蕊作品

專業問題谘詢

你擔心的問題,火星幫你解答

微信掃碼入群領福利

掃碼領福利最新AI資訊

點擊谘詢
添加老師微信,馬上領取免費課程資源

1. 打開微信掃一掃,掃描左側二維碼

2. 添加老師微信,馬上領取免費課程資源

×

同學您好!

您已成功報名0元試學活動,老師會在第一時間與您取得聯係,請保持電話暢通!
確定