最近有人問我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");
}
如果我們要取出的物件要是特殊的類型的話,可以加上-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的範圍內。