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

下載本文檔

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

文檔簡介

maya月卻本

精品文檔

MayaMel腳本基礎(chǔ)教程

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ù)南拗啤?/p>

?對特定的場景自定義界面,對一個(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的教材,并對在UsingMayadocumentationset中描述的要

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

該使你自己熟悉MELCommandReference和DGNodeReferenceo

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

可以把它們粘貼至1JMaya的腳本語言編輯器(ScriptEditor)里,并選擇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)容:指令、程序、MayaGems共三個(gè)部分。本期介紹MAYA腳

本語言MEL的指令。

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

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

精品文檔

1、了解指令

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

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

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

bigBoy的一個(gè)球體:

sphere-radius27.5-namebigBoy;

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

rotate-r0090bigBoy;

另一個(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-r500;

2、MEL指令文件

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

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

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

3、使用指令

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

達(dá)式中。

⑴、輸入指令

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

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

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

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

無論如何輸入指令,所有的MEL指令必須用一個(gè)分號結(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í)行一個(gè)MEL指令。為了輸入更多的MEL指令,指令之間

可以?quot;;"分開。

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

⑶、獲得指令返回值

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

令。

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

用單引號將指令前后標(biāo)注出來可以返回指令的輸出。隨后你可以把這個(gè)輸出

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

string$a[];

$a='particle-p505-nameSun';

print($a);

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

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

下:

Sun

SunShape

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

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

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

精品文檔

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

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

eval指令執(zhí)行一個(gè)命令,也讓你抓取返回值。它比起單引號有一個(gè)優(yōu)點(diǎn),因?yàn)?/p>

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

個(gè)變量并顯示它。

string$command="sphere";

eval($command+"-r5");

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

添加-r5,并執(zhí)行完整的指令sphere-r5。它產(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>GeneralPreferences。

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

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

精品文檔

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

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

概述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)化,可以獲得"underthehood"訪問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ò)展名.melo可以把腳本文件用于不同的場景中和

不同的工作期間中。當(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

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

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

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

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

精品文檔

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

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

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

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

徑。

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

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

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

容。

缺省時(shí)是C:\Aw\MayaX.X\bin0

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

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

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

徑。

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

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

重要事項(xiàng):

如果你的計(jì)算機(jī)上安裝了MayaNT的多個(gè)版本,你會(huì)看到一個(gè)版本的路徑。版

本號是在窗口的標(biāo)題欄里。為了看另外的版本的路徑,點(diǎn)擊Previous或Next。

為了保存一個(gè)版本的路徑,點(diǎn)擊Save。如果你的計(jì)算機(jī)只裝了一個(gè)版本,這些

鍵會(huì)變暗。

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

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

plug-in、script和bitmap路徑。會(huì)詢問你是否想這樣做。點(diǎn)擊Cancel可以放棄

這個(gè)改變。

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

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

或者右斜線。

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

精品文檔

為了定義一個(gè)遠(yuǎn)程路徑,可以將一個(gè)隱含目錄與你的計(jì)算機(jī)上的一個(gè)驅(qū)動(dòng)器字

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

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

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

Browseo

為了返回到你原來的缺省路徑中,點(diǎn)擊RestoreDefault。這對于當(dāng)你定義了一個(gè)

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

5—點(diǎn)擊0K。

例子(IRIX)

為了給scripts路徑增加~/nlaya/scripts/clipFXandremote/X/scripts目錄,在啟動(dòng)

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

setenvMAYA_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腳

本文件:

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

因?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

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

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

注意:

不要在這個(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、顯示程序中的語句行號;10、顯示堆棧跟蹤。

1、打開腳本編輯器

可以通過選擇Window>GeneralEditors>ScriptEditor或者點(diǎn)擊Maya窗口右下

部的ScriptEditor圖標(biāo)打開腳本編輯器。

腳本編輯器提供以下菜單選項(xiàng):

OpenScript--打開腳本程序

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

SaveSelected--保存腳本程序

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

ClearHistory--清除歷史

ClearInput--清除輸入

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

精品文檔

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

ShowLineNumbers一顯示彳亍號

ShowStackTrace--顯示堆棧跟蹤

編輯命令

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

它們也是有效的。)命令定義平臺(tái)

Ctrl+cCopyIRIX、Windows

Ctrl+xCutIRIX、Windows

Ctrl+vPasteIRIX、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>OpenScripto出現(xiàn)一個(gè)文件瀏覽器。

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

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

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

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

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

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

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

精品文檔

這是因?yàn)镸aya把執(zhí)行了的程序保存到了存儲(chǔ)器中。當(dāng)你把一個(gè)腳本程序文件

作為源文件時(shí),Maya再次讀該腳本程序文件里的那個(gè)程序。

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

1--從腳本語言編輯器中選擇File>OpenScript0出現(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>SaveSelected指令從腳本編輯器保存腳本文字??梢詮闹噶钶斎耄ǖ?/p>

部)將文字高亮化,

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

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

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

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

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

按Ctrl+Enter鍵;

或者

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

或者

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

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

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

則該定義是從腳本編輯器的底部移到頂部。否則該定義不會(huì)移動(dòng),并且在頂部

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

精品文檔

會(huì)顯示出一個(gè)錯(cuò)誤信息。

提示:

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

除其它部分。

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

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

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

使用這個(gè)指令時(shí)應(yīng)當(dāng)小心一些,因?yàn)闆]有辦法撤消它。

7、清除指令輸入

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

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

使用這個(gè)指令時(shí)應(yīng)當(dāng)小心一些,因?yàn)闆]有辦法撤消它。

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

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

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

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

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

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

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

腳本編輯器里。

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

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

buildObjectEdMenuMayaWindowlmenu4|menultem56;

editSelected;

editMenuUpdateMayaWindow|menu2;

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

editSelected;

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

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

精品文檔

里。如,當(dāng)你選擇了一個(gè)屬性編輯器時(shí),

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

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

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

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

號,你就可以更容易地找到錯(cuò)誤。

要顯示錯(cuò)誤指令的行號,從腳本編輯器里選擇Edit>ShowLineNumbers0當(dāng)你

打開了ShowLineNumbers選項(xiàng),

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

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

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

運(yùn)行Maya時(shí)它們會(huì)出現(xiàn)在腳本編輯器里。

10、顯示堆棧跟蹤

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

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

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

TraceoMaya會(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場景文件中的一種

方法。

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

精品文檔

腳本語言結(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>ExpressionEditor0

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

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

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

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

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

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

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

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

收集于網(wǎng)絡(luò),如有侵權(quán)請聯(liá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í)行。

GUIOpen/Close

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

行MAYA,在讀文件時(shí)腳本文件

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

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

點(diǎn)被刪除時(shí),它被執(zhí)行。

UIConfiguration(內(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)擊NewScriptNode鍵。

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

精品文檔

Script窗口和ScriptNodeName框被清除,你可以輸入一個(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>ExpressionEditor0

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

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

4--點(diǎn)擊TestScript鍵。

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

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

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

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

1--選擇Window>ExpressionEditor0

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

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

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

精品文檔

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

1--選擇Window>ExpressionEditor0

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

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

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

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

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

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

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

1--選擇File>OpenScene0或選擇File>Open然后在OpenScenewindow中點(diǎn)

擊Optionso

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

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

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

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

1—S選擇Window>ExpressionEditoro

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

3--選擇你想在ScriptNodeslist中要?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)換;

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

精品文檔

4、限制。

1、變量

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

作為變量名但開頭不能是數(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一個(gè)或更多的字符"What'sup,chief?"

vector三個(gè)浮點(diǎn)數(shù)?3,?7.7,?9.1?

matrix浮點(diǎn)數(shù)陣列<<L1,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="Heyakid.";

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

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

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

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

收集于網(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?};

如果一個(gè)變量被聲明但未被標(biāo)注,它的所有的值是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?;

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

值給它的那種類型。

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

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

Strip="heyaBuddy";//字符串

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

$lip=?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

的保留字:

breakcasecontinuedefaultdoelse

falsefloatforglobalifin

intmatrixnooffonproc

returnstringswitchtruevectorwhile

yes

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

intfloatvectorstringmatrix

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

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

精品文檔

yesnoonofftruefalse

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

ifelseforwhiledoinbreakcontinuedefaultswitchcase

其他關(guān)鍵字

globalreturnsourcecatchaliasproc

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

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

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

字符串

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

string$what="Whale";

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

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

矢量

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

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

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

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

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

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

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

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

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

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

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

例子:

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

精品文檔

print$LOCK.x;//錯(cuò)誤

print($LOCK.x);

setAttrpersp.scaleX$LOS.x;//錯(cuò)誤

setAttrpersp.scaleX($LOS.x);

陣列

你可以聲明一個(gè)int,float,string或vector類型的陣列。陣列的第一個(gè)序號為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"

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

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

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

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

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

int$bigBoy[];

$bigBoy[123456789]=2;//危險(xiǎn)

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

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

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

clear($hats);

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

以上指令的輸出是:

Therewere3hats.

Butnowthereare0.

矩陣

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

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

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

尺寸。

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

精品文檔

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

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

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

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

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

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

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

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

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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論