麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 辦公 > Maya > 正文

Maya Mel基礎(chǔ)知識(shí)教程 了解運(yùn)用Mel

2020-10-20 19:06:06
字體:
供稿:網(wǎng)友

教程向朋友們介紹Mel的一些基礎(chǔ)知識(shí),希望是朋友們更好的了解運(yùn)用Mel,感謝大家閱讀本教程!

了解 MEL

MEL (Maya埋入式語言)為Maya提供了基礎(chǔ)。Maya界面的幾乎每一個(gè)要點(diǎn)都是在MEL指令和腳本程序上建立的。由于Maya給出了對于MEL自身的完全的訪問,你可以擴(kuò)展和定制Maya。通過MEL,你可以進(jìn)一步開發(fā)Maya使它成為你和你的項(xiàng)目的獨(dú)特而創(chuàng)新的環(huán)境。

為有效地使用Maya,你并不非得精通MEL。但是,熟悉MEL可以加深你使用Maya的專業(yè)能力。使用MEL的許多方面可以由只有很少編程經(jīng)驗(yàn)或者沒有經(jīng)驗(yàn)者所使用。喜歡MEL并不非得喜歡編程。有一些方法,它們可以使你獲得MEL的好處而不必考慮編程的細(xì)節(jié)。一旦當(dāng)你進(jìn)行了產(chǎn)生MEL腳本語言的嘗試,你會(huì)發(fā)現(xiàn)MEL可以給你提供可以想象到的最先進(jìn)的數(shù)字化畫圖的方法。

為了獲得Maya的輸出,大部分可以使用MEL來做。這里是你可以使用MEL來工作的一些例子:

·使用MEL指令脫開Maya的用戶界面,快速地產(chǎn)生熱鍵,訪問更深的要點(diǎn)。
·給屬性輸入準(zhǔn)確的值,脫開由界面強(qiáng)制引起的拘謹(jǐn)?shù)南拗啤?
·對特定的場景自定義界面,對一個(gè)特定的項(xiàng)目改變?nèi)笔≡O(shè)置。
·產(chǎn)生MEL程序和執(zhí)行用戶建模、動(dòng)畫、動(dòng)態(tài)和渲染任務(wù)的腳本程序。

如何使用本教程

本教程敘述如何學(xué)習(xí)和使用Maya埋入式語言(MEL)。如果你初次接觸MEL,本教材幫助你在使用MEL指令和腳本程序方面開始起步。一旦當(dāng)你開始開發(fā)MEL程序的時(shí)候,本教材將繼續(xù)幫助你,講解如何能夠使你獲得用MEL產(chǎn)生的更多的指令、宏、程序和用戶界面元素的輸出。

本教材假定你對Maya已經(jīng)有了基本的了解。如果你完全是新開始學(xué)習(xí)Maya,請看一下學(xué)習(xí)Maya的教材,并對在Using Maya documentation set中描述的要點(diǎn)進(jìn)行開發(fā)。 應(yīng)該熟悉Maya的在線文件(見Online documentation)。特別是應(yīng)該使你自己熟悉MEL Command Reference和DG Node Reference。

本教材的各處都有許多有關(guān)的MEL指令和程序碼的例子。要運(yùn)行例子程序,你可以把它們粘貼到Maya的腳本語言編輯器(Script Editor)里,并選擇Edit Execute就可以了。使自己進(jìn)一步地熟悉腳本語言編輯器的要點(diǎn),執(zhí)行腳本程序,并把程序保存到Maya的script目錄中的一個(gè)文件中,可以參考Maya文件和用戶指南中的適當(dāng)章節(jié)。

MEL要點(diǎn)

使用 MEL的要點(diǎn)包括了使用MEL指令和產(chǎn)生MEL程序。

本章包括以下內(nèi)容:指令、程序、Maya Gems共三個(gè)部分。本期介紹MAYA腳本語言MEL的指令。

分為以下三個(gè)部分:1、了解指令;2、MEL指令文件;3、使用指令。

1、了解指令

MEL包括了涉及使用Maya的所有方面的全范圍的指令。使用MEL指令的一些典型的例子包括快速產(chǎn)生物體、精確移動(dòng)物體和對物體進(jìn)行更有效的控制。如,可以使用下述的一個(gè)MEL指令產(chǎn)生一個(gè)半徑準(zhǔn)確的為27.5 單位的叫做 bigBoy 的一個(gè)球體:

sphere -radius 27.5 -name bigBoy;

隨后你還可以再輸入一條MEL指令將bigBoy繞Z軸旋轉(zhuǎn)90度:

rotate -r 0 0 90 bigBoy;

另一個(gè)例子,假定你在用結(jié)點(diǎn)工具產(chǎn)生一個(gè)結(jié)點(diǎn),你想把這個(gè)結(jié)點(diǎn)沿著X軸方向移動(dòng)5個(gè)單位。你可以執(zhí)行以下的MEL指令,而不需要打斷結(jié)點(diǎn)的產(chǎn)生:

move -r 5 0 0;


2、MEL指令文件

Maya的在線庫(Online Library)描述了每一條指令,提供了用法、格式、返回值和例子的信息。MEL的指令參考在線文件(Command Reference online documentation)提供了以字母順序排列的指令,也以**能方式加以組織。

3、使用指令

包括內(nèi)容有:輸入指令、使用指令行、獲得指令返回值、指令模式和指令在表達(dá)式中。

⑴、輸入指令

Maya提供了一些輸入MEL指令的方法;使用腳本語言編輯器(Script Editor)或者指令行(Command Line)是最常用的方法。你也可以在腳本程序文件、Maya ASCII(.ma)文件、工具柜圖標(biāo)(shelf icons)、熱鍵以及表達(dá)式中執(zhí)行指令。但是最常用的還是在腳本語言編輯器中輸入指令。

無論如何輸入指令,所有的MEL指令必須用一個(gè)分號(hào)結(jié)束。以下是MEL 指令的一些例子:

sphere -name roundy;
setAttr roundy.translateX 7;
whatIs ls;
help ls;
ls -typ nurbsSurface;

⑵、使用指令行

可以使用指令行輸入MEL指令。如果指令行沒有出現(xiàn),在MAYA主菜單中選擇Options Command Line使指令行出現(xiàn)。

雖然在指令行和腳本語言編輯器中都可以輸入指令,但兩者之間有一些重要的區(qū)別:

你可以從指令行,使用數(shù)字鍵盤或字符鍵盤的Enter鍵輸入指令。而腳本語言編輯器只能用數(shù)字鍵盤的Enter鍵。

指令行只有一行,執(zhí)行一個(gè)MEL指令。為了輸入更多的MEL指令,指令之間可以?quot;;"分開。

指令行僅將結(jié)果的最后一行顯示到右邊。而腳本語言編輯器顯示所有的結(jié)果。

⑶、獲得指令返回值

Many MEL指令返回一個(gè)值。為了抓取這個(gè)返回值,可以用單引號(hào)或者eval指令。

使用單引號(hào)獲得指令返回值

用單引號(hào)"`"將指令前后標(biāo)注出來可以返回指令的輸出。隨后你可以把這個(gè)輸出賦給一個(gè)變量并在腳本語言編輯器中顯示它。



string $a;
$a = `particle -p 5 0 5 -name Sun`;

print($a);

第一條語句定義了一個(gè)名為$a的陣列。第二條語句執(zhí)行引號(hào)中的MEL指令,并把指令的輸出賦給$a。第三條指令把$a的內(nèi)容顯示給腳本語言編輯器,如下:

Sun

SunShape

可以對任何一個(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");

第一條語句把字符串sphere標(biāo)注給變量$command。第二條指令給字符串sphere添加 -r 5,并執(zhí)行完整的指令sphere -r 5。它產(chǎn)生一個(gè)半徑為5個(gè)格子單位的球體。

有關(guān)eval指令的更多的信息,見掌管指令的在線文件。

⑷、指令模式

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í)行以下的指令你的場景會(huì)產(chǎn)生故障:

斷開或連接屬性
刪除或產(chǎn)生物體或者其他項(xiàng)

在一個(gè)表達(dá)式中播放你的動(dòng)畫不會(huì)撤消MEL指令的執(zhí)行。例如,如果你的表達(dá)式執(zhí)行MEL指令產(chǎn)生了一對球體,播放這段動(dòng)畫時(shí)并不刪除原來的球體。再次播放該場景時(shí)會(huì)產(chǎn)生另一對球體。

不過你可以通過選擇Edit Undo撤消MEL指令,但是如果你的場景有故障時(shí),它將會(huì)不工作。還要注意,你可以只撤消Queue尺寸的設(shè)置所允許的許多運(yùn)算。為設(shè)立Queue 尺寸,選擇Options General Preferences。

當(dāng)你從指令行執(zhí)行一個(gè)指令時(shí),狀態(tài)信息出現(xiàn)在腳本語言編輯器中和指令行的響應(yīng)區(qū)域里。當(dāng)在一個(gè)表達(dá)式中執(zhí)行指令時(shí),不顯示這個(gè)信息。 關(guān)于表達(dá)式的更多的內(nèi)容,請參考Using Maya: Expressions。

概述 MAYA腳本語言

本章包括以下內(nèi)容: 1、了解腳本語言;2、設(shè)立腳本語言環(huán)境。

1、了解腳本語言

編寫腳本語言程序是產(chǎn)生Maya埋入式語言(MEL)腳本程序的過程。一個(gè)腳本語言程序是一個(gè)MEL指令或者M(jìn)EL序列的集。通過產(chǎn)生腳本語言程序,你可以利用Maya的用戶界面使執(zhí)行任務(wù)自動(dòng)化,可以獲得"under the hood"訪問Maya所有的各個(gè)部分,還可以對界面進(jìn)行擴(kuò)展和自定義。

2、設(shè)立腳本語言環(huán)境

為了設(shè)立腳本語言環(huán)境,需要考慮以下內(nèi)容:
⑴、腳本語言文件
⑵、建立腳本語言路徑
⑶、在腳本語言程序中使用程序

⑴、腳本語言文件

一個(gè)MEL腳本文件(*.mel)是一個(gè)包含MEL指令、MEL程序或者二者都有的文件。典型地,是用一個(gè)MEL腳本文件執(zhí)行一系列的指令。如,可以寫一個(gè)腳本程序以產(chǎn)生一個(gè)墻形狀的物體,然后再給它施加一個(gè)磚的紋理。

可以用一個(gè)文字編輯器寫一個(gè)MEL腳本文件然后把它保存到磁盤的一個(gè)文件中。MEL腳本文件使用文件擴(kuò)展名 .mel。可以把腳本文件用于不同的場景中和不同的工作期間中。當(dāng)執(zhí)行一個(gè)MEL腳本文件時(shí),它并不變成為場景的一個(gè)部分,因此如果你要想重復(fù)它的作用時(shí),應(yīng)該每次都執(zhí)行該腳本程序。

⑵、建立腳本文件路徑

在缺省狀態(tài)下,Maya在你的scripts目錄中查找MEL腳本文件。
在缺省狀態(tài)下,這個(gè)目錄定義在你的login名下。例子如下:

(IRIX) ~elvis/maya/scripts

(Windows NT) C:/Aw/Elvis/maya/scripts

使你的腳本文件可以運(yùn)行的最簡單的方法是把它們放在上述路徑里。

注意你的scripts目錄缺省地包含了一些腳本文件。它們以menu_作為名字的開始,用于Maya內(nèi)部。

你可以給MAYA用于查找腳本文件的缺省路徑增加目錄。

為腳本文件路徑增加一個(gè)目錄(在IRIX中):

1--在一個(gè)IRIX shell中,設(shè)立環(huán)境變量MAYA_SCRIPT_PATH給附加目錄的路徑。

2--從這個(gè)shell啟動(dòng)MAYA。

為腳本文件路徑增加一個(gè)目錄(在Windows NT中):

1--使用Windows NT Explorer或者M(jìn)y Computer,顯示Maya NT bin目錄的內(nèi)容。

缺省時(shí)是C:/Aw/MayaX.X/bin。

2--雙擊MayaEnvironment.exe啟動(dòng)該程序。

這樣顯示出了你的home、project、plug-in、script和bitmap目錄的路徑。該路徑包括在安裝期間產(chǎn)生的缺省路徑和你后來定義的任何路徑。不能改變?nèi)笔÷窂健?

對于plug-in、script和bitmap路徑,用分號(hào)(;)分離路徑,這些項(xiàng)可以定位。

在這個(gè)窗口中禁止編輯路徑。但你可以用以下的步驟代替。

重要事項(xiàng):
如果你的計(jì)算機(jī)上安裝了Maya NT的多個(gè)版本,你會(huì)看到一個(gè)版本的路徑。版本號(hào)是在窗口的標(biāo)題欄里。為了看另外的版本的路徑,點(diǎn)擊Previous或Next。為了保存一個(gè)版本的路徑,點(diǎn)擊Save。如果你的計(jì)算機(jī)只裝了一個(gè)版本,這些鍵會(huì)變暗。

3--點(diǎn)擊Maya Script Path框旁邊的Change鍵。

注意,如果你改變了Home路徑,這就按照新的home路徑改變了project、plug-in、 script和bitmap路徑。會(huì)詢問你是否想這樣做。點(diǎn)擊Cancel可以放棄這個(gè)改變。

4--在Change Setting窗口中輸入(或者編輯)一個(gè)路徑。

一般地,可以增加缺省路徑,但是不能重置它們。當(dāng)你定義路徑時(shí)使用左斜線或者右斜線。

為了定義一個(gè)遠(yuǎn)程路徑,可以將一個(gè)隱含目錄與你的計(jì)算機(jī)上的一個(gè)驅(qū)動(dòng)器字符對應(yīng)起來。細(xì)節(jié)請看你的Windows NT文件。

如果需要輸入多個(gè)路徑,使用分號(hào)把這些路徑分離開。

如果要使用一個(gè)文件瀏覽器從別的文件系統(tǒng)查找和選擇一個(gè)路徑,點(diǎn)擊Browse。

為了返回到你原來的缺省路徑中,點(diǎn)擊Restore Default。這對于當(dāng)你定義了一個(gè)不正確的路徑或者想刪除廢棄的路徑是非常有用的。

5--點(diǎn)擊OK。

例子(IRIX)

為了給scripts路徑增加~/maya/scripts/clipFX and remote/X/scripts目錄,在啟動(dòng)MAYA之前給IRIX增加以下目錄:

setenv MAYA_SCRIPT_PATH ~/maya/scripts/clipFX:/remote/X/scripts

隨后Maya將能夠在~/maya/scripts, ~/maya/scripts/clipFX, 或者/remote/X/scripts中找到你的腳本文件。

⑶、在腳本文件中使用程序

你可以在MEL腳本文件中使用全局和局部程序。全局程序在它們的文件外邊是可見的;局部程序僅在它們的文件內(nèi)部是可見的。

如果Maya遇到一個(gè)沒有定義的指令,它會(huì)為找到一個(gè)與該指令有相同基名的MEL腳本文件搜索腳本路徑。當(dāng)它找到該文件之后,它在該文件中會(huì)聲明所有的全局MEL程序。任何具有與該指令有相同基名的全局程序會(huì)被執(zhí)行。

如,假定你在運(yùn)行一個(gè)sayWhat指令。因?yàn)闆]有這樣的一個(gè)sayWhat指令,Maya會(huì)在它的所有的script路徑中對一個(gè)叫做sayWhat或者sayWhat.mel的文件進(jìn)行搜索。如果在一個(gè)script目錄中,它找到了有以下內(nèi)容的sayWhat.mel腳本文件:

proc red5() {print("red5 standing by.../n");}
global proc sayWhat() {print("sayWhat online/n");}
global proc GoGo() {print("GoGo online/n");}

然后全局程序sayWhat和GoGo被聲明,并執(zhí)行sayWhat程序。結(jié)果是:

sayWhat online

因?yàn)镚oGo全局程序已經(jīng)聲明過了;現(xiàn)在就可以在指令行中或者在腳本語言編輯器中輸入GoGo運(yùn)行它。

使用MAYA內(nèi)部腳本文件

Maya有一些用于它的用戶界面和其他運(yùn)算細(xì)節(jié)的MEL腳本文件。你可以在Alias|Wavefront中查找這些腳本文件,學(xué)習(xí)專業(yè)腳本程序作者的這些技術(shù)。這些腳本文件是在由缺省定義的以下述目錄開始的目錄中:

(IRIX) /usr/aw/mayaX.X/scripts

(Windows NT) C:/Aw/MayaX.X/scripts

其中X.X是Maya的版本號(hào)。

注意:
不要在這個(gè)目錄中修改或者插入腳本文件;該目錄是保留Maya用戶界面工作用的腳本文件的。改變這些文件可能會(huì)影響Maya的操作。

如果你想在這個(gè)目錄中修改腳本程序以改變Maya的界面,先要把它們拷貝到你的局部scripts目錄中。如果你的局部scripts目錄中有與Maya內(nèi)部script文件目錄中相同名字的腳本文件,那你的局部scripts目錄中的文件會(huì)被運(yùn)行。

使用腳本語言編輯器

本章包括以下內(nèi)容: 1、打開腳本編輯器;2、打開一個(gè)腳本程序;3、把一個(gè)MEL腳本程序文件作為源文件 ;
4、保存腳本文字;5、執(zhí)行一個(gè)腳本程序;6、清除狀態(tài)信息;7、清除指令輸入;8、響應(yīng)一個(gè)指令;
9、顯示程序中的語句行號(hào);10、顯示堆棧跟蹤。

1、打開腳本編輯器

可以通過選擇Window General Editors Script Editor或者點(diǎn)擊Maya窗口右下部的Script Editor圖標(biāo)打開腳本編輯器。
腳本編輯器提供以下菜單選項(xiàng):

Open Script--打開腳本程序
Source Script--把一個(gè)腳本程序文件作為源文件
Save Selected--保存腳本程序
Execute--執(zhí)行腳本程序
Clear History--清除歷史
Clear Input--清除輸入
Echo All Commands--返回所有指令的返回值
Show Line Numbers--顯示行號(hào)
Show Stack Trace--顯示堆棧跟蹤

編輯命令

下表列出了在腳本編輯器中有效的鍵盤命令。(在表達(dá)式編輯器和一些輸入框中它們也是有效的。) 命令 定義 平臺(tái)
Ctrl+c Copy IRIX、Windows
Ctrl+x Cut IRIX、Windows
Ctrl+v Paste IRIX、Windows
Ctrl+k 刪除到本行末 IRIX
Ctrl+d 刪除下一個(gè)字符 IRIX
Ctrl+a 移動(dòng)光標(biāo)到行首 IRIX
Ctrl+e 移動(dòng)光標(biāo)到行末 IRIX
Ctrl+a 選擇編輯框中的所有文字 Windows


2、打開一個(gè)腳本程序

我們可以打開一個(gè)腳本程序以便檢查、執(zhí)行或找出它的問題。打開一個(gè)腳本程序時(shí)并不執(zhí)行它。
只是在腳本編輯器的輸入欄里簡單地把它顯示出來。

要執(zhí)行顯示在腳本編輯器的輸入欄里的一些或者全部腳本程序,可以用鼠標(biāo)選擇它,然后按鍵盤的數(shù)字Enter鍵。

當(dāng)你想把一些或者全部內(nèi)容拖拉到柜架上并在那里產(chǎn)生一個(gè)圖標(biāo)時(shí),打開一個(gè)腳本程序就是非常有用的。
可以點(diǎn)擊該圖標(biāo)執(zhí)行這個(gè)程序。

為了打開一個(gè)腳本文件:

1--從腳本語言編輯器中選擇File Open Script。出現(xiàn)一個(gè)文件瀏覽器。

2--選擇要打開的腳本文件。


把一個(gè)腳本程序作為源文件

把一個(gè)MEL腳本程序文件作為源文件,執(zhí)行所有的MEL指令并聲明包含在該腳本程序文件中的所有的全局過程。
如果你在一個(gè)腳本程序文件中修改了一個(gè)程序,Maya 并不把這個(gè)改變登記給該程序,直到你把它的程序文件作為源文件。
這是因?yàn)镸aya把執(zhí)行了的程序保存到了存儲(chǔ)器中。當(dāng)你把一個(gè)腳本程序文件作為源文件時(shí),Maya再次讀該腳本程序文件里的那個(gè)程序。

為了把一個(gè)腳本程序作為源文件:

1--從腳本語言編輯器中選擇File  Open Script。出現(xiàn)一個(gè)文件瀏覽器。

2--選擇要打開的腳本文件。

把一個(gè)腳本程序作為源文件之后,該文件里的所有MEL指令會(huì)執(zhí)行。該腳本程序中的所有全局過程會(huì)被聲明,但并不被執(zhí)行。
MEL指令是按照它們出現(xiàn)在文件中的順序執(zhí)行的,并且應(yīng)當(dāng)沒有錯(cuò)誤。如果產(chǎn)生了一個(gè)錯(cuò)誤,執(zhí)行會(huì)中斷并不再裝載更多的程序。

當(dāng)你把一個(gè)MEL腳本程序作為源文件之后,不聲明或者不執(zhí)行局部過程。
但是,如果你是通過在腳本編輯器或指令行里輸入而聲明了一個(gè)局部過程,該過程會(huì)被聲明為全局過程,你可以在任何時(shí)候執(zhí)行它。

執(zhí)行一個(gè)程序可以通過執(zhí)行一個(gè)MEL指令實(shí)現(xiàn)。當(dāng)你想把一個(gè)腳本程序作為源文件,并具有執(zhí)行該文件中的程序的作用時(shí),這是很有用的。
為了這樣做,要首先聲明該程序,然后聲明通過一個(gè)文件瀏覽器執(zhí)行該程序的指令。

4、保存腳本文字

使用File Save Selected指令從腳本編輯器保存腳本文字。可以從指令輸入(底部)將文字高亮化,
也可以通過腳本編輯器的狀態(tài)信息(頂部)部分。Maya 將會(huì)把高亮的文字部分保存到你說明的目錄里的一個(gè) .mel 文件中。

5、執(zhí)行一個(gè)腳本程序

當(dāng)你想執(zhí)行一個(gè)預(yù)先已經(jīng)源化了的腳本程序時(shí),可以在腳本編輯器的指令輸入欄(底部)輸入該程序的名字,然后進(jìn)行下面工作中的一種:

按 Ctrl + Enter 鍵;
或者
按數(shù)字鍵盤的 Enter 鍵;
或者
從腳本編輯器里選擇 Edit Execute。

也可以使用這些指令執(zhí)行一個(gè)在腳本編輯器里已經(jīng)打開了的腳本程序的定義。如果MEL腳本定義沒有出現(xiàn)失敗,
則該定義是從腳本編輯器的底部移到頂部。否則該定義不會(huì)移動(dòng),并且在頂部會(huì)顯示出一個(gè)錯(cuò)誤信息。

提示:
可以首先選取MEL script的一部分然后只執(zhí)行這一部分(Ctrl+Enter)。 它不會(huì)刪除其它部分。

6、清除狀態(tài)信息

要清除狀態(tài)信息(腳本編輯器的頂部),從腳本編輯器里選擇Edit Clear History。這將會(huì)刪除掉所有的狀態(tài)信息文字。
使用這個(gè)指令時(shí)應(yīng)當(dāng)小心一些,因?yàn)闆]有辦法撤消它。

7、清除指令輸入

要清除指令輸入文字(腳本編輯器的頂部), 從腳本編輯器里選擇Edit Clear Input。這將會(huì)刪除掉所有的指令輸入文字。
使用這個(gè)指令時(shí)應(yīng)當(dāng)小心一些,因?yàn)闆]有辦法撤消它。

8、響應(yīng)一個(gè)指令

當(dāng)你用Maya工作時(shí),對應(yīng)的MEL指令常常出現(xiàn)在腳本編輯器的頂部。缺省情況下,只有那最重要的指令才會(huì)顯示。

你可以在腳本編輯器里選擇Edit Echo All Commands ,虛擬地顯示與你的Maya作用相關(guān)的所有指令。
它可以幫助你學(xué)習(xí)哪些MEL指令觸發(fā)作用。

在你的Maya的作用之間并不是總有一對一的對應(yīng)關(guān)系,這些指令返回響應(yīng)到腳本編輯器里。
如果你使用一個(gè)腳本程序去打開屬性編輯器,一些MEL指令出現(xiàn)在腳本編輯器里(響應(yīng)是打開的):

buildObjectEdMenu MayaWindow|menu4|menuItem56;
editSelected;
editMenuUpdate MayaWindow|menu2;

但是,只有以下的MEL指令需要引入屬性編輯器:

editSelected;

同時(shí),對于一些作用來說,也不總是會(huì)將MEL指令的響應(yīng)返回到腳本編輯器里。如,當(dāng)你選擇了一個(gè)屬性編輯器時(shí),
腳本編輯器的頂部沒有返回任何信息。

要關(guān)閉返回信息,從腳本編輯器里再次選擇 Edit Echo All Commands。

9、顯示程序中的語句行號(hào)

如果你在執(zhí)行一個(gè)長的程序時(shí)由于錯(cuò)誤而出現(xiàn)了問題,可以打開腳本程序的行號(hào),你就可以更容易地找到錯(cuò)誤。
要顯示錯(cuò)誤指令的行號(hào),從腳本編輯器里選擇Edit Show Line Numbers。當(dāng)你打開了Show Line Numbers選項(xiàng),
Maya 在腳本編輯器狀態(tài)信息框(頂部)的旁邊顯示腳本程序的行號(hào)。

要關(guān)掉行號(hào),在腳本編輯器菜單里再次選擇Edit Show Line Numbers。

Maya將顯示行號(hào)的設(shè)置保存下來作為以后使用。如果打開了行號(hào),當(dāng)下一次你運(yùn)行Maya時(shí)它們會(huì)出現(xiàn)在腳本編輯器里。

10、顯示堆棧跟蹤

如果你用埋入的腳本程序文件執(zhí)行一個(gè)腳本程序時(shí)出現(xiàn)了問題,打開堆棧跟蹤選項(xiàng)顯示文件結(jié)構(gòu)中的腳本程序錯(cuò)誤。
要顯示一個(gè)腳本文件的堆棧跟蹤,在腳本編輯器里選擇Edit Show Stack Trace。Maya會(huì)在一個(gè)窗口里顯示堆棧跟蹤,
在腳本編輯器里顯示一個(gè)錯(cuò)誤信息。

使用腳本語言結(jié)點(diǎn)

一個(gè)腳本語言結(jié)點(diǎn)是一個(gè)包括了一個(gè) MEL腳本語言程序的結(jié)點(diǎn)。
當(dāng)該結(jié)點(diǎn)產(chǎn)生或者當(dāng)該結(jié)點(diǎn)被破壞時(shí),該程序被執(zhí)行,它取決于腳本結(jié)點(diǎn)的類型。

本章包括以下內(nèi)容:
1、了解腳本語言結(jié)點(diǎn);
2、產(chǎn)生腳本語言結(jié)點(diǎn);
3、測試腳本語言;
4、編輯腳本語言結(jié)點(diǎn);
5、設(shè)立腳本語言結(jié)點(diǎn)的執(zhí)行;
6、刪除腳本語言結(jié)點(diǎn)。

1、了解腳本語言結(jié)點(diǎn)

腳本語言結(jié)點(diǎn)是把一個(gè)MEL腳本語言程序存儲(chǔ)到一個(gè)Maya場景文件中的一種方法。
腳本語言結(jié)點(diǎn)也包含了用于產(chǎn)生用戶界面的所有MEL指令,并被用MAYA文件保存。

你可以用不同的方法執(zhí)行腳本語言程序。可以指明一個(gè)腳本程序結(jié)點(diǎn)執(zhí)行它的程序:

當(dāng)該結(jié)點(diǎn)是從一個(gè)文件中讀出的;

在渲染一楨圖像的之前或者之后;

在渲染一個(gè)動(dòng)畫的之前或者之后。


當(dāng)一個(gè)文件關(guān)閉著時(shí)使用File Open或者File New

一個(gè)腳本語言程序結(jié)點(diǎn)有三個(gè)屬性:
Before、After和Type。決定于腳本程序的類型,當(dāng)執(zhí)行該程序時(shí),說明Before和After屬性。

2、產(chǎn)生腳本語言結(jié)點(diǎn)

可以使用表達(dá)式編輯器產(chǎn)生腳本語言結(jié)點(diǎn)。

為了產(chǎn)生一個(gè)腳本語言結(jié)點(diǎn):

1--選擇Window Expression Editor。

2--在Expression Editor中選擇Select Filter By Script Node Name。

任何現(xiàn)存的Script Nodes顯示在Script Nodes表中。

3--在Expression Editor的Script window中輸入腳本程序。

4--在Script Node Name框中輸入一個(gè)名字。

5--定義你想要使腳本成為一個(gè)之前或者之后的腳本程序。

6--點(diǎn)擊Create鍵。

這產(chǎn)生腳本結(jié)點(diǎn)。現(xiàn)在你可以定義它的類型。

7--從Execute On 下拉菜單里選擇以下的一個(gè)腳本程序結(jié)點(diǎn)類型:

Demand
當(dāng)你使用scriptNode指令,隱含地需求它時(shí),運(yùn)行腳本文件(看在線指令文件的scriptNode指令的信息)。
忽略這種類型的腳本文件的之前和之后的屬性。

Open/Close
如果你已經(jīng)指定了該腳本文件作為之前的腳本文件,當(dāng)以批處理模式讀文件時(shí)腳本被執(zhí)行。如果你把它
作為之后的腳本文件,當(dāng)文件被關(guān)閉或者沒有以圖示用戶界面模式提供,或者當(dāng)該結(jié)點(diǎn)被刪除時(shí),它被執(zhí)行。

GUI Open/Close

如果你已經(jīng)指定了該腳本文件作為之前的腳本文件,當(dāng)以圖示用戶界面模式運(yùn)行MAYA,在讀文件時(shí)腳本文件
被執(zhí)行。如果你把它作為之后的腳本文件,當(dāng)文件被關(guān)閉,或者沒有以圖示用戶界面模式提供,或者當(dāng)該結(jié)
點(diǎn)被刪除時(shí),它被執(zhí)行。

UI Configuration (內(nèi)部)

之前的腳本文件包括了用戶界面設(shè)置的信息。它是由Maya或者一個(gè)plug-in為了保存面板排列和編輯狀態(tài)信息
而自動(dòng)的產(chǎn)生的。當(dāng)你打開一個(gè)文件時(shí),這個(gè)腳本結(jié)點(diǎn)執(zhí)行它的腳本文件。在執(zhí)行之后,該結(jié)點(diǎn)被刪除掉。之
后的腳本是不會(huì)運(yùn)行的。如果一個(gè)文件被提供或被輸入,這個(gè)結(jié)點(diǎn)將會(huì)不存在。

軟件渲染

如果你選派好腳本作為之前的腳本,腳本的執(zhí)行在一個(gè)動(dòng)畫之前被渲染。如果你選派好腳本作為之后的腳本,
腳本的執(zhí)行在一個(gè)動(dòng)畫之后被渲染。

軟件楨渲染

如果你選派好腳本作為之前的腳本,腳本的執(zhí)行在一個(gè)楨之前被渲染。如果你選派好腳本作為之后的腳本,腳
本的執(zhí)行在一個(gè)楨之后被渲染。

8--點(diǎn)擊Edit鍵給腳本結(jié)點(diǎn)賦類型。

9--如果你想增加另外一個(gè)腳本結(jié)點(diǎn),點(diǎn)擊New Script Node鍵。

Script窗口和Script Node Name框被清除,你可以輸入一個(gè)新的腳本結(jié)點(diǎn)。

一個(gè)腳本語言結(jié)點(diǎn)是一個(gè)包括了一個(gè) MEL腳本語言程序的結(jié)點(diǎn)。
當(dāng)該結(jié)點(diǎn)產(chǎn)生或者當(dāng)該結(jié)點(diǎn)被破壞時(shí),該程序被執(zhí)行,它取決于腳本結(jié)點(diǎn)的類型。

本章包括以下內(nèi)容:
1、了解腳本語言結(jié)點(diǎn);
2、產(chǎn)生腳本語言結(jié)點(diǎn);
3、測試腳本語言;
4、編輯腳本語言結(jié)點(diǎn);
5、設(shè)立腳本語言結(jié)點(diǎn)的執(zhí)行;
6、刪除腳本語言結(jié)點(diǎn)。

3、測試腳本程序

可以使用表達(dá)式編輯器對腳本程序進(jìn)行測試。

為測試一個(gè)腳本程序:

1--選擇Window Expression Editor。

2--在表達(dá)式編輯器中選擇Select Filter By Script Node Name。

3--在Script window中輸入腳本程序,或從Script Nodes 表中。

4--點(diǎn)擊Test Script鍵。

錯(cuò)誤顯示在腳本語言編輯器中。

4、編輯腳本語言結(jié)點(diǎn)

可以使用表達(dá)式編輯器對腳本語言結(jié)點(diǎn)進(jìn)行編輯。

為了對腳本語言的編輯定義一個(gè)編輯器:

1--選擇Window Expression Editor。

2--在表達(dá)式編輯器中選擇Select Filter By Script Node Name。

3--從編輯器下拉菜單中選擇一個(gè)編輯器。

為了編輯一個(gè)腳本語言結(jié)點(diǎn):

1--選擇Window Expression Editor。

2--在表達(dá)式編輯器中選擇Select Filter By Script Node Name。

3--選擇你想在Script Nodes list中要編輯的腳本語言結(jié)點(diǎn)。

4--在Script window中編輯該腳本語言結(jié)點(diǎn)。

5--如果你想撤消你的改變,點(diǎn)擊Reload。Maya重裝原來的腳本語言結(jié)點(diǎn)。

6--為了清理Script window,點(diǎn)擊Clear鍵。

5、設(shè)立腳本語言結(jié)點(diǎn)的執(zhí)行

為了設(shè)立腳本語言結(jié)點(diǎn)的執(zhí)行:

1--選擇File Open Scene。或選擇File Open然后在Open Scene window中點(diǎn)擊Options。

2--點(diǎn)擊復(fù)選框?qū)xecute Script Nodes打開或者關(guān)閉。

6、刪除腳本語言結(jié)點(diǎn)

可以使用表達(dá)式編輯器刪除腳本語言結(jié)點(diǎn)。

為了刪除一個(gè)腳本語言結(jié)點(diǎn):

1--S選擇Window Expression Editor。

2--在表達(dá)式編輯器中選擇Select Filter By Script Node Name。

3--選擇你想在Script Nodes list中要?jiǎng)h除的腳本語言結(jié)點(diǎn)。

4--點(diǎn)擊Delete按鍵。

定義數(shù)據(jù)

本章描述 MEL的數(shù)據(jù)類型它們之間的轉(zhuǎn)換:
1、變量;
2、常數(shù);
3、數(shù)據(jù)類型轉(zhuǎn)換;
4、限制。

1、變量

所有變量名以$開始。變量名不包括空格和特殊字符。你可以使用下劃線和數(shù)字作為變量名但開頭不能是數(shù)字。
識(shí)別大小寫,如$temp不同于$Temp。

例:

int $radical7Mark; // 有效
int HEYchief; // ERROR: 開頭缺"$"
int $ nine; // ERROR: 開頭不是"$"
int $_VAL_ID___AIT_; // 有效
int $howdyYa`ll; // ERROR: 含有無效字符
int $1Bill; // ERROR: 開頭不能是數(shù)字

有以下五種變量類型:

類型 意義 例子
int 整數(shù) (...-2, -1, 0, 1, 2...)10, -5, 和 0
float 小數(shù) 392.6, 7.0, and -2.667
string 一個(gè)或更多的字符 "What's up, chief?"
vector 三個(gè)浮點(diǎn)數(shù) %26lt;%26lt;3,?7.7,?9.1
matrix 浮點(diǎn)數(shù)陣列 %26lt;%26lt;1.1, 2, 3; 6.7, 5, 4.9

以上類型除matrix外,都可以是一個(gè)陣列。如,一個(gè)三元素的整數(shù)陣列是一個(gè)跟一個(gè)的三個(gè)整數(shù)。

聲明和標(biāo)注變量

聲明一個(gè)變量是說明變量的名字和類型;標(biāo)注一個(gè)變量是給已生命的變量一個(gè)專有的值。下例是將聲明和標(biāo)注合為一步:

int $temp = 3;
float $Temp = 222.222;
string $tEmp = "Heya kid.";
vector $teMp = %26lt;%26lt;1, 2.7, 3.2;
matrix $temP = %26lt;%26lt;4.5, 1, 0.2; -13, 9911, 0.007;

當(dāng)生命矩陣變量時(shí),必須包括二維陣列的尺寸。

下例說明對整型、浮點(diǎn)、字符串和矢量陣列型變量陣列的聲明和標(biāo)注:

int $TEmp = {100, 1000, -70, 2, 9822};
float $TeMp = {43.3, -10.7, 0, 82.5};
string $TemP = {"Lord", "Flies", "cool brown fox2."}; %26lt; p

vector $tEMp = {%26lt;%26lt;0, 0, 0, %26lt;%26lt;0.01, -2, 16};

如果一個(gè)變量被聲明但未被標(biāo)注,它的所有的值是0;字串變量則?quot; "。

float $teMP; // 賦值: 0;
string $TEMp; // 賦值: {"", "", ""};
vector $TEmP; // 賦值: {%26lt;%26lt;0, 0, 0, %26lt;%26lt;0, 0, 0};
matrix $TeMP; // 賦值: %26lt;%26lt;0, 0; 0, 0; 0, 0;

如果一個(gè)變量被聲明或者被使用而沒有定義它的類型,它被隱含聲明為將要賦值給它的那種類型。

$tEMP = 0.0; // 浮點(diǎn)數(shù)
string $TEMP; // 零元素字符串陣列
$trip = "heya Buddy"; // 字符串
$rip = {1, 2, 3, 4}; // 四元素整型陣列
$lip = %26lt;%26lt;1, 2.1; 3, 4; // 2X2 矩陣
$flixp = $TEMP; // 零元素字符串陣列

注意值0.0是一個(gè)浮點(diǎn)數(shù),而一個(gè)0值是一個(gè)整型數(shù)。這決定了在隱含聲明時(shí)是產(chǎn)生一個(gè)浮點(diǎn)數(shù)還是產(chǎn)生一個(gè)整型數(shù)。
不建議使用隱含聲明,因?yàn)樗幌笞兞康碾[含聲明那樣的清楚。

保留字

MEL的保留字可以是一個(gè)變量類型、控制邏輯或是表達(dá)一個(gè)值。以下是MEL的保留字:

break case continue default do else
false float for global if in
int matrix no off on proc
return string switch true vector while
yes

數(shù)據(jù)類型關(guān)鍵字

int float vector string matrix

布爾常數(shù)關(guān)鍵字

yes no on off true false

流動(dòng)控制關(guān)鍵字

if else for while do in break continue default switch case

其他關(guān)鍵字

global return source catch alias proc

保留字也區(qū)分大小寫。所以int是整型,Int不是。實(shí)際上alias、source、catch 也是保留字,但它們起指令作用,
因此沒有被包括在上述表內(nèi)。

字符串

字符串可用"+"運(yùn)算連接。

string $what = "Whale";
string $title = "Great" + " White " + $what;

這將使title變量的內(nèi)容為Great White Whale。

矢量

為尋址一個(gè)vector的各個(gè)成分,使用"."。

vector $LOS = %26lt;%26lt;1, 2, 7;
float $firstComponent = $LOS.x; // 賦值為 1
float $secondComponent = $LOS.y; // 賦值為 2
float $thirdComponent = $LOS.z; // 賦值為 7

標(biāo)注矢量的成分:

vector $LOCK = %26lt;%26lt;7, -4, 9;
$LOCK = %26lt;%26lt;$LOCK.x, $LOCK.y, 3; // Assigned %26lt;%26lt;7, -4, 3

但不能直接給一個(gè)成分標(biāo)數(shù)字:

$LOCK.z = 3000; // 錯(cuò)誤

但是通常當(dāng)訪問一個(gè)矢量成分時(shí),你應(yīng)該象下面例子那樣圍繞它使用括號(hào):

例子:
print $LOCK.x; // 錯(cuò)誤
print($LOCK.x);
setAttr persp.scaleX $LOS.x; // 錯(cuò)誤
setAttr persp.scaleX ($LOS.x);

陣列

你可以聲明一個(gè)int, float, string或vector類型的陣列。陣列的第一個(gè)序號(hào)為0

string $array = {"first/n", "second/n", "third/n"};
print($array); // 顯示 "first/n"
print($array); // 顯示 "second/n"
print($array); // 顯示 "third/n"

陣列尺寸可以自動(dòng)地增加。

int $scores; // 聲明為一個(gè)0元素陣列
$scores = 3; // 現(xiàn)在是151元素陣列
$scores = 5; // 現(xiàn)在是201元素陣列 但最好不要聲明過大的沒用的陣列,因?yàn)樗純?nèi)存:

int $bigBoy;
$bigBoy = 2; // 危險(xiǎn)

要除去一個(gè)陣列的所有元素可使用clear**能。要查看陣列的尺寸可使用size。

string $hats = {"blue", "red", "black"};
print("There were " + size($hats) + " hats./n");
clear($hats);
print("But now there are " + size($hats) + "./n");

以上指令的輸出是:

There were 3 hats.
But now there are 0.

矩陣

可以把一個(gè)矩陣想象為一個(gè)浮點(diǎn)陣列的陣列,或是一個(gè)浮點(diǎn)數(shù)據(jù)的二維陣列。矩陣產(chǎn)生后,它的尺寸不能改變。
企圖尋址一個(gè)矩陣的不存在的元素將會(huì)出現(xiàn)錯(cuò)誤。在產(chǎn)生矩陣時(shí)必須定義它的尺寸。

matrix $a1 = %26lt;%26lt;1; 4; // 錯(cuò)誤: 沒有說明尺寸
matrix $a2; // 錯(cuò)誤: 沒有說明尺寸
matrix $a3; // 有效: 產(chǎn)生 %26lt;%26lt;0; 0;
$a3 = 7; // 錯(cuò)誤: 元素不存在
$a3 = 9; // 有效

聲明而未標(biāo)注值的矩陣,其所有元素都為0。

matrix $a4 = %26lt;%26lt;-3.4, 6, 201, 0.7; 4, 2, 9.3, 1001;

如果矩陣表示一個(gè)二維陣列,則第一個(gè)索引表示列;地二個(gè)索引表示行:

matrix $a4column 0column 1column 2column 3
row 0-3.462010.7row 1429.31001

如果你把矩陣設(shè)想為一個(gè)身列的陣列,則第一個(gè)索引表示陣列,第二個(gè)索引該陣列里的索引:

matrix $a4index 0index 1index 2index 3
float array 0-3.462010.7float array 1429.31001

物體屬性

屬性是場景中的物體的特征或參數(shù)。在Maya中可以用許多方法建立屬性-屬性編輯器、MEL程序、工具盒工具或表達(dá)式。
你可以設(shè)立屬性去控制在工作空間中看到的虛擬的事情。
如,一個(gè)NURBS球具有屬性scaleX, scaleY, scaleZ, rotateX, 等等。

物體屬性名

物體屬性名具有如下格式:

objectName.attributeName

其中objectName是物體的名字,attributeName是該物體的屬性名。屬性名中不要使用空格或特殊字符,可以用下劃線。

產(chǎn)生一個(gè)名字為Brawl的球:

sphere -name Brawl;

可以獲取它的屬性的一個(gè)值:

float $yScale = `getAttr Brawl.scaleY`;

Brawl.scaleY是Brawl物體的scaleY屬性的全名。

路徑

如果兩個(gè)物體具有不同的父物體,它們可以有相同的名字。當(dāng)說明有相同名字的物體時(shí)必須使用路徑:

pathname|objectname

其中pathname物體的父物體。管道字符(|)用于區(qū)分路徑。

sphere -name doughnutHole;
group -name GroupA;
sphere -p 3 0 0 -name doughnutHole;

現(xiàn)在我們有兩個(gè)叫做doughnutHole的物體,但一個(gè)有父物體GroupA,另一個(gè)沒有父物體。以?*噶畈

主站蜘蛛池模板: 亚洲aⅴ在线观看 | 久久精品在线免费观看 | 91九色视频在线播放 | 亚洲欧美国产高清 | 精品亚洲福利一区二区 | 九色激情网 | 国产1区在线 | av国语| 日韩精品dvd| 欧美亚州 | 极品一级片 | 毛片在线视频观看 | 久久久久久久免费精品 | 色播视频在线播放 | 久久久久久久久亚洲精品 | 国产羞羞视频在线观看 | 国产成人高清在线观看 | 国产三级午夜理伦三级 | 国产精品视频一区二区噜噜 | 久久精品中文字幕一区 | 亚洲精品久久久久www | 久久草草亚洲蜜桃臀 | 天天草天天干天天 | 性感美女一级毛片 | 看国产毛片| 一区二区三区视频在线 | 一级黄色大片在线观看 | 北原夏美av | 男人午夜小视频 | 亚洲日本韩国精品 | 特逼视频 | 91一区二区三区久久久久国产乱 | 干色视频| 在线看一区二区三区 | 免费毛片免费看 | 欧美视屏一区二区 | 日韩在线播放第一页 | 日韩精品羞羞答答 | 成人做爽爽爽爽免费国产软件 | 欧美性猛交xxx乱大交3蜜桃 | 中文字幕在线看第二 |