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