2009年11月11日 星期三

MEL Script應用篇(1)

最近有人問我Maya用了這麼久,MEL到底能做些什麼,到底對動畫有什麼幫助,其實MEL算是一種Script,為的就是要用Script控制Maya做一些指令的組合,自訂程序,或做一些原來Maya並未加入的一些小工具,這些工具其實都是利用Maya裡所提供的MEL Command組合,可以自訂一些原來沒有的功能,現在我就來介紹一些Maya會常用的一些MEL吧

一般我們要處理一些物件,最重要的一點就是要能夠列出我們需要的物件,這時就要使用ls這個Command. 


如果我們要列出選擇的物件,並將結果存到一組字串陣列中 
string $objects[] = `ls -sl`; 
這時,這個$objects的字串陣列裡就儲存了ls -sl的這個Command所返回的選擇物件的列表,這時我們就可以用for迴圈處理陣列裡的每個Element

for( $obj in $objects )
{
       print ($obj+"\n");
}

這時$objects這個陣列裡的變數,就會利用$obj一個一個Print出來

如果我們要取出的物件要是特殊的類型的話,可以加上-type的參數,因為Maya的結構是以Node Base方是架構出來的,所以每一個Node都是一個獨立的型態,像Polygon Shape,在Maya裡的型態是mesh,如果選Shape後用nodeType的指令去查的話

nodeType "polygonShape1";
// Result: mesh //

所以如果要列出Maya裡所有的Nurbs Surface的話

string $objects[] =` ls -type "nurbsSurface"`;

這樣就可以把選擇物件或特殊的類別的物件存到$objects的陣列裡。
之後我們就可以編輯我們的物件

for( $obj in $objects )
{
       //產生三組亂數$randX $randY $randZ
       float $randX = rand( -10,10 );
       float $randY = rand( -10,10 );
       float $randZ = rand( -10,10 );

       move -r $randX $randY $randZ $obj;
}

這個迴圈裡做的就是將物件亂數移動到單位-10與10的範圍內。