煙霧的制作
第四節(jié) 煙霧的制作
Sprite(精靈)粒子最簡單的屬性能夠產(chǎn)生的效果在前兩節(jié)已經(jīng)學(xué)過了,這一節(jié)就是用常用屬性制作常用特效煙霧。
使用Cloud粒子也可以制作煙霧,但是與使用Sprite(精靈)粒子制作煙霧產(chǎn)生的效果是不一樣的,這一點(diǎn)我們可以在制作完畢Sprite(精靈)粒子煙霧以后將粒子類型改變成Cloud來了解其中的區(qū)別。
要制作出煙霧,首先要制作煙霧的圖片序列,當(dāng)然可以從素材庫里找到,但是這里我們還是自己制作:
首先在場景里面創(chuàng)建一個球體,我們將使用這個球體制作煙霧的貼圖元素:
為球體添加一個新的lambert材質(zhì),然后將透明度調(diào)整到最高,使球體徹底透明:
然后為材質(zhì)的Incandescence進(jìn)行貼圖,使用Maya的三維程序文理Cloud紋理:
Incandescence貼圖:
將Cloud紋理的參數(shù)作如下圖的調(diào)整,進(jìn)行渲染測試:
粒子要貼的圖像元素大致圖像效果差不多了,接下來就是讓它變成動畫了,方法很簡單,只需要動畫3d紋理的紋理坐標(biāo)就可以了:
然后把攝影機(jī)正對著紋理坐標(biāo)前進(jìn)的方向,渲染得到煙霧的元素序列:
將渲染器的渲染尺寸設(shè)置成為64*64:
最后渲染得到100張的圖片序列,但是我們制作貼圖的圖片序列使用的是材質(zhì)的Incandescence進(jìn)行貼圖,所以是沒有通道信息的,這樣直接貼圖到Sprite粒子上面是不會產(chǎn)生應(yīng)有的透明的。所以我們使用后期軟件制作圖片序列的通道。
我們使用AdobeAfterEffect來制作通道,先倒入圖片序列:
將圖片序列倒入以后,創(chuàng)建一個圖層軌道。
創(chuàng)建通道的方法是使用SetMate來制作,首先復(fù)制一層軌道,然后命名為:通道層。
接下來選擇圖片序列,使用菜單命令:Effect→channel→setmate為圖片序列制造通道,將該特效參數(shù)進(jìn)行如下設(shè)置:
這樣圖片序列的通道就使用了自身的亮度(Luminance)信息,接下來隱藏掉“通道層”,于是有通道的圖片序列制作好了:
顏色:
通道:
接下來就是將軌道上的內(nèi)容輸出成為含有通道的圖片序列(使用Tga格式),使用菜單命令Composition→MakeMove:
于是,煙霧的貼圖元素制作完成了。接下去回到Maya中,我們制作一個需要用到煙霧的場景,這里制作一個車輪,快速的旋轉(zhuǎn)摩擦土地就會需要制作產(chǎn)生煙霧了:
接下來,既然是輪子摩擦地面發(fā)出煙霧,那么就在輪子和地面交界處創(chuàng)建一個粒子發(fā)射器來產(chǎn)生粒子,然后使用力場和表達(dá)式控制粒子制作出煙霧來就可以了。
所以首先還是使用菜單命令:Particles→CreateEmiter在輪子和地面交界處創(chuàng)建一個粒子發(fā)射器:
使用體積發(fā)射器:
體積類型為Cylinder:
發(fā)射器發(fā)射速度屬性設(shè)置如下:
在場景里如圖放置粒子發(fā)射器:
車輪這就發(fā)出摩擦?xí)r的煙霧了,接下來用力場控制粒子的運(yùn)動產(chǎn)生煙霧的運(yùn)動。
煙霧在摩擦?xí)r發(fā)出來,然后向車輪的反方向運(yùn)動,并向上飄起來,所以使用力場Uniform(統(tǒng)一場)來制作粒子向上的運(yùn)動是最好的,所以選中發(fā)射出來的粒子,使用菜單命令Fields→Uniform創(chuàng)建一個統(tǒng)一場(Uniform):
接下來將粒子的生命周期調(diào)整到合適大?。?/p>
增加粒子發(fā)射器的發(fā)射量(Rate到合適的數(shù)值:)
于是,煙霧粒子的運(yùn)動狀態(tài)如下:
這似乎有一點(diǎn)過于有規(guī)律了,灰塵的質(zhì)量并不是都一樣的,受力情況也是不一樣的,同時車輪后面是有亂流的,所以氣流也會有混亂。
所以我們模仿真實情況,將粒子的質(zhì)量(mass)設(shè)置成為各不相同,為粒子的mass屬性添加Creation表達(dá)式:
particleShape1.mass=rand(0,1);//每一個粒子的質(zhì)量都是一個0~1之間的隨機(jī)數(shù),這樣質(zhì)量不同,受到相同的力,速度就會不一樣,所以效果如下:
接下來模仿車輪后面的亂流,使用一個混亂場就可以了,所以選擇粒子使用菜單命令Fields→Turblence為粒子創(chuàng)建一個亂流:
總體的運(yùn)動差不多了:
接下去就是制作煙霧了,首先當(dāng)然是把粒子類型轉(zhuǎn)換成Sprite類型,然后為粒子賦予Lambert材質(zhì),并給Color屬性一個文件紋理貼圖,使用上一節(jié)的知識我們很容易制作出使用循環(huán)動畫貼圖的Sprite(精靈)粒子。
首先將粒子屬性改為Sprite類型:
接下來給Sprite粒子一個新的Lambert材質(zhì),同時給Color屬性一個文件紋理貼圖使用煙霧貼圖序列的第一張(名字是Smoke.0000.iff):
利用上一節(jié)學(xué)過的知識,很容易就可以將我們前面制作的煙霧的圖片序列進(jìn)行循環(huán)貼圖到Sprite粒子上面。
使用UseImsgeSequence,并設(shè)置關(guān)鍵幀如下圖,同時啟動粒子貼圖緩存(UseInteractiveCathing)并且進(jìn)行設(shè)置如下:
啟動貼圖序列:
經(jīng)過上面的設(shè)置可以確定貼圖已經(jīng)循環(huán)了,然而現(xiàn)在的煙霧實在是慘不忍睹,所以接下來一步步的把這個很惡心的東西變成我們想要的煙霧。
首先當(dāng)然是改變粒子的大小了,煙霧從車輪子下面出來的時候是很小很濃密的,隨之會逐漸變得面積很大顏色很淡,位置當(dāng)然也屬越來越高,最后淡到看不見為止,粒子的運(yùn)動我們已經(jīng)做好了?,F(xiàn)在先做大小變化,當(dāng)然還是添加spriteScaleYPP粒子屬性和.spriteScaleXPP屬性了:
這兩個屬性分別控制了粒子在X和Y軸上的縮放比例的大小,我們需要粒子在生命周期開始的時候很小,在生命周期即將結(jié)束的時候變得最大,所以只需要為這兩個屬性創(chuàng)建Ramp控制就可以了。為了方便期間我們可以為兩個屬性使用同一個Ramp因為我們并不需要分別控制兩個方向的大小,只要一樣就可以了。
先為spriteScaleXPP屬性添加Ramp控制,然后再Hapershade里面顯示粒子的輸入和輸出節(jié)點(diǎn),然后找到ArryMaper節(jié)點(diǎn),用鼠標(biāo)中鍵托放到粒子上面選擇defult,默認(rèn)的會自動打開ConnectionEditor:
在彈出的ConnectionEditor里面連接OutValuePP和SpriteScaleYpp:
這樣我們就是用一個Ramp控制了兩個屬性,操作起來就很方便了,我們將Ramp進(jìn)行如下調(diào)整:
粒子變得從小到大了,但是小的太小,大的太大,所以進(jìn)一步我們要調(diào)整最大值和最小值:
選擇粒子,在spriteScaleYPP粒子屬性或者spriteScaleXPP屬性上面用鼠標(biāo)右鍵單擊,在彈出菜單里面選擇EditArrayMapper:
然后對參數(shù)進(jìn)行如下調(diào)整:
可以自己隨意調(diào)整覺得合適的參數(shù),直到覺得粒子的大小滿意為止:
濃煙滾滾,這個效果顯得比較夸張,接下來就進(jìn)入了細(xì)節(jié)調(diào)整階段,首先是透明度的控制,因為我們認(rèn)為這個煙太濃密了,根本就沒有辦法看出我們辛苦制作的煙霧貼圖的細(xì)節(jié)效果來,所以為粒子添加OpacityPP屬性,然后使用ramp控制粒子的透明,在生命周期里進(jìn)行改變,還是使用默認(rèn)創(chuàng)建就可以了。
添加OpacityPP屬性:
創(chuàng)建Ramp控制:
調(diào)整Ramp結(jié)構(gòu):
通過對透明的控制產(chǎn)生了足夠的透明感,但是煙霧還是黑色的,看來,僅僅使用透明屬性是不夠用的,這里想做的煙霧并不是黑煙,需要將黑色煙霧變成白色的,所以就需要使用rbgPP粒子屬性了。
很簡單的為粒子添加顏色rbgPP屬性,然后為粒子rbgPP屬性添加ramp控制,將控制顏色的Ramp顏色結(jié)構(gòu)調(diào)整為上下全部是白色,當(dāng)然如果讀者有興趣可以調(diào)整為不同的顏色以產(chǎn)生不同時間產(chǎn)生的不同顏色:
添加rgbPP屬性:
創(chuàng)建Ramp控制:
調(diào)整Ramp的顏色結(jié)構(gòu)為全部白色:
得到效果:
到此為止,煙霧似乎已經(jīng)可以了,但是細(xì)節(jié)還是不夠,因為每一個sprite粒子的旋轉(zhuǎn)角度都是一樣的,這樣產(chǎn)生的煙霧在細(xì)節(jié)上還是會有規(guī)律可查,接下來我們將最后的規(guī)律也打破,為粒子添加spriteTwistPP粒子屬性,這個屬性控制了每一個粒子的旋轉(zhuǎn)角度,我們讓粒子在生命周期中隨機(jī)旋轉(zhuǎn),每一個旋轉(zhuǎn)的角度和速度都不相同,這樣就更增加了煙霧的隨機(jī)性:
為粒子添加spriteTwistPP粒子屬性:
為了產(chǎn)生想要的隨機(jī)旋轉(zhuǎn),不同速度,我們需要一個自定義的粒子PerParticles的屬性,我們?nèi)∶麨閞ate:
接下來是使用表達(dá)式產(chǎn)生每個粒子煙霧都有不同的旋轉(zhuǎn)速度和角度:
首先是在粒子出顯的一瞬間要給粒子的spriteTwistPP屬性一個360°的隨機(jī)值,使用Creation表達(dá)式:particleShape1.spriteTwistPP=rand(360);就可以了。
接下來運(yùn)動的時候粒子要繼續(xù)旋轉(zhuǎn),只需要一個Runtime表達(dá)式來為spriteTwistPP屬性的值,每一幀加上一個數(shù)值就可以了:particleShape1.spriteTwistPP+=rate;只要rate每個粒子都不一樣,那么粒子旋轉(zhuǎn)的速度就不一樣了。
所以我們?yōu)榱W觿?chuàng)建的粒子屬性rate就是用在這里的,為rate屬性添加一個Creation表達(dá)式:particleShape1.rate=rand(2);于是每一個粒子都有了一個不同的rate。
為粒子spriteTwistPP屬性添加一個Runtime表達(dá)式:
particleShape1.spriteTwistPP+=particleShape1.rate;//粒子的spriteTwistPP屬性每一陣都增加rand(2)的大小產(chǎn)生不同的旋轉(zhuǎn)速度和角度。
最后進(jìn)一步調(diào)整透明的ramp控制結(jié)構(gòu),直到滿意為止,所有的細(xì)節(jié)差不多就制作完成了:
Creation表達(dá)式:
RunTime表達(dá)式:
最終效果:
如果還是感覺粒子的貼圖邊緣太過于明顯的話,可以在紋理節(jié)點(diǎn)里面對AlphaGain屬性進(jìn)行進(jìn)行修改:
這個屬性可以控制粒子通道的邊緣柔和程度。
免責(zé)聲明:以上內(nèi)容源自網(wǎng)絡(luò),版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請告知,我們將盡快刪除相關(guān)內(nèi)容。