當(dāng)前位置:首頁(yè)>軟件教程>maya教程>教程內(nèi)容

Maya的粒子替換功能和高級(jí)的MEL命令colorAtPoint(4)

來(lái)源:火星時(shí)代 作者: 學(xué)習(xí):11077人次

作者簡(jiǎn)介

網(wǎng)名:老船長(zhǎng) QQ:149090900

導(dǎo)言:
本教程主要涉及Maya的粒子替換功能,其中用到較高級(jí)的MEL命令colorAtPoint,從而用貼圖的亮度控制粒子替換的縮放效果。為了達(dá)到可以使用貼圖的亮度要求,這里還使用了粒子目標(biāo)功能,利用粒子目標(biāo)的gaolU和gaolV屬性作為讀取貼圖亮度的輸入?yún)?shù)等等。

新建一個(gè)場(chǎng)景,選擇Create->NurbsPrimitives->Plane(創(chuàng)建->曲面幾何體->平面),創(chuàng)建一個(gè)Nurbs平面,調(diào)整為長(zhǎng)方形,X軸縮放為15,Z軸縮放為10。(圖01)

圖01

選擇Particles->Create Emitter(粒子->創(chuàng)建發(fā)射器),創(chuàng)建一個(gè)獨(dú)立的粒子發(fā)射器,發(fā)射器的發(fā)射數(shù)量為100,其它保持默認(rèn)。(圖02)

圖02

選擇粒子Particle1,加選Nurbs平面NurbsPlane1,選擇Particles->Goal(粒子->目標(biāo))后面得小方塊,打開(kāi)粒子目標(biāo)選項(xiàng)盒,設(shè)置目標(biāo)權(quán)重為1,點(diǎn)擊Create為粒子創(chuàng)建目標(biāo),播放效果如圖。(圖03)

圖03

默認(rèn)情況下粒子都是被目標(biāo)物體吸附到物體的點(diǎn)上,這里需要將粒子整齊的排列到平面上,所以要為粒子添加goalU和gaolV屬性,在粒子的屬性編輯器里找到每粒子屬性卷展欄(Per Particle Array Attributes)和下邊的添加動(dòng)態(tài)屬性卷展欄(Add Dynamic Attributes),點(diǎn)擊General按鈕,打開(kāi)添加粒子動(dòng)態(tài)屬性窗口,在Particle粒子標(biāo)簽找到gaolU和gaolV屬性。(圖04)

圖04

點(diǎn)擊添加粒子動(dòng)態(tài)屬性窗口下邊的OK按鈕,添加goalU和goalV屬性。在每粒子屬性卷展欄里找到新添加的屬性。(圖05)

圖05

這里因?yàn)橐W訖M向排列70,縱向排列50,一共需要70×50(3500)個(gè)粒子,所以把粒子的最大數(shù)量屬性max Count設(shè)置為3500。然后為粒子編寫表達(dá)式,在每粒子屬性卷展欄里找到新添加的屬性,在其中一個(gè)右邊的方框里點(diǎn)右鍵,在彈出菜單中選Creation Expression打開(kāi)創(chuàng)建時(shí)表達(dá)式編輯窗口,為goalU和goalV編寫表達(dá)式:

goalU=particleId%70/69.0;
goalV=int(particleId/70)/49.0;(圖06)

圖06

表達(dá)式是根據(jù)粒子的ID號(hào)屬性為每個(gè)粒子計(jì)算出一個(gè)目標(biāo)U和目標(biāo)V的數(shù)值,從而使粒子整齊的排列在平面上。將時(shí)間滑塊,設(shè)置為1到1000,播放動(dòng)畫到862幀的效果。(圖07)

圖07

選擇粒子,選擇Solvers->InitialState->Set for selected(解算器->初始化->初始化選擇的物體),將粒子當(dāng)前的狀態(tài)初始化為開(kāi)始的狀態(tài),使粒子在回到第一幀時(shí)還是有3500個(gè)粒子。(圖08)

圖08

選擇Create->Polygon Primitives->Cube(創(chuàng)建->多邊形幾何體->方形),創(chuàng)建一個(gè)盒子,調(diào)整它的長(zhǎng)寬高都為0.2,效果如下。(圖09)

圖09

選擇新創(chuàng)建的盒子,選擇Particles->Instancer(replacement)(粒子->粒子替換)后面的小方塊,打開(kāi)粒子替換選項(xiàng)盒,使用默認(rèn)設(shè)置,點(diǎn)擊Create,創(chuàng)建粒子替換。(圖10)

圖10

選擇小方盒子pCube1,按Ctrl+H將其隱藏。接下來(lái)是創(chuàng)建一個(gè)2D貼圖,可以是程序紋理,也可以是文件紋理,然后用MEL命令讀取貼圖的亮度,最后用這個(gè)亮度值控制粒子替換的縮放。選擇Windows->Rendering Editors->Hypershade(窗口->渲染編輯窗口->超級(jí)濾光器窗口)。(圖11)

圖11

創(chuàng)建一個(gè)noise程序紋理,設(shè)置noise1的Depth Max(最大深度)為1,F(xiàn)requence(頻率)為5,Noise Type(擾亂的類型)為Perlin Noise。(圖12)

圖12

選擇粒子,打開(kāi)粒子屬性編輯窗口,在添加動(dòng)態(tài)屬性卷展欄(Add Dynamic Attributes)里,點(diǎn)擊General按鈕,打開(kāi)添加粒子動(dòng)態(tài)屬性窗口,在New粒子標(biāo)簽添加新屬性,名字:scl,數(shù)據(jù)類型:Vector,屬性類型:Perparticle(array)。(圖13)

圖13

點(diǎn)擊OK添加新屬性scl,在新屬性右邊的方框里點(diǎn)擊右鍵,在彈出菜單中選擇Runtime After Dynamics,打開(kāi)運(yùn)行時(shí)動(dòng)力場(chǎng)之后表達(dá)式編輯窗口,編寫表達(dá)式:

float $u=goalU;
float $v=goalV;
float $c[]=`colorAtPoint -o A -u $u -v $v noise1`;
scl=<<1,1,(1+($c[0])*5)>>;(圖14)

圖14

應(yīng)用新屬性scl作為粒子替換的縮放控制屬性,在粒子的屬性編輯器里,找到Instancer(GeometryReplacement)粒子替換卷展欄,在Scale的控制選項(xiàng)里選擇自定義的屬性scl。(圖15)

圖15

這時(shí)的被表達(dá)式讀取的貼圖還只是個(gè)單幀圖片,并不是貼圖序列,所以還沒(méi)動(dòng)畫效果。(圖16)

圖16

可以給noise1程序紋理的time屬性寫一個(gè)表達(dá)式,使其有動(dòng)畫效果,使粒子替換產(chǎn)生波浪般起伏效果。在Hypershade的textures貼圖標(biāo)簽里,選擇noise1節(jié)點(diǎn),在noise1的屬性編輯器里找到Time屬性,右鍵打開(kāi)表達(dá)式編輯窗口,為其寫表達(dá)式:

noise1.time=time*0.5;(圖17)

圖17

這時(shí)播放,會(huì)看到動(dòng)畫效果。也可以使用貼圖序列來(lái)控制粒子替換的縮放。筆者這里準(zhǔn)備了一個(gè)貼圖序列,現(xiàn)在就把這個(gè)貼圖序列讀取到Maya中。在Hypershade里,創(chuàng)建一個(gè)文件紋理。(圖18)

圖18

在文件紋理file1的屬性編輯器里的image Name后面的小按鈕上點(diǎn)擊,打開(kāi)紋理瀏覽窗口。(圖19)

圖19

選擇序列的第一個(gè)文件,點(diǎn)擊Open,打開(kāi)文件紋理,然后在屬性編輯器里勾選Use Image Sequence,這時(shí)會(huì)為該文件紋理自動(dòng)創(chuàng)建一個(gè)表達(dá)式。(圖20)

圖20

文件貼圖已經(jīng)就緒,現(xiàn)在只要修改粒子的表達(dá)式,使其讀取新創(chuàng)建的文件紋理file1,而不讀取程序紋理noise1就可以了。打開(kāi)粒子表達(dá)式編輯窗口,修改表達(dá)式。(圖21)

圖21

注意:colorAtPoint命令可以返回貼圖的RGBA(紅、綠、藍(lán)和亮度)四種顏色信息,如果表達(dá)o后面只有一個(gè)大寫A,就是只返回亮度信息,如果是RGBA就是會(huì)全部返回四個(gè)顏色信息,因?yàn)楣P者使用的貼圖序列的亮度信息不是很理想,所以這里就使用了貼圖的紅色信息。

修改完表達(dá)式,點(diǎn)擊Edit按鈕,這時(shí)視圖里的效果。(圖22)

圖22

在Hypershade里,創(chuàng)建一個(gè)blinn材質(zhì)球?qū)⑵涓督o替換粒子的物體pCube1,修改材質(zhì)球的屬性。(圖23)

圖23

創(chuàng)建一盞聚光燈,強(qiáng)度設(shè)置為0.8,打開(kāi)光線跟蹤。(圖24)

圖24

再創(chuàng)建一盞補(bǔ)光和背景光,燈光強(qiáng)度分別為0.2和0.3。顯示燈光效果。(圖25)

圖25

在全局渲染設(shè)置里設(shè)置產(chǎn)品級(jí)別,打開(kāi)光線跟蹤,渲染效果。(圖26)

圖26

這時(shí)觀察渲染出來(lái)的圖像會(huì)看出來(lái)是一個(gè)很朦朧的臉型,但感覺(jué)好像有點(diǎn)不舒服,因?yàn)轭^發(fā)眼睛和嘴都是是凹進(jìn)去的,而不是凸出來(lái)的,這樣的原因是因?yàn)槲覀冏x取的貼圖的紅色,二頭發(fā)的顏色是很暗的顏色,很暗的顏色里面紅色的數(shù)值很低(當(dāng)然綠色和藍(lán)色在很暗的顏色里也很低,這跟效果沒(méi)關(guān)系,不過(guò)讀者也可以嘗試讀取貼圖的綠色和藍(lán)色做為粒子替換縮放的控制數(shù)值)。如圖所示是本例中讀取的貼圖的紅色信息。(圖27)

圖27

最終的粒子替換的Z軸的縮放就是根據(jù)這張貼圖的紅色數(shù)值來(lái)決定的,這就很容易看出,頭發(fā)和眼睛的紅色值很低,那樣這些部位肯定就是凹下去了,解決的方法很多,可以用后期軟件先處理貼圖序列,也可在Maya里使用程序節(jié)點(diǎn)提取紅色信息,再翻轉(zhuǎn)它,但這里還可以修改一下表達(dá)式來(lái)達(dá)到預(yù)期的效果。先選擇粒子,在每粒子屬性卷展欄里打開(kāi)表達(dá)式編輯窗口,修改表達(dá)式。(圖28)

圖28

表達(dá)式里只是把原貼圖的紅色值用1減去,這樣原來(lái)數(shù)值低的頭發(fā)和眼睛的地方就是變?yōu)閿?shù)值高的地方。同時(shí)也適當(dāng)調(diào)整了縮放的倍數(shù),把原來(lái)乘以的5倍改為乘以7.5倍,使凸起的效果更明顯。(圖29)

圖29

效果基本完成,F(xiàn)在簡(jiǎn)單搭建一個(gè)環(huán)境。創(chuàng)建桌子、筆筒、書(shū)籍、帶燈等物體。(圖30)

圖30

為各個(gè)道具物體付材質(zhì),加貼圖。(圖31)

圖31

適當(dāng)調(diào)整燈光。最后渲染完成效果。(圖32)

圖32(點(diǎn)擊放大)

學(xué)習(xí) · 提示

  • 一定要打開(kāi)PS,跟著教程做一遍,做完的圖到這交作業(yè):提交作業(yè)
  • 建議練習(xí)時(shí),大家自己找素材,盡量不要用教程提供的素材。
  • 教程有看不懂的地方,可以到論壇發(fā)帖提問(wèn):新手求助
  • 加官方微信,隨時(shí)隨地,想學(xué)就能學(xué):ps_bbs,或掃右側(cè)二維碼!
  • 關(guān)注我們學(xué)更多,每天都有新教程:新浪微博 抖音視頻 微信小程序
- 發(fā)評(píng)論 | 交作業(yè) -
最新評(píng)論
暫無(wú)評(píng)論,交個(gè)作業(yè)支持一下吧~

關(guān)注大神微博加入>>

網(wǎng)友求助,請(qǐng)回答!