Maya基礎教程:Maya Mel基本的教學文章(2)
2024-09-04 21:21:06
供稿:網友
maya mel基礎教程
3、使用指令
包括內容有:輸入指令、使用指令行、獲得指令返回值、指令模式和指令在表達式中。
⑴、輸入指令
maya提供了一些輸入mel指令的方法;使用腳本語言編輯器(script editor)或者指令行(command line)是最常用的方法。你也可以在腳本程序文件、maya ascii(.ma)文件、工具柜圖標(shelf icons)、熱鍵以及表達式中執行指令。但是最常用的還是在腳本語言編輯器中輸入指令。
無論如何輸入指令,所有的mel指令必須用一個分號結束。以下是mel 指令的一些例子:
sphere -name roundy;
setattr roundy.translatex 7;
whatis ls;
help ls;
ls -typ nurbssurface;
⑵、使用指令行
可以使用指令行輸入mel指令。如果指令行沒有出現,在maya主菜單中選擇options > command line使指令行出現。
雖然在指令行和腳本語言編輯器中都可以輸入指令,但兩者之間有一些重要的區別:
你可以從指令行,使用數字鍵盤或字符鍵盤的enter鍵輸入指令。而腳本語言編輯器只能用數字鍵盤的enter鍵。
指令行只有一行,執行一個mel指令。為了輸入更多的mel指令,指令之間可以?quot;;"分開。
指令行僅將結果的最后一行顯示到右邊。而腳本語言編輯器顯示所有的結果。
⑶、獲得指令返回值
many mel指令返回一個值。為了抓取這個返回值,可以用單引號或者eval指令。
使用單引號獲得指令返回值
用單引號"`"將指令前后標注出來可以返回指令的輸出。隨后你可以把這個輸出賦給一個變量并在腳本語言編輯器中顯示它。
例
string $a[];
$a = `particle -p 5 0 5 -name sun`;
print($a);
第一條語句定義了一個名為$a的陣列。第二條語句執行引號中的mel指令,并把指令的輸出賦給$a。第三條指令把$a的內容顯示給腳本語言編輯器,如下:
sun
sunshape
可以對任何一個mel指令保存和顯示其結果。返回值的類型是由你使用的指令決定的。在以上例子中,粒子命令返回一個字符串陣列。所以,等式左邊的變量符號也須要是接受這個返回值的字符串陣列的類型。
使用eval指令獲得指令返回值
eval指令執行一個命令,也讓你抓取返回值。它比起單引號有一個優點,因為你可以從一個字符串建立一個指令。象單引號方式那樣,也可以把輸出賦給一個變量并顯示它。
例
string $command = "sphere";
eval($command + " -r 5");
第一條語句把字符串sphere標注給變量$command。第二條指令給字符串sphere添加 -r 5,并執行完整的指令sphere -r 5。它產生一個半徑為5個格子單位的球體。
有關eval指令的更多的信息,見掌管指令的在線文件。
⑷、指令模式
mel指令選項典型地在以下一種或多種模式中起作用:query、編輯和產生。query模式是用于找出一些事件的值;編輯模式是用于改變一些事件的值;產生模式是產生一些事件。在在線mel指令參考中,指令選項的描述包括一個q、e或c以指示query模式、編輯模式、產生模式。
⑸、指令在表達式中
可以在一個表達式中執行mel指令和序列。但是,如果你執行以下的指令你的場景會產生故障:
斷開或連接屬性
刪除或產生物體或者其他項
在一個表達式中播放你的動畫不會撤消mel指令的執行。例如,如果你的表達式執行mel指令產生了一對球體,播放這段動畫時并不刪除原來的球體。再次播放該場景時會產生另一對球體。
不過你可以通過選擇edit > undo撤消mel指令,但是如果你的場景有故障時,它將會不工作。還要注意,你可以只撤消queue尺寸的設置所允許的許多運算。為設立queue 尺寸,選擇options > general preferences。
當你從指令行執行一個指令時,狀態信息出現在腳本語言編輯器中和指令行的響應區域里。當在一個表達式中執行指令時,不顯示這個信息。 關于表達式的更多的內容,請參考using maya: expressions。