maya腳本教學(xué)教材_第1頁
maya腳本教學(xué)教材_第2頁
maya腳本教學(xué)教材_第3頁
maya腳本教學(xué)教材_第4頁
maya腳本教學(xué)教材_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

maya月卻本

精品文檔

MayaMel腳本基礎(chǔ)教程

MEL(Maya埋入式語言)為Maya提供了基礎(chǔ)。Maya界面的幾乎每一個要點都

是在MEL指令和腳本程序上建立的。由于Maya給出了對于MEL自身的完全

的訪問,你可以擴展和定制Maya。通過MEL,你可以進一步開發(fā)Maya使它

成為你和你的項目的獨特而創(chuàng)新的環(huán)境。

為有效地使用Maya,你并不非得精通MEL。但是,熟悉MEL可以加深你使用

Maya的專業(yè)能力。使用MEL的許多方面可以由只有很少編程經(jīng)驗或者沒有經(jīng)

驗者所使用。喜歡MEL并不非得喜歡編程。有一些方法,它們可以使你獲得

MEL的好處而不必考慮編程的細節(jié)。一旦當你進行了產(chǎn)生MEL腳本語言的嘗

試,你會發(fā)現(xiàn)MEL可以給你提供可以想象到的最先進的數(shù)字化畫圖的方法。

為了獲得Maya的輸出,大部分可以使用MEL來做。這里是你可以使用MEL

來工作的一些例子:

?使用MEL指令脫開Maya的用戶界面,快速地產(chǎn)生熱鍵,訪問更深的要點。

?給屬性輸入準確的值,脫開由界面強制引起的拘謹?shù)南拗啤?/p>

?對特定的場景自定義界面,對一個特定的項目改變?nèi)笔≡O(shè)置。

?產(chǎn)生MEL程序和執(zhí)行用戶建模、動畫、動態(tài)和渲染任務(wù)的腳本程序。

如何使用本教程

本教程敘述如何學(xué)習(xí)和使用Maya埋入式語言(MEL)。如果你初次接觸MEL,

本教材幫助你在使用MEL指令和腳本程序方面開始起步。一旦當你開始開發(fā)

MEL程序的時候,本教材將繼續(xù)幫助你,講解如何能夠使你獲得用MEL產(chǎn)生

的更多的指令、宏、程序和用戶界面元素的輸出。

本教材假定你對Maya已經(jīng)有了基本的了解。如果你完全是新開始學(xué)習(xí)Maya,

請看一下學(xué)習(xí)Maya的教材,并對在UsingMayadocumentationset中描述的要

點進行開發(fā)。應(yīng)該熟悉Maya的在線文件(見Onlinedocumentation)。特別是應(yīng)

該使你自己熟悉MELCommandReference和DGNodeReferenceo

本教材的各處都有許多有關(guān)的MEL指令和程序碼的例子。要運行例子程序,你

可以把它們粘貼至1JMaya的腳本語言編輯器(ScriptEditor)里,并選擇Edit>

Execute就可以了。使自己進一步地熟悉腳本語言編輯器的要點,執(zhí)行腳本程

序,并把程序保存到Maya的script目錄中的一個文件中,可以參考Maya文件

和用戶指南中的適當章節(jié)。

MEL要點

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

本章包括以下內(nèi)容:指令、程序、MayaGems共三個部分。本期介紹MAYA腳

本語言MEL的指令。

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

收集于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系管理員刪除

精品文檔

1、了解指令

MEL包括了涉及使用Maya的所有方面的全范圍的指令。使用MEL指令的一些

典型的例子包括快速產(chǎn)生物體、精確移動物體和對物體進行更有效的控制。

如,可以使用下述的一個MEL指令產(chǎn)生一個半徑準確的為27.5單位的叫做

bigBoy的一個球體:

sphere-radius27.5-namebigBoy;

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

rotate-r0090bigBoy;

另一個例子,假定你在用結(jié)點工具產(chǎn)生一個結(jié)點,你想把這個結(jié)點沿著X軸方

向移動5個單位。你可以執(zhí)行以下的MEL指令,而不需要打斷結(jié)點的產(chǎn)生:

move-r500;

2、MEL指令文件

Maya的在線庫(OnlineLibrary)描述了每一條指令,提供了用法、格式、返回值

和例子的信息。MEL的指令參考在線文件(CommandReferenceonline

documentation)提供了以字母順序排列的指令,也以**能方式加以組織。

3、使用指令

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

達式中。

⑴、輸入指令

Maya提供了一些輸入MEL指令的方法;使用腳本語言編輯器(ScriptEditor)或

者指令行(CommandLine)是最常用的方法。你也可以在腳本程序文件、Maya

ASCIRma;)文件、工具柜圖標(shelficons)、熱鍵以及表達式中執(zhí)行指令。但是

最常用的還是在腳本語言編輯器中輸入指令。

無論如何輸入指令,所有的MEL指令必須用一個分號結(jié)束。以下是MEL指令

的一些例子:

sphere-nameroundy;

setAttrroundy.translateX7;

whatlsIs;

helpIs;

Is-typnurbsSurface;

收集于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系管理員刪除

精品文檔

⑵、使用指令行

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

擇Options>CommandLine使指令行出現(xiàn)。

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

區(qū)別:

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

編輯器只能用數(shù)字鍵盤的Enter鍵。

指令行只有一行,執(zhí)行一個MEL指令。為了輸入更多的MEL指令,指令之間

可以?quot;;"分開。

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

⑶、獲得指令返回值

ManyMEL指令返回一個值。為了抓取這個返回值,可以用單引號或者eval指

令。

使用單引號獲得指令返回值

用單引號將指令前后標注出來可以返回指令的輸出。隨后你可以把這個輸出

賦給一個變量并在腳本語言編輯器中顯示它。

string$a[];

$a='particle-p505-nameSun';

print($a);

第一條語句定義了一個名為$2的陣列。第二條語句執(zhí)行引號中的MEL指令,

并把指令的輸出賦給$a。第三條指令把$a的內(nèi)容顯示給腳本語言編輯器,如

下:

Sun

SunShape

可以對任何一個MEL指令保存和顯示其結(jié)果。返回值的類型是由你使用的指令

決定的。在以上例子中,粒子命令返回一個字符串陣列。所以,等式左邊的變

收集于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系管理員刪除

精品文檔

量符號也須要是接受這個返回值的字符串陣列的類型。

使用eval指令獲得指令返回值

eval指令執(zhí)行一個命令,也讓你抓取返回值。它比起單引號有一個優(yōu)點,因為

你可以從一個字符串建立一個指令。象單引號方式那樣,也可以把輸出賦給一

個變量并顯示它。

string$command="sphere";

eval($command+"-r5");

第一條語句把字符串sphere標注給變量$command。第二條指令給字符串sphere

添加-r5,并執(zhí)行完整的指令sphere-r5。它產(chǎn)生一個半徑為5個格子單位的球

體。

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

⑷、指令模式

MEL指令選項典型地在以下一種或多種模式中起作用:query、編輯和產(chǎn)生。

Query模式是用于找出一些事件的值;編輯模式是用于改變一些事件的值;產(chǎn)

生模式是產(chǎn)生一些事件。在在線MEL指令參考中,指令選項的描述包括一個

Q、E或C以指示query模式、編輯模式、產(chǎn)生模式。

⑸、指令在表達式中

可以在一個表達式中執(zhí)行MEL指令和序列。但是,如果你執(zhí)行以下的指令你的

場景會產(chǎn)生故障:

斷開或連接屬性

刪除或產(chǎn)生物體或者其他項

在一個表達式中播放你的動畫不會撤消MEL指令的執(zhí)行。例如,如果你的表達

式執(zhí)行MEL指令產(chǎn)生了一對球體,播放這段動畫時并不刪除原來的球體。再次

播放該場景時會產(chǎn)生另一對球體。

不過你可以通過選擇Edit〉Undo撤消MEL指令,但是如果你的場景有故障

時,它將會不工作。還要注意,你可以只撤消Queue尺寸的設(shè)置所允許的許多

運算。為設(shè)立Queue尺寸,選擇Options>GeneralPreferences。

當你從指令行執(zhí)行一個指令時,狀態(tài)信息出現(xiàn)在腳本語言編輯器中和指令行的

收集于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系管理員刪除

精品文檔

響應(yīng)區(qū)域里。當在一個表達式中執(zhí)行指令時,不顯示這個信息。關(guān)于表達式的

更多的內(nèi)容,請參考UsingMaya:Expressionso

概述MAYA腳本語言

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

1、了解腳本語言

編寫腳本語言程序是產(chǎn)生Maya埋入式語言(MEL)腳本程序的過程。一個腳本語

言程序是一個MEL指令或者MEL序列的集。通過產(chǎn)生腳本語言程序,你可以

利用Maya的用戶界面使執(zhí)行任務(wù)自動化,可以獲得"underthehood"訪問Maya

所有的各個部分,還可以對界面進行擴展和自定義。

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

為了設(shè)立腳本語言環(huán)境,需要考慮以下內(nèi)容:

⑴、腳本語言文件

⑵、建立腳本語言路徑

⑶、在腳本語言程序中使用程序

⑴、腳本語言文件

一個MEL腳本文件(*.mel)是一個包含MEL指令、MEL程序或者二者都有的文

件。典型地,是用一個MEL腳本文件執(zhí)行一系列的指令。如,可以寫一個腳本

程序以產(chǎn)生一個墻形狀的物體,然后再給它施加一個磚的紋理。

可以用一個文字編輯器寫一個MEL腳本文件然后把它保存到磁盤的一個文件

中。MEL腳本文件使用文件擴展名.melo可以把腳本文件用于不同的場景中和

不同的工作期間中。當執(zhí)行一個MEL腳本文件時,它并不變成為場景的一個部

分,因此如果你要想重復(fù)它的作用時,應(yīng)該每次都執(zhí)行該腳本程序。

⑵、建立腳本文件路徑

在缺省狀態(tài)下,Maya在你的scripts目錄中查找MEL腳本文件。

在缺省狀態(tài)下,這個目錄定義在你的login名下。例子如下:

(IRIX)-elvis/maya/scripts

(WindowsNT)C:\Aw\Elvis\maya\scripts

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

注意你的scripts目錄缺省地包含了一些腳本文件。它們以menu_作為名字的開

收集于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系管理員刪除

精品文檔

始,用于Maya內(nèi)部。

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

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

1一在一個IRIXshell中,設(shè)立環(huán)境變量MAYA_SCRIPT_PATH給附加目錄的路

徑。

2-從這個shell啟動MAYAo

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

1--使用WindowsNTExplorer或者MyComputer,顯示MayaNTbin目錄的內(nèi)

容。

缺省時是C:\Aw\MayaX.X\bin0

2--雙擊MayaEnvironment.exe啟動該程序。

這樣顯示出了你的home、project、plug-inscript和bitmap目錄的路徑。該路

徑包括在安裝期間產(chǎn)生的缺省路徑和你后來定義的任何路徑。不能改變?nèi)笔÷?/p>

徑。

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

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

重要事項:

如果你的計算機上安裝了MayaNT的多個版本,你會看到一個版本的路徑。版

本號是在窗口的標題欄里。為了看另外的版本的路徑,點擊Previous或Next。

為了保存一個版本的路徑,點擊Save。如果你的計算機只裝了一個版本,這些

鍵會變暗。

3--點擊MayaScriptPath框旁邊的Change鍵。

注意,如果你改變了Home路徑,這就按照新的home路徑改變了project、

plug-in、script和bitmap路徑。會詢問你是否想這樣做。點擊Cancel可以放棄

這個改變。

4--在ChangeSetting窗口中輸入(或者編輯)一個路徑。

一般地,可以增加缺省路徑,但是不能重置它們。當你定義路徑時使用左斜線

或者右斜線。

收集于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系管理員刪除

精品文檔

為了定義一個遠程路徑,可以將一個隱含目錄與你的計算機上的一個驅(qū)動器字

符對應(yīng)起來。細節(jié)請看你的WindowsNT文件。

如果需要輸入多個路徑,使用分號把這些路徑分離開。

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

Browseo

為了返回到你原來的缺省路徑中,點擊RestoreDefault。這對于當你定義了一個

不正確的路徑或者想刪除廢棄的路徑是非常有用的。

5—點擊0K。

例子(IRIX)

為了給scripts路徑增加~/nlaya/scripts/clipFXandremote/X/scripts目錄,在啟動

MAYA之前給IRIX增加以下目錄:

setenvMAYA_SCRIPT_PATH-/maya/scripts/clipFX:/remote/X/scripts

隨后Maya將能夠在?/maya/scripts,-/maya/scripts/clipFX,或者/remote/X/scripts

中找到你的腳本文件。

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

你可以在MEL腳本文件中使用全局和局部程序。全局程序在它們的文件外邊是

可見的;局部程序僅在它們的文件內(nèi)部是可見的。

如果Maya遇到一個沒有定義的指令,它會為找到一個與該指令有相同基名的

MEL腳本文件搜索腳本路徑。當它找到該文件之后,它在該文件中會聲明所有

的全局MEL程序。任何具有與該指令有相同基名的全局程序會被執(zhí)行。

如,假定你在運行一個sayWhat指令。因為沒有這樣的一個sayWhat指令,

Maya會在它的所有的script路徑中對一個叫做sayWhat或者sayWhat.mel的文

件進行搜索。如果在一個script目錄中,它找到了有以下內(nèi)容而sayWhat.mel腳

本文件:

procred5(){print("red5standingby..An");}

globalprocsayWhat(){print(nsayWhatonline\n");}

globalprocGoGo(){print("GoGoonline\n");}

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

收集于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系管理員刪除

精品文檔

sayWhatonline

因為GoGo全局程序已經(jīng)聲明過了;現(xiàn)在就可以在指令行中或者在腳本語言編

輯器中輸入GoGo運行它。

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

Maya有一些用于它的用戶界面和其他運算細節(jié)的MEL腳本文件。你可以在

Alias|Wavefront中查找這些腳本文件,學(xué)習(xí)專業(yè)腳本程序作者的這些技術(shù)。這

些腳本文件是在由缺省定義的以下述目錄開始的目錄中:

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

(WindowsNT)C:\Aw\MayaX.X\scripts

其中X.X是Maya的版本號。

注意:

不要在這個目錄中修改或者插入腳本文件;該目錄是保留Maya用戶界面工作

用的腳本文件的。改變這些文件可能會影響Maya的操作。

如果你想在這個目錄中修改腳本程序以改變Maya的界面,先要把它們拷貝到

你的局部scripts目錄中。如果你的局部scripts目錄中有與Maya內(nèi)部script文件

目錄中相同名字的腳本文件,那你的局部scripts目錄中的文件會被運行。

使用腳本語言編輯器

本章包括以下內(nèi)容:1、打開腳本編輯器;2、打開一個腳本程序;3、把一個

MEL腳本程序文件作為源文件;

4、保存腳本文字;5、執(zhí)行一個腳本程序;6、清除狀態(tài)信息;7、清除指令輸

入;8、響應(yīng)一個指令;

9、顯示程序中的語句行號;10、顯示堆棧跟蹤。

1、打開腳本編輯器

可以通過選擇Window>GeneralEditors>ScriptEditor或者點擊Maya窗口右下

部的ScriptEditor圖標打開腳本編輯器。

腳本編輯器提供以下菜單選項:

OpenScript--打開腳本程序

SourceScript-把一個腳本程序文件作為源文件

SaveSelected--保存腳本程序

Execute-執(zhí)行腳本程序

ClearHistory--清除歷史

ClearInput--清除輸入

收集于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系管理員刪除

精品文檔

EchoAllCommands--返回所有指令的返回值

ShowLineNumbers一顯示彳亍號

ShowStackTrace--顯示堆棧跟蹤

編輯命令

下表列出了在腳本編輯器中有效的鍵盤命令。(在表達式編輯器和一些輸入框中

它們也是有效的。)命令定義平臺

Ctrl+cCopyIRIX、Windows

Ctrl+xCutIRIX、Windows

Ctrl+vPasteIRIX、Windows

Ctrl+k刪除到本行末IRIX

Ctrl+d刪除下一個字符IRIX

Ctrl+a移動光標到行首IRIX

Ctrl+e移動光標到行末IRIX

Ctrl+a選擇編輯框中的所有文字Windows

2、打開一個腳本程序

我們可以打開一個腳本程序以便檢查、執(zhí)行或找出它的問題。打開一個腳本程

序時并不執(zhí)行它。

只是在腳本編輯器的輸入欄里簡單地把它顯示出來。

要執(zhí)行顯示在腳本編輯器的輸入欄里的一些或者全部腳本程序,可以用鼠標選

擇它,然后按鍵盤的數(shù)字Enter鍵。

當你想把一些或者全部內(nèi)容拖拉到柜架上并在那里產(chǎn)生一個圖標時,打開一個

腳本程序就是非常有用的。

可以點擊該圖標執(zhí)行這個程序。

為了打開一個腳本文件:

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

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

把一個腳本程序作為源文件

把一個MEL腳本程序文件作為源文件,執(zhí)行所有的MEL指令并聲明包含在該

腳本程序文件中的所有的全局過程。

如果你在一個腳本程序文件中修改了一個程序,Maya并不把這個改變登記給該

程序,直到你把它的程序文件作為源文件。

收集于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系管理員刪除

精品文檔

這是因為Maya把執(zhí)行了的程序保存到了存儲器中。當你把一個腳本程序文件

作為源文件時,Maya再次讀該腳本程序文件里的那個程序。

為了把一個腳本程序作為源文件:

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

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

把一個腳本程序作為源文件之后,該文件里的所有MEL指令會執(zhí)行。該腳本程

序中的所有全局過程會被聲明,但并不被執(zhí)行。

MEL指令是按照它們出現(xiàn)在文件中的順序執(zhí)行的,并且應(yīng)當沒有錯誤。如果產(chǎn)

生了一個錯誤,執(zhí)行會中斷并不再裝載更多的程序。

當你把一個MEL腳本程序作為源文件之后,不聲明或者不執(zhí)行局部過程。

但是,如果你是通過在腳本編輯器或指令行里輸入而聲明了一個局部過程,該

過程會被聲明為全局過程,你可以在任何時候執(zhí)行它。

執(zhí)行一個程序可以通過執(zhí)行一個MEL指令實現(xiàn)。當你想把一個腳本程序作為源

文件,并具有執(zhí)行該文件中的程序的作用時,這是很有用的。

為了這樣做,要首先聲明該程序,然后聲明通過一個文件瀏覽器執(zhí)行該程序的

指令。

4、保存腳本文字

使用File>SaveSelected指令從腳本編輯器保存腳本文字??梢詮闹噶钶斎耄ǖ?/p>

部)將文字高亮化,

也可以通過腳本編輯器的狀態(tài)信息(頂部)部分。Maya將會把高亮的文字部分保

存到你說明的目錄里的一個.mel文件中。

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

當你想執(zhí)行一個預(yù)先已經(jīng)源化了的腳本程序時,可以在腳本編輯器的指令輸入

欄(底部)輸入該程序的名字,然后進行下面工作中的一種:

按Ctrl+Enter鍵;

或者

按數(shù)字鍵盤的Enter鍵;

或者

從腳本編輯器里選擇Edit>Executeo

也可以使用這些指令執(zhí)行一個在腳本編輯器里已經(jīng)打開了的腳本程序的定義。

如果MEL腳本定義沒有出現(xiàn)失敗,

則該定義是從腳本編輯器的底部移到頂部。否則該定義不會移動,并且在頂部

收集于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系管理員刪除

精品文檔

會顯示出一個錯誤信息。

提示:

可以首先選取MELscript的一部分然后只執(zhí)行這一部分(Ctrl+Enter)。它不會刪

除其它部分。

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

要清除狀態(tài)信息(腳本編輯器的頂部),從腳本編輯器里選擇Edit>Clear

Historyo這將會刪除掉所有的狀態(tài)信息文字。

使用這個指令時應(yīng)當小心一些,因為沒有辦法撤消它。

7、清除指令輸入

要清除指令輸入文字(腳本編輯器的頂部),從腳本編輯器里選擇Edit>Clear

Inputo這將會刪除掉所有的指令輸入文字。

使用這個指令時應(yīng)當小心一些,因為沒有辦法撤消它。

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

當你用Maya工作時,對應(yīng)的MEL指令常常出現(xiàn)在腳本編輯器的頂部。缺省情

況下,只有那最重要的指令才會顯示。

你可以在腳本編輯器里選擇Edit>EchoAllCommands,虛擬地顯示與你的

Maya作用相關(guān)的所有指令。

它可以幫助你學(xué)習(xí)哪些MEL指令觸發(fā)作用。

在你的Maya的作用之間并不是總有一對一的對應(yīng)關(guān)系,這些指令返回響應(yīng)到

腳本編輯器里。

如果你使用一個腳本程序去打開屬性編輯器,一些MEL指令出現(xiàn)在腳本編輯器

里(響應(yīng)是打開的):

buildObjectEdMenuMayaWindowlmenu4|menultem56;

editSelected;

editMenuUpdateMayaWindow|menu2;

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

editSelected;

同時,對于一些作用來說,也不總是會將MEL指令的響應(yīng)返回到腳本編輯器

收集于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系管理員刪除

精品文檔

里。如,當你選擇了一個屬性編輯器時,

腳本編輯器的頂部沒有返回任何信息。

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

9、顯示程序中的語句行號

如果你在執(zhí)行一個長的程序時由于錯誤而出現(xiàn)了問題,可以打開腳本程序的行

號,你就可以更容易地找到錯誤。

要顯示錯誤指令的行號,從腳本編輯器里選擇Edit>ShowLineNumbers0當你

打開了ShowLineNumbers選項,

Maya在腳本編輯器狀態(tài)信息框(頂部)的旁邊顯示腳本程序的行號。

要關(guān)掉行號,在腳本編輯器菜單里再次選擇Edit>ShowLineNumberso

Maya將顯示行號的設(shè)置保存下來作為以后使用。如果打開了行號,當下一次你

運行Maya時它們會出現(xiàn)在腳本編輯器里。

10、顯示堆棧跟蹤

如果你用埋入的腳本程序文件執(zhí)行一個腳本程序時出現(xiàn)了問題,打開堆棧跟蹤

選項顯示文件結(jié)構(gòu)中的腳本程序錯誤。

要顯示一個腳本文件的堆棧跟蹤,在腳本編輯器里選擇Edit>ShowStack

TraceoMaya會在一個窗口里顯示堆棧跟蹤,

在腳本編輯器里顯示一個錯誤信息。

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

一個腳本語言結(jié)點是一個包括了一個MEL腳本語言程序的結(jié)點。

當該結(jié)點產(chǎn)生或者當該結(jié)點被破壞時,該程序被執(zhí)行,它取決于腳本結(jié)點的類

型。

本章包括以下內(nèi)容:

1、了解腳本語言結(jié)點;

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

3、測試腳本語言;

4、編輯腳本語言結(jié)點;

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

6、刪除腳本語言結(jié)點。

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

腳本語言結(jié)點是把一個MEL腳本語言程序存儲到一個Maya場景文件中的一種

方法。

收集于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系管理員刪除

精品文檔

腳本語言結(jié)點也包含了用于產(chǎn)生用戶界面的所有MEL指令,并被用MAYA文

件保存。

你可以用不同的方法執(zhí)行腳本語言程序??梢灾该饕粋€腳本程序結(jié)點執(zhí)行它的

程序:

當該結(jié)點是從一個文件中讀出的;

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

在渲染一個動畫的之前或者之后。

當一個文件關(guān)閉著時使用File>Open或者File>New

一個腳本語言程序結(jié)點有三個屬性:

Before、After和Type。決定于腳本程序的類型,當執(zhí)行該程序時,說明Before

和After屬性。

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

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

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

1--選擇Window>ExpressionEditor0

2--在ExpressionEditor中選擇SelectFilter>ByScriptNodeName。

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

3--在ExpressionEditor的Scriptwindow中輸入腳本程序。

4--在ScriptNodeName框中輸入一個名字。

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

6--點擊Create鍵。

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

7--從ExecuteOn下拉菜單里選擇以下的一個腳本程序結(jié)點類型:

收集于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系管理員刪除

精品文檔

Demand

當你使用scriptNode指令,隱含地需求它時,運行腳本文件(看在線指令文件的

scriptNode指令的信息)。

忽略這種類型的腳本文件的之前和之后的屬性。

Open/Close

如果你已經(jīng)指定了該腳本文件作為之前的腳本文件,當以批處理模式讀文件時

腳本被執(zhí)行。如果你把它

作為之后的腳本文件,當文件被關(guān)閉或者沒有以圖示用戶界面模式提供,或者

當該結(jié)點被刪除時,它被執(zhí)行。

GUIOpen/Close

如果你已經(jīng)指定了該腳本文件作為之前的腳本文件,當以圖示用戶界面模式運

行MAYA,在讀文件時腳本文件

被執(zhí)行。如果你把它作為之后的腳本文件,當文件被關(guān)閉,或者沒有以圖示用

戶界面模式提供,或者當該結(jié)

點被刪除時,它被執(zhí)行。

UIConfiguration(內(nèi)部)

之前的腳本文件包括了用戶界面設(shè)置的信息。它是由Maya或者一個plug-in為

了保存面板排列和編輯狀態(tài)信息

而自動的產(chǎn)生的。當你打開一個文件時,這個腳本結(jié)點執(zhí)行它的腳本文件。在

執(zhí)行之后,該結(jié)點被刪除掉。之

后的腳本是不會運行的。如果一個文件被提供或被輸入,這個結(jié)點將會不存

在。

軟件渲染

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

你選派好腳本作為之后的腳本,

腳本的執(zhí)行在一個動畫之后被渲染。

軟件楨渲染

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

選派好腳本作為之后的腳本,腳

本的執(zhí)行在一個楨之后被渲染。

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

9--如果你想增加另外一個腳本結(jié)點,點擊NewScriptNode鍵。

收集于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系管理員刪除

精品文檔

Script窗口和ScriptNodeName框被清除,你可以輸入一個新的腳本結(jié)點。

一個腳本語言結(jié)點是一個包括了一個MEL腳本語言程序的結(jié)點。

當該結(jié)點產(chǎn)生或者當該結(jié)點被破壞時,該程序被執(zhí)行,它取決于腳本結(jié)點的類

型。

本章包括以下內(nèi)容:

1、了解腳本語言結(jié)點;

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

3、測試腳本語言;

4、編輯腳本語言結(jié)點;

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

6、刪除腳本語言結(jié)點。

3、測試腳本程序

可以使用表達式編輯器對腳本程序進行測試。

為測試一個腳本程序:

1--選擇Window>ExpressionEditor0

2--在表達式編輯器中選擇SelectFilter>ByScriptNodeName。

3--在Scriptwindow中輸入腳本程序,或從ScriptNodes表中。

4--點擊TestScript鍵。

錯誤顯示在腳本語言編輯器中。

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

可以使用表達式編輯器對腳本語言結(jié)點進行編輯。

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

1--選擇Window>ExpressionEditor0

2--在表達式編輯器中選擇SelectFilter>ByScriptNodeName。

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

收集于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系管理員刪除

精品文檔

為了編輯一個腳本語言結(jié)點:

1--選擇Window>ExpressionEditor0

2--在表達式編輯器中選擇SelectFilter>ByScriptNodeName。

3-選擇你想在ScriptNodeslist中要編輯的腳本語言結(jié)點。

4--在Scriptwindow中編輯該腳本語言結(jié)點。

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

6--為了清理Scriptwindow,點擊Clear鍵。

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

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

1--選擇File>OpenScene0或選擇File>Open然后在OpenScenewindow中點

擊Optionso

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

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

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

為了刪除一個腳本語言結(jié)點:

1—S選擇Window>ExpressionEditoro

2--在表達式編輯器中選擇SelectFilter>ByScriptNodeName。

3--選擇你想在ScriptNodeslist中要刪除的腳本語言結(jié)點。

4一點擊Delete按鍵。

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

本章描述MEL的數(shù)據(jù)類型它們之間的轉(zhuǎn)換:

1、變量;

2、常數(shù);

3、數(shù)據(jù)類型轉(zhuǎn)換;

收集于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系管理員刪除

精品文檔

4、限制。

1、變量

所有變量名以$開始。變量名不包括空格和特殊字符。你可以使用下劃線和數(shù)字

作為變量名但開頭不能是數(shù)字。

識別大小寫,如$161叩不同于$Temp。

例:

int$radical7Mark;〃有效

intHEYchief;//ERROR:開頭缺"$"

int$nine;//ERROR:開頭不是"$"

int$_VAL_ID_AIT_;//有效

intShowdyYall;//ERROR:含有無效字符

int$lBill;//ERROR:開頭不能是數(shù)字

有以下五種變量類型:

類型意義例子

int整數(shù)(...-2,-1,0,1,2...)10,-5,和0

float小數(shù)392.6,7.0,and-2.667

string一個或更多的字符"What'sup,chief?"

vector三個浮點數(shù)?3,?7.7,?9.1?

matrix浮點數(shù)陣列<<L1,2,3;6.7,5,4.9?

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

跟一個的三個整數(shù)。

聲明和標注變量

聲明一個變量是說明變量的名字和類型;標注一個變量是給已生命的變量一個

專有的值。下例是將聲明和標注合為一步:

int$temp=3;

float$Temp=222.222;

string$tEmp="Heyakid.";

vector$teMp=?1,2.7,3.2?;

matrix$temP[2][3]=?4.5,1,0.2;-13,9911,0.007?;

當生命矩陣變量時,必須包括二維陣列的尺寸。

下例說明對整型、浮點、字符串和矢量陣列型變量陣列的聲明和標注:

收集于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系管理員刪除

精品文檔

int$TEmp[5]={100,1000,-70,2,9822);

float$TeMp[4]={43.3,-10.7,0,82.5};

string$TemP[3]={"Lord","Flies","coolbrownfox2."};<p>

vector$tEMp[2]={?0,0,0?,?0.01,-2,16?};

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

float$teMP;〃賦值:0;

string$TEMp[3];〃賦值:

vector$TEmP[2];〃賦值:{?0,0,0?,?0,0,0?};

matrix$TeMP[3][2];//賦值:?0,0;0,0;0,0?;

如果一個變量被聲明或者被使用而沒有定義它的類型,它被隱含聲明為將要賦

值給它的那種類型。

$tEMP=0.0;//浮點數(shù)

string$TEMP[];//零元素字符串陣列

Strip="heyaBuddy";//字符串

$rip={1,2,3,4);//四元素整型陣列

$lip=?1,2.1;3,4?;//2X2矩陣

$flixp=$TEMP;//零元素字符串陣列

注意值0.0是一個浮點數(shù),而一個0值是一個整型數(shù)。這決定了在隱含聲明時

是產(chǎn)生一個浮點數(shù)還是產(chǎn)生一個整型數(shù)。

不建議使用隱含聲明,因為它不象變量的隱含聲明那樣的清楚。

保留字

MEL的保留字可以是一個變量類型、控制邏輯或是表達一個值。以下是MEL

的保留字:

breakcasecontinuedefaultdoelse

falsefloatforglobalifin

intmatrixnooffonproc

returnstringswitchtruevectorwhile

yes

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

intfloatvectorstringmatrix

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

收集于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系管理員刪除

精品文檔

yesnoonofftruefalse

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

ifelseforwhiledoinbreakcontinuedefaultswitchcase

其他關(guān)鍵字

globalreturnsourcecatchaliasproc

保留字也區(qū)分大小寫。所以int是整型,Int不是。實際上alias、source、catch

也是保留字,但它們起指令作用,

因此沒有被包括在上述表內(nèi)。

字符串

字符串可用"+”運算連接。

string$what="Whale";

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

這將使title變量的內(nèi)容為GreatWhiteWhale□

矢量

為尋址一個vector的各個成分,使用

vector$LOS=?1,2,7?;

float$firstComponent=$LOS.x;//賦值為1

floatSsecondComponent=$LOS.y;//賦值為2

float$thirdComponent=$LOS.z;//賦值為7

標注矢量的成分:

vector$LOCK=?7,-4,9?;

$LOCK=?$LOCK.x,$LOCK.y,3?;//Assigned?7,-4,3?

但不能直接給一個成分標數(shù)字:

$LOCK.z=3000;//錯誤

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

例子:

收集于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系管理員刪除

精品文檔

print$LOCK.x;//錯誤

print($LOCK.x);

setAttrpersp.scaleX$LOS.x;//錯誤

setAttrpersp.scaleX($LOS.x);

陣列

你可以聲明一個int,float,string或vector類型的陣列。陣列的第一個序號為0

string$array[3]={"first\n","second\n","third\n"};

print($array[O]);//顯示"first\n"

print($array[l]);//顯示"second\n"

print($array[2]);//顯示"third\n"

陣列尺寸可以自動地增加。

int$scores[];//聲明為一個0元素陣列

$scores[150]=3;//現(xiàn)在是151元素陣列

$scores[200]=5;//現(xiàn)在是201元素陣列但最好不要聲明過大的沒用的陣列,因

為它要占內(nèi)存:

int$bigBoy[];

$bigBoy[123456789]=2;//危險

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

string$hats[3]={"blue","red","black"};

print("Therewere"+size($hats)+"hatsAn");

clear($hats);

print("Butnowthereare"+size($hats)+"An");

以上指令的輸出是:

Therewere3hats.

Butnowthereare0.

矩陣

可以把一個矩陣想象為一個浮點陣列的陣列,或是一個浮點數(shù)據(jù)的二維陣列。

矩陣產(chǎn)生后,它的尺寸不能改變。

企圖尋址一個矩陣的不存在的元素將會出現(xiàn)錯誤。在產(chǎn)生矩陣時必須定義它的

尺寸。

收集于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系管理員刪除

精品文檔

matrix=<<1;4>>;〃錯誤:沒有說明尺寸

matHx$a2[][];〃錯誤:沒有說明尺寸

matrix$a3[2][l];//有效:產(chǎn)生?0;0?;

$a3[0][l]=7;〃錯誤:元素不存在

$a3[l]⑼=9;〃有效

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

matrix$a4[2][4]=?-3.4,6,201,0.7;4,2,9.3,1001?;

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

matrix$a4[2][4]columnOcolumn1column2column3

row0-3.46

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論