Maya的粒子替換功能和高級的MEL命令colorAtPoint(2)
選擇新創(chuàng)建的盒子,選擇Particles->Instancer(replacement)(粒子->粒子替換)后面的小方塊,打開粒子替換選項盒,使用默認設置,點擊Create,創(chuàng)建粒子替換。(圖10)
圖10
選擇小方盒子pCube1,按Ctrl+H將其隱藏。接下來是創(chuàng)建一個2D貼圖,可以是程序紋理,也可以是文件紋理,然后用MEL命令讀取貼圖的亮度,最后用這個亮度值控制粒子替換的縮放。選擇Windows->Rendering Editors->Hypershade(窗口->渲染編輯窗口->超級濾光器窗口)。(圖11)
圖11
創(chuàng)建一個noise程序紋理,設置noise1的Depth Max(最大深度)為1,Frequence(頻率)為5,Noise Type(擾亂的類型)為Perlin Noise。(圖12)
圖12
選擇粒子,打開粒子屬性編輯窗口,在添加動態(tài)屬性卷展欄(Add Dynamic Attributes)里,點擊General按鈕,打開添加粒子動態(tài)屬性窗口,在New粒子標簽添加新屬性,名字:scl,數據類型:Vector,屬性類型:Perparticle(array)。(圖13)
圖13
點擊OK添加新屬性scl,在新屬性右邊的方框里點擊右鍵,在彈出菜單中選擇Runtime After Dynamics,打開運行時動力場之后表達式編輯窗口,編寫表達式:
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
應用新屬性scl作為粒子替換的縮放控制屬性,在粒子的屬性編輯器里,找到Instancer(GeometryReplacement)粒子替換卷展欄,在Scale的控制選項里選擇自定義的屬性scl。(圖15)
圖15
這時的被表達式讀取的貼圖還只是個單幀圖片,并不是貼圖序列,所以還沒動畫效果。(圖16)
圖16
可以給noise1程序紋理的time屬性寫一個表達式,使其有動畫效果,使粒子替換產生波浪般起伏效果。在Hypershade的textures貼圖標簽里,選擇noise1節(jié)點,在noise1的屬性編輯器里找到Time屬性,右鍵打開表達式編輯窗口,為其寫表達式:
noise1.time=time*0.5;(圖17)
圖17
這時播放,會看到動畫效果。也可以使用貼圖序列來控制粒子替換的縮放。筆者這里準備了一個貼圖序列,現在就把這個貼圖序列讀取到Maya中。在Hypershade里,創(chuàng)建一個文件紋理。(圖18)
圖18