Maya的動力學
係統和表達式是非常強大的,現在我們就來利用Maya的粒子係統和表達式來
製作隨機變化下落的字母
效果。
首先,打開Text Curves選項,將Text的類型設置為Poly,
輸入全部26個
英文字母,從“a”到“z”,單擊“Create”。
圖1
打開Outline窗口,在這裏能夠找到Maya
自動創建的兩個組:一個包含所有字母的曲線,另一個包含26個網格物體。刪除包含有所有字母曲線的組,因為我們隻需要包含全部多邊形字母的組。
現在我們需要編寫一個Script來
重命名所有的多邊形字母,這是為了其後能夠更容易的重命名這些字母,當然也可以手動為它們重命名。
int $i;
string $t="abcdefghijklmnopqrstuvwxyz";
string $cmd="rename Trim_Char_";
for($i=1;$i<=26;$i++)
{string $temp;
$temp=eval("substring "+$t+" "+$i+" "+$i);
print($temp);
eval($cmd+$temp+"_1_1 "+"text"+$i);
};
在Script Editor中輸入上麵的Script並運行,此時Outline窗口應該如下圖所示。
圖2
選擇所有的多邊形字母和中心樞軸點,移動到abs(0,0,0),然後自由變換,之後將其全部隱藏。
創建一個10*20 Nurbs平麵;選擇這個平麵並加載一個粒子發射器(Particle Emitter),將發射器的類型設置為Surface;將這個平麵圍繞Z軸旋轉180度;將發射器的的速度設置到15左右,發射率設為0.2。
現在我們將為粒子形態(particleShape)節點添加一個屬性(Attribute)。
選擇particleShape1節點,打開屬性編輯器(Ettribute Editor),單擊“General”下的“Add Dynamic Attributes”部分,添加一個名為“index”的屬性並設置其類型為 “Array”。
圖3
接下來在Outline窗口中選擇所有的多邊形字母(不要選擇這個組),創建粒子替代物(Particle Instancer)。在Option窗口中鉤選“Allow All Data Types”,在“Particle Object To Instance”選項中選擇particleShape1。
圖4
現在將會看到場景中每個粒子都變成了字母“a”。我們將加載一個表達式來實現用隨機變化的字母來替代每個粒子。
選擇particleShape1並且打開表達式編輯器(Expression Editor)。添加一個執行時間表達式(Runtime Expression)。
index=rand(1,26);
播放動畫,將會發現每個粒子在每一幀都被隨機變化的字母所替代。現在已經非常接近我們想要的效果了,但還需要編寫一些表達式來控製每個粒子的運動。
選擇particleshape1並且添加另一個數組屬性(Array Attribute)為“Gate”。無需其他設置,加載執行時間表達式(Runtime Expression)到particleshape1節點下。
particleShape1.index=rand(1,26);
vector $temp=particleShape1.worldVelocity;
if ($temp.y<=rand(-10,-5))
{ particleShape1.gate=1;};
if ($temp.y>=(-1))
{particleShape1.gate=0;};
if (particleShape1.gate==1){ particleShape1.acceleration=<<0,rand(20,25),0>>;
//print("aaaa");
};
if (particleShape1.gate==0) {
particleShape1.acceleration=<<0,rand(-25,-20),0>>;
//print("bbbb");
};
最後,調整攝象機並進行渲染。渲染完成後可以用Maya Fusion或其它軟件來加載一些運動模糊/拖尾效果。下麵是最終的效果。
圖5