① maya中的mel腳本是什麼意思
mel語言是maya自己的一套編程語言,mel是maya的基礎,是比較偏底層的東西。如果你稍有編程基礎的話,可以很容易掌握它。我們可以看到除了maya的插件(maya內部很多組件也都是以插件形式存在的)以外,所有的操作都可以在script editor窗口中有相應的mel語言與之對應。例如:創建一個常規的polygon球體,打開windows-->General Editors-->Script Editor,可以看到:polySphere -r 1 -sx 20 -sy 20 -ax 0 1 0 -tx 2 -ch 1;;這句話的意思是創建一個polygon球體(polySphere),其半徑為1(-r 1),x、y軸向的分段皆為20(-sx 20 -sy 20),軸向為Y軸向上(-ax 0 1 0),顯示方式為有鋸齒貼圖(-tx 2),並帶有歷史紀錄(-ch 1)。參見help中的polySphere詞條。
最好的方法還是買書自己學,可以參考《Maya動畫師MEL腳本編程全攻略》(以前看過,很快就能上手)。
附上我以前學習的一些筆記,希望能給你一些幫助:
1.得到所有被選中對象的列表並存入數組:「string $sel[] = `ls -sl`;」
2.在表達式中可以直接用「=」給對象的屬性賦值或取值;而mel中則必須通過getAttr和setAttr來實現,這種方式效率比較低
3.「==」是判斷是否相等;「!=」不等於
4.定義變數:「float $rotation_value;」
5.為對象添加屬性:Window-->Attribute Editor;Attributes-->Add Attribute
6.在數學表達式中的向量:可以對向量中的單個分值賦值,如:$abc.x=3;但是不可以這樣賦值:$abc=<<$abc.x,1,1>>
7.向量運算(Maya中的點都是向量存儲,因此要定位的話向量比較重要):向量相減:代表向量從一個點移到另一個點所需行進的方向和距離,減數指向被減數
8.向量操作:unit(格式化)/unit($vectoer1);mag(長度)/mag($vectoer1);angle(夾角,弧度制,如果想獲得角度將它乘以180/pi,方向為逆時針)/angle($vector1l,$vector2);cross(叉積,與兩個向量正交,即垂直的第三個向量,其長度為:dot運算)/cross($vector1l,$vector2);dot(=mag($vector1)*mag($vector2)*cos(angle($vector1,$vector2)))/($vector1l,$vector2);rot(將一個向量繞著由另一個向量所定義的軸旋轉一定的角度)/rot($vector1,$vector_axis,$degrees)
9.檢測兩個向量平行或垂直:dot(unit($vector1),unit($vector2)),如果=0,那麼垂直;如果=1,那麼平行
10.在mel語言中,不能把屬性值賦給變數,必須用如下格式獲得:$val=`getAttr expression1.time`;
11.連接屬性:connectAttr 屬性1 屬性2
12.創建表達式:express -string "屬性1=值";;適用於mel中對屬性的賦值
13.變數:數組變數/$t={1,2,3};聲明變數/int $t;
14.全局變數:Maya要求在每一個使用全局變數的域中重新聲明該變數,如:
global int $a=1;
proc print_a(){
global int $a;
print($a);
}
print_a();
15.將一個整數轉換為一個浮點數:float(3);;將浮點數轉換為整數:int(3.7),結果為向下取整=3
16.算術比較運算:print(5>6);結果為:0或1
17.運算符:+,-,*,/,%,+=,-=,*=,/=,++,--,&&,||,!
18.取相鄰最大整數:ceil($f);取相鄰最小整數:floor($f)
19.在mel中的向量:不能直接將一個值賦給向量的一個分量,如:$abc.x=3;必須這樣賦值:$abc=<<$abc.x,1,1>>
20.分隔字元串:tokenize "string1" $myarray;得到的結果將是以空白符來拆分字元串,並存入數組中;又:tokenize "string1" "char" $myarray;將得到以char來拆分字元串,並存入數組中
21.數組中所有沒有被賦值的元素默認為0
22.數組的尺寸:size($myarray)
23.如果需要在腳本中使用一個非常的數組,在結束時使用mel中的clear命令清楚該數組:clear $myarray
24.模式選擇:-c標記或不適用標記將選擇創建模式;-q選擇查詢模式;-e選擇編輯模式
如:sphere -q -radius nurbsSphere1 返回半徑
sphere -e -radius 15 nurbsSphere1 修改半徑
25.當希望存儲命令的返回值時,可以在賦值運算的右邊將命令置入反引號(``)中。如:string $coneNodeNames[]=`cone -name testing2`
26.使用eval命令:string $spherecommand="sphere"; string $nodenames[]=eval($spherecommand);表示創建一個球體,將sphere命令的返回值存入$nodenames數組中
27.在腳本中有三種運行mel命令的方法:(一)如果不關心返回值,作為獨立一行的語句獨立運行;(二)如果想將返回值存入一個變數,將其放入反引號中;(三)如果想在字元串中構造命令並執行它,使用eval函數命令。
② 怎樣編寫maya腳本
1,打開script editor:Windows->General editors->Script editor 或者,點擊右下角的圖標,如下圖:
③ 如何有效編寫各種由MAYA Mel語句組成的邏輯運算
一、了解MEL
MEL (Maya埋入式語言)為Maya提供了基礎。Maya界面的幾乎每一個要點都是在MEL指令和腳本程序上建立的。由於Maya給出了對於MEL自身的完全的訪問,你可以擴展和定製Maya。通過MEL,你可以進一步開發Maya使它成為你和你的項目的獨特而創新的環境。為有效地使用Maya,你並不非得精通MEL。但是,熟悉MEL可以加深你使用Maya的專業能力。使用MEL的許多方面可以由只有很少編程經驗或者沒有經驗者所使用。喜歡MEL並不非得喜歡編程。有一些方法,它們可以使你獲得MEL的好處而不必考慮編程的細節。一旦當你進行了產生MEL腳本語言的嘗試,你會發現MEL可以給你提供可以想像到的最先進的數字化畫圖的方法。
為了獲得Maya的輸出,大部分可以使用MEL來做。這里是你可以使用MEL來工作的一些例子:
·使用MEL指令脫開Maya的用戶界面,快速地產生熱鍵,訪問更深的要點。 ·給屬性輸入准確的值,脫開由界面強制引起的拘謹的限制。 ·對特定的場景自定義界面,對一個特定的項目改變預設設置。 ·產生MEL程序和執行用戶建模、動畫、動態和渲染任務的腳本程序。
如何使用本教程本教程敘述如何學習和使用Maya埋入式語言(MEL)。如果你初次接觸MEL,本教材幫助你在使用MEL指令和腳本程序方面開始起步。一旦當你開始開發MEL程序的時候,本教材將繼續幫助你,講解如何能夠使你獲得用MEL產生的更多的指令、宏、程序和用戶界面元素的輸出。
本教材假定你對Maya已經有了基本的了解。如果你完全是新開始學習Maya,請看一下學習Maya的教材,並對在Using Maya documentation set中描述的要點進行開發。應該熟悉Maya的在線文件(見Online documentation)。特別是應該使你自己熟悉MEL Command Reference和DG Node Reference。
本教材的各處都有許多有關的MEL指令和程序碼的例子。要運行例子程序,你可以把它們粘貼到Maya的腳本語言編輯器(Script Editor)里,並選擇Edit > Execute就可以了。使自己進一步地熟悉腳本語言編輯器的要點,執行腳本程序,並把程序保存到Maya的script目錄中的一個文件中,可以參考Maya文件和用戶指南中的適當章節。
如何學習更多的MEL內容為了學習更多的MEL內容,可以通過以下途徑:
·在線文件·訓練課程·網站資源
在線文件本教材提供了一個使用MEL指令、程序和腳本語言的總的概覽。有關特定的MEL指令的詳細信息,請參閱MEL Command Reference。
當你學習MEL時,你會發現你需要學習更多的有關Maya的相關圖節點(dependency graph node)的內容。在線的DG Node Reference文件詳細地描述了Maya的相關圖節點。
訓練課程為了學習更多的有關Maya和MEL的內容,請考慮學習Alias│Wavefront的訓練課程。這些課程向你介紹MEL指令和腳本語言程序,還可以向你提供最主要的內容的深層知識。要學習更多有關MEL的內容,可以先從MEL基本教程開始。
在Alias│Wavefront的網站aliaswavefront.com(Express Link to Training)中的課程安排和描述是有效的。關於課程的有效性、價格和登錄的最新的信息,可發Email給[email protected],電話是416-874-8760或1-877-927-7478 (option 4),或FAX 416-369-6131。
網站資源Alias│Wavefront的Assistant Online提供了許多有關Maya的教材,包括含有產生MEL腳本程序的教材。
更多信息可以訪問Alias│Wavefront網站:aliaswavefront.com。
另外,Highend3D的highend3d.com網站介紹了MEL腳本程序並連接到更多的有關MEL和Maya的信息。
為了獲得MEL和Maya的大部分的輸出,請開發和利用這些訓練課程和網站資源。
④ 跪求 <<Maya動畫師MEL腳本編程全攻略>>和 <<Maya MEL動畫編程從入門到精通>>
我有給你吧 979774476
⑤ 求教maya MEL腳本 動畫腳本
要想會mel光會編程不行,得有一定的maya使用經驗,入門是非常好入的,因為mel沒有指針的概念,剛開始推薦你看《Maya動畫師MEL腳本編程全攻略》再配合著視頻教程如諾寶的mayacn的,雙管齊下
在我看來,mel就是mel命令堆起來的,等mel用的差不多了在學maya的api
⑥ 指教MAYA腳本mel的安裝與使用說明
就是說你在maya軟體里的mel輸入欄這里輸入分別輸入RageMergeFaces和spinFaces(每次只輸入一個名稱,即第一次輸入RageMergeFaces)然後全選RageMergeFaces字樣,利用滑鼠把他拖到shelf上就可以了。然後再次輸入spinFaces字樣,重復上一步驟就可以了
⑦ 關於mel腳本語言的編寫與使用
ge(Maya內置語言)的縮寫,是一種強大的命令和腳本語言,讓你直接控制Maya的特徵、進程和工作流程。mel能做什麼,不能做什麼?能做的mel有一個很重要的功能是編寫界面,Maya的整個界面是用mel編寫的,Maya中的所有界面元素都可以編寫到你自己的mel程序界面中,你可以用mel跟據自己的習慣定製自己的操作界面。Maya中的所有的按鈕命令都是通過mel來調用的,你可以記錄並把其中一些命令組合起來,通過一鍵或按鈕來自動執行這一組命令,就像PhotoShop里的Actions一樣。Maya中的每一步操作都是在執行mel,因此Maya的任何一個功能,能做的任何一項操作,都可以加到你自己的mel程序中。mel有著和c語言類似的語法,有強大的字元串處理功能,還包含一些較為低層的命令(比如說獲取選擇物體的名稱和獲取點在空間中的坐標值等命令),可以編寫一些Maya中沒有的,較為復雜的功能。不能做的mel是一種腳本語言,受腳本解釋器(Command Engine)和Maya內置命令的影響,還是有很多局限的。mel不能使用ActiveX插件。mel只能根據Maya中已有的命令(dll或mll中注冊過的命令)進行擴展,無法直接調用dll模塊中的函數。我們平常使用的dll或exe程序文件是經過編譯器優化的二進制文件,命令的執行速度非常快。mel腳本語言是文本,有一個腳本解釋器分析的過程,命令的執行速度較慢,大約要慢20倍。mel不支持指針,不能對內存進行直接操作。這就導致了很多方面的效率超級低下,對內存的間接操作可能會使運行速度降低100倍甚至1000倍以上。不過這樣也有一個不容爭辯的好處,就是不會產生內存泄漏,保障了Maya的穩定性。mel不能讀寫二進制文件。既然mel不支持指針,不支持數據結構,就算能夠讀寫二進制文件意義也不大。mel不能編寫程序渲染器、播放器;不能編寫Maya中不存在的界面元素,如TreeView、RichEdit、透明窗口等;不能編寫讀取二進制文件的程序,如3dmax(*.max)、LightWave(*.lwo,*.lw)等。有人問過mel能不能編寫病毒問題。答案是肯定的。編寫mel病毒不需要什麼高超的技能,只要通過mel調用dos命令或 JavaScript/VBScript命令就行了。編寫病毒是一件損人不利己的事,mel病毒決對不能代表編寫者的技術高深,只能說明他的素質低劣。 mel病毒極其罕見,只聽說國內有人編過,並害了自己人。如果萬一你被mel病毒格式了硬碟或刪除了文件,可以用EasyRecover之類的程序來恢復,但有一點一定要記住,就是在恢復文件之前千萬不要對受損的硬碟進行寫操作!包括不能把恢復的數據存到受損的硬碟上!否則再厲害的高手也救不了你。學Maya一定要學mel嗎?不一定非要學mel。但由於Maya與mel的關系太密切了,Maya的用戶界面就是用mel編寫的,你在Maya中的每一步操作都是在執行mel,你也經常會在表達式里用到mel,或使用別人編寫的外部mel程序,這一切都要求你至少要對mel有一個初步的了解。可以先學mel再學Maya嗎?不可以。只有先熟悉的Maya的操作後才可以學mel。一般至少學兩個月以上的Maya,才可以學mel。學mel是否要有編程基礎?是否應該先學C語言再學mel?有編程基礎的確會對學mel有很大幫助,但這並不是說學mel一定要有編程基礎。C語言和Java語言雖然在語法上與mel很相似,但在編程的思路方面有很大差距,mel更注重代碼的簡潔而非代碼運行的高效率。由於mel是不需要編譯的腳本語言,對一些編程的規范要求不是很嚴格,學習起來會比C或Java更簡單一些。學mel是否要學好數學?是否要學好圖形學?如果你是學理科的,而且以後打算在3D圖形編程這方面發展,那麼學好數學和圖形學是必須的。如果你是搞藝術的,學mel只是為了輔助Maya作圖,那麼你就少在數學和圖形學上浪費時間。mel是比較高層的腳本語言,一般都是直接調用Maya中已經編好的演算法,你只要熟練掌握Maya的操作就行了。如果你有比較好的圖形學基礎,可能反而會不喜歡使用mel,因為很多優秀的演算法無法用mel實現 - mel的速度太慢了。如何編寫mel?mel是腳本語言,這就意味著你可以用任何文本編輯器來編寫,比如寫字板、記事本等。Maya自帶的編輯器不好用,所以我們一般使用外部編輯器來編寫mel。比較專業的編輯器有:TextPad、 UltraEditor、EditPlus等,有了這些編輯器後還要在網上(比如Highend3d)下載一個mel語法加亮文件,配置好後,才好用。如何使用mel?mel編輯器單行的mel命令,可以直接在命令行(Command Line)執行,也可以在Window > General Editors > Command Shell執行。多行的mel代碼,可以在Script Editor中按Ctrl+Enter執行。shelf在Shelf中執行mel。把要執行的代碼選中,用滑鼠拖放到Shelf上,Shelf上多了一個mel圖標,點這個圖標,就可以執行你的mel代碼了。使用textToShelf命令。比如:textToShelf "cube" "polyCube";可以在當前Shelf上建一個polyCube命令的圖標。使用Shelf Editor,添加、編輯你的mel代碼,或更改圖標。mel文件mel文件的名字必須取與文件中的主函數相同的名字。要把mel文件復制到我的文檔/Maya/5.0/scripts目錄中,然後在命令行輸入主函數名就可以執行這個函數命令。源化腳本(Source Script)Source Script可以使mel文件中的代碼或命令立即生效。有幾種方法可以Source Script,比如說可以在命令行執行source yourScript.mel,或用Script Editor的File > Source Script...,或直接把你的mel文件拖放到Maya的視窗中。啟動文件userSetup.mel要想在Maya每次啟動時都執行某一段代碼,需要把這段代碼加到Maya的啟動文件userSetup.mel中。具體方法是在我的文檔/Maya/5.0/scripts目錄中新建一個文本文件並重命名為userSetup.mel,然後把你的代碼加到這個文件中。如果scripts目錄中已經存在了userSetup.mel,就把你的代碼加到這個文件的結尾。其它也可以通過快捷鍵、菜單、Marking Menu、mll插件、外部程序文件、JavaScript等方法來調用mel。如何學習mel?學mel最好的參考手冊就是Maya的幫助文檔,遇到問題時,應首先從這些文檔中找答案。我把文檔中的Mel Command Reference部分做成了chm文件便於查詢,可以點此處下載。要想提高自已的水平,需要多看別人編寫的mel代碼。<disk>:\\Alias\\Maya6.0\\scripts目錄中存放著所有 Maya自帶的mel,這些mel可以隨意抄寫,修改並發布,無版許可權制,是我們學習的範本。另外在Maya官方網站和Highend3d也可以下載到大量有用的mel供我們學習。什麼是表達式?mel與表達式有什麼關系?mel與表達式的關系,Maya幫助文檔中講得很清楚:Expressions have a different purpose from MEL commands and MEL scripts. You enter a MEL command to do a single action, for example, to create a sphere.A MEL script is a list of commands you create to do a sequence of actions, for instance, create a wall-shaped object and apply a brick texture to it.Because you store a MEL script in a file on disk, you can run a script in different scenes and different work sessions, whether today or next year.An expression animates one or more attributes over time in a single scene. By default, an expression executes each frame as an animation plays. After you create an expression, it executes whenever you play the animation-including when you play the animation after saving, closing, and reopening the scene.A MEL command or script is not part of a scene after you execute it. You must execute it again to repeat the action.做幾點補充說明:mel是用戶與Maya內部機制交流的通道。mel不能直接編寫節點和屬性,因此往往要使用表達式才能對物體進行實時控制。表達式是與動畫不可分割的,表達式與動畫的時間(time或frame)有密切的關系,表達式對動畫的每一幀都要進行計算。在表達式中可以使用mel,但很多mel用在表達式中是沒有意義的,比如說一般不會把編寫界面的mel用在表達式中。mel腳本可以用於任何場景。表達式只能用於一個場景,另一個場景即使用到相同的表達式,也要重新創建。表達式主要是對物體的屬性進行控制,可以用等號對物體的屬性直接取值或賦值,例如:cone.translateX = 3;而mel就必須用getAttr或setAttr來做同樣的事情了,例如:setAttr cone.translateX 3;什麼是MayaAPI?與mel有什麼關系?API - Application Programmer Interface(應用程序界面)。也有人稱作SDK,是一種專門給程序員使用的界面或介面。MayaAPI提供了Maya的5個dll文件。這些dll中包含控制Maya的大量類和函數,我們通過這些類和函數用vc++編寫自己的dll(mll)文件,這些函數通過Maya的方式(比如用mel命令的形式)來調用。我們常用到的*.mll插件都是通過MayaAPI編寫的。MayaAPI比mel更強大,更復雜,效率更高,能做到許多mel做不到的事情,運行速度在mel的十倍以上。MayaAPI的功能主要體現在以下幾點:編寫mel命令。 執行mel命令。 進行創建物體,選擇、縮放、刪除等基本操作。 編寫manipulator。 編寫contexts(tool)。 編寫屬性節點。 編寫材質節點。 文件輸入輸出。 編寫獨立的exe控制台程序。MayaAPI程序因為使用vc++,可以使用MayaAPI,MFC,還有很多SDK,幾乎是無所限制。不過不能改動Maya底層的東西,不能更改Maya的運作方式。使用MayaAPI,需要有vc++的編程經驗,並具有圖形學基礎
⑧ 怎樣編寫maya腳本
可以參看MAYA 的說明書
主要是使用參數來控制動畫
腳本名稱 描述
xbmLangPathList 返回XBMLANGPATH環境變數中的路徑。
xform 用來設置或查詢transformation節點中的任何元素。它也能被用來查詢一些不能被直接設置的數值,
如transformation矩陣或bounding box。它也能被用來把中心點設置成合適的值。"
waitCursor 設置Maya程序的圖標是否為等待圖標。
warning 讓用戶在他(她)的教本執行時顯示warning信息。
whatIs 查詢一個字元串在Maya中是一個「命令」,「Mel程序」,「教本」,還是一個變數,如果時變數則給出變數的類型。
window 創建一個不可見的窗口。
windowPref 創建、修改或查詢窗口的屬性,注意對main Maya窗口和Command窗口不起作用。
wire 創建一個曲線變形器。
wireContext 創建一個能被用來創建曲線變形器的工具。
workspace 創建,打開或編輯一個給定的workspace文件,如果沒有指定,則假定時當前的workspace。
wrinkle 用來創建一個曲面褶皺的網路,它自動創建一個用來控制一個曲線變形器的褶皺曲線,
而這個褶皺曲線則連接到一個cluster變形器上。
wrinkleContext 建立一個用來創建褶皺的連接。
writeTake 用來記錄從記錄數據的設備到一個mov文件的數量。
wtPaintCtx 用來在選定的nurbs曲面上繪畫簇的權重。
validateShelfName 用來檢測shelf tab的名字是否合法。
valuePaintCtx ?看不懂,小弟E文較差 x_x
verifyCmd 按照相應的值查詢一個命令中的每個標簽。
view2dToolCtx 居然沒有描述NND
viewCamera 把攝像機移到指定攝像機的邊上或頂上。
viewClipPlane 用來查詢或設置指定攝像機的剪切平面。
viewFit 讓選中攝像機顯示除了攝像機本身外的指定物體,就是F吧
viewHeadOn 讓指定攝像機按照法線觀察物體,並讓物體充滿屏幕。
viewLookAt 讓攝像機看向所有選中物體的中心
viewPlace 用來設定攝像機的一點參數:攝像機位置,攝像機瞄準點的位置,攝像機的方向,攝像機是否有透視,
視角以及向上軸。
viewSet 把選中攝像機設置到預定義的位置。
visor 創作或操作Visor窗口
volumeAxis 設置volumeAxis動力場
vortex 設置vortex動力場
uiOnDemandExample 這個腳本示範了「如何按照需要創建UI"來加快復雜視窗的初始化顯示時間
uiTemplate 這個命令創建一個新的命令模板對象,模版對象能保存多個UI命令的默認標記參數。
unassignInputDevice 刪除所有和指定設備(物體)有關的字元串命令
undo undo
undoInfo 控制undo的參數
ungroup 解組指定對象
uniform 設置uniform動力場
unit 返回一個歸一化矢量
unloadPlugin 解除指定plugin的調用
untangleUV 通過解開texture UVs來幫助創建不重疊的區域
untrim untrim指定表面
upAxis 改變世界的向上軸。(Y軸 or Z軸)
updateAE 顯示在屬性編輯器中指定節點的信息
userCtx 根據一系列指定的工具來創建自己的工具,就象宏一樣。
userPaintCtx 通過畫筆來執行mel
uvlink 用來設置、中斷、查詢物體的UV組和紋理之間的連接關系
uvSnapshot 創建選擇物體的uv快照
⑨ 求maya5編程全攻略PDF
mel 是maya的語言,就跟中文是咱中國人的語言一樣,所有maya的操作,不管是渲染,建立球模型,存檔,打開某窗口,都是在maya後台執行一條或者多條mel命令,所以說某高手憑借一段mel語句能完成一項很復雜的工作(比如自動裝配)就不會讓你太驚訝了。
mel學起來不難,如果你之前學過C語言,並且有良好的編程習慣(比如知道怎麼排除錯誤和設置程序斷點)那麼你學起mel會覺得很爽快,因為這個語言實在是很淺顯。
如果需要書籍,中青IT翻譯的《maya編程全攻略》,郵電出的《maya渲染技術精粹》,網上流傳甚廣的《the art of rigging 1-3》都值得好好看看,還是那句話,mel很淺顯,所以just learn it。
但是.....會用mel 不等於 會編寫復雜插件,插件的哲學是建立在簡化重復勞動的基礎上的——你首先要知道什麼工作是「重復性」的,比如你裝配一個角色,不停地給關節們重命名,這個步驟就是重復性的,是應該開發一個插件來簡化的——其次你需要知道怎麼簡化這個重復性的工作,以及誰是這個插件的用戶,如果是一個對程序一點不了解的用戶,你是否需要開發一個好看的界面——再次你需要一個嚴謹的結構,保證這個插件不管用在什麼角色身上都完美無錯,這需要你去試驗和碰壁.....
至於其他方面,渲染,建模......mel發揮的作用就更五花八門,所有的大型製作公司都有專門的RnD(研究與開發部門)負責為maya開發特殊工具。
--------------
表達式僅僅是mel的一個小小分支而已,可以理解表達式為「時間(frame)驅動的mel微程序」 ,表達式永遠和時間是有關系的,所以如果你目的是學習基於運動的特效,粒子、流體、彈性動畫.....你必然會用到表達式。
但是對於建模之類靜態任務來說,表達式扮演的角色不如mel或python本身更明顯。
⑩ maya中mel文件如何使用
使用腳本語言編輯器
本章包括以下內容: 1、打開腳本編輯器;2、打開一個腳本程序;3、把一個MEL腳本程序文件作為源文件 ;
4、保存腳本文字;5、執行一個腳本程序;6、清除狀態信息;7、清除指令輸入;8、響應一個指令;
9、顯示程序中的語句行號;10、顯示堆棧跟蹤。
1、打開腳本編輯器
可以通過選擇Window > General Editors > Script Editor或者點擊Maya窗口右下部的Script Editor圖標打開腳本編輯器。
腳本編輯器提供以下菜單選項:
Open Script--打開腳本程序
Source Script--把一個腳本程序文件作為源文件
Save Selected--保存腳本程序
Execute--執行腳本程序
Clear History--清除歷史
Clear Input--清除輸入
Echo All Commands--返回所有指令的返回值
Show Line Numbers--顯示行號
Show Stack Trace--顯示堆棧跟蹤
編輯命令
下表列出了在腳本編輯器中有效的鍵盤命令。(在表達式編輯器和一些輸入框中它們也是有效的。) 命令 定義 平台
Ctrl+c Copy IRIX、Windows
Ctrl+x Cut IRIX、Windows
Ctrl+v Paste IRIX、Windows
Ctrl+k 刪除到本行末 IRIX
Ctrl+d 刪除下一個字元 IRIX
Ctrl+a 移動游標到行首 IRIX
Ctrl+e 移動游標到行末 IRIX
Ctrl+a 選擇編輯框中的所有文字 Windows
2、打開一個腳本程序
我們可以打開一個腳本程序以便檢查、執行或找出它的問題。打開一個腳本程序時並不執行它。
只是在腳本編輯器的輸入欄里簡單地把它顯示出來。
要執行顯示在腳本編輯器的輸入欄里的一些或者全部腳本程序,可以用滑鼠選擇它,然後按鍵盤的數字Enter鍵。
當你想把一些或者全部內容拖拉到櫃架上並在那裡產生一個圖標時,打開一個腳本程序就是非常有用的。
可以點擊該圖標執行這個程序。
為了打開一個腳本文件:
1--從腳本語言編輯器中選擇File > Open Script。出現一個文件瀏覽器。
2--選擇要打開的腳本文件。
把一個腳本程序作為源文件
把一個MEL腳本程序文件作為源文件,執行所有的MEL指令並聲明包含在該腳本程序文件中的所有的全局過程。
如果你在一個腳本程序文件中修改了一個程序,Maya 並不把這個改變登記給該程序,直到你把它的程序文件作為源文件。
這是因為Maya把執行了的程序保存到了存儲器中。當你把一個腳本程序文件作為源文件時,Maya再次讀該腳本程序文件里的那個程序。
為了把一個腳本程序作為源文件:
1--從腳本語言編輯器中選擇File > Open Script。出現一個文件瀏覽器。
2--選擇要打開的腳本文件。
把一個腳本程序作為源文件之後,該文件里的所有MEL指令會執行。該腳本程序中的所有全局過程會被聲明,但並不被執行。
MEL指令是按照它們出現在文件中的順序執行的,並且應當沒有錯誤。如果產生了一個錯誤,執行會中斷並不再裝載更多的程序。
當你把一個MEL腳本程序作為源文件之後,不聲明或者不執行局部過程。
但是,如果你是通過在腳本編輯器或指令行里輸入而聲明了一個局部過程,該過程會被聲明為全局過程,你可以在任何時候執行它。
執行一個程序可以通過執行一個MEL指令實現。當你想把一個腳本程序作為源文件,並具有執行該文件中的程序的作用時,這是很有用的。
為了這樣做,要首先聲明該程序,然後聲明通過一個文件瀏覽器執行該程序的指令。
4、保存腳本文字
使用File > Save Selected指令從腳本編輯器保存腳本文字。可以從指令輸入(底部)將文字高亮化,
也可以通過腳本編輯器的狀態信息(頂部)部分。Maya 將會把高亮的文字部分保存到你說明的目錄里的一個 .mel 文件中。
5、執行一個腳本程序
當你想執行一個預先已經源化了的腳本程序時,可以在腳本編輯器的指令輸入欄(底部)輸入該程序的名字,然後進行下面工作中的一種:
按 Ctrl + Enter 鍵;
或者
按數字鍵盤的 Enter 鍵;
或者
從腳本編輯器里選擇 Edit > Execute。
也可以使用這些指令執行一個在腳本編輯器里已經打開了的腳本程序的定義。如果MEL腳本定義沒有出現失敗,
則該定義是從腳本編輯器的底部移到頂部。否則該定義不會移動,並且在頂部會顯示出一個錯誤信息。
提示:
可以首先選取MEL script的一部分然後只執行這一部分(Ctrl+Enter)。 它不會刪除其它部分。
6、清除狀態信息
要清除狀態信息(腳本編輯器的頂部),從腳本編輯器里選擇Edit > Clear History。這將會刪除掉所有的狀態信息文字。
使用這個指令時應當小心一些,因為沒有辦法撤消它。
7、清除指令輸入
要清除指令輸入文字(腳本編輯器的頂部), 從腳本編輯器里選擇Edit > Clear Input。這將會刪除掉所有的指令輸入文字。
使用這個指令時應當小心一些,因為沒有辦法撤消它。
8、響應一個指令
當你用Maya工作時,對應的MEL指令常常出現在腳本編輯器的頂部。預設情況下,只有那最重要的指令才會顯示。
你可以在腳本編輯器里選擇Edit > Echo All Commands ,虛擬地顯示與你的Maya作用相關的所有指令。
它可以幫助你學習哪些MEL指令觸發作用。
在你的Maya的作用之間並不是總有一對一的對應關系,這些指令返回響應到腳本編輯器里。
如果你使用一個腳本程序去打開屬性編輯器,一些MEL指令出現在腳本編輯器里(響應是打開的):
buildObjectEdMenu MayaWindow|menu4|menuItem56;
editSelected;
editMenuUpdate MayaWindow|menu2;
但是,只有以下的MEL指令需要引入屬性編輯器:
editSelected;
同時,對於一些作用來說,也不總是會將MEL指令的響應返回到腳本編輯器里。如,當你選擇了一個屬性編輯器時,
腳本編輯器的頂部沒有返回任何信息。
要關閉返回信息,從腳本編輯器里再次選擇 Edit > Echo All Commands。
9、顯示程序中的語句行號
如果你在執行一個長的程序時由於錯誤而出現了問題,可以打開腳本程序的行號,你就可以更容易地找到錯誤。
要顯示錯誤指令的行號,從腳本編輯器里選擇Edit > Show Line Numbers。當你打開了Show Line Numbers選項,
Maya 在腳本編輯器狀態信息框(頂部)的旁邊顯示腳本程序的行號。
要關掉行號,在腳本編輯器菜單里再次選擇Edit > Show Line Numbers。
Maya將顯示行號的設置保存下來作為以後使用。如果打開了行號,當下一次你運行Maya時它們會出現在腳本編輯器里。
10、顯示堆棧跟蹤
如果你用埋入的腳本程序文件執行一個腳本程序時出現了問題,打開堆棧跟蹤選項顯示文件結構中的腳本程序錯誤。
要顯示一個腳本文件的堆棧跟蹤,在腳本編輯器里選擇Edit > Show Stack Trace。Maya會在一個窗口裡顯示堆棧跟蹤,
在腳本編輯器里顯示一個錯誤信息。
使用腳本語言結點
一個腳本語言結點是一個包括了一個 MEL腳本語言程序的結點。
當該結點產生或者當該結點被破壞時,該程序被執行,它取決於腳本結點的類型。
本章包括以下內容:
1、了解腳本語言結點;
2、產生腳本語言結點;
3、測試腳本語言;
4、編輯腳本語言結點;
5、設立腳本語言結點的執行;
6、刪除腳本語言結點。
1、了解腳本語言結點
腳本語言結點是把一個MEL腳本語言程序存儲到一個Maya場景文件中的一種方法。
腳本語言結點也包含了用於產生用戶界面的所有MEL指令,並被用MAYA文件保存。
你可以用不同的方法執行腳本語言程序。可以指明一個腳本程序結點執行它的程序:
當該結點是從一個文件中讀出的;
在渲染一楨圖像的之前或者之後;
在渲染一個動畫的之前或者之後。
當一個文件關閉著時使用File > Open或者File > New
一個腳本語言程序結點有三個屬性:
Before、After和Type。決定於腳本程序的類型,當執行該程序時,說明Before和After屬性。
2、產生腳本語言結點
可以使用表達式編輯器產生腳本語言結點。
為了產生一個腳本語言結點:
1--選擇Window > Expression Editor。
2--在Expression Editor中選擇Select Filter > By Script Node Name。
任何現存的Script Nodes顯示在Script Nodes表中。
3--在Expression Editor的Script window中輸入腳本程序。
4--在Script Node Name框中輸入一個名字。
5--定義你想要使腳本成為一個之前或者之後的腳本程序。
6--點擊Create鍵。
這產生腳本結點。現在你可以定義它的類型。
7--從Execute On 下拉菜單里選擇以下的一個腳本程序結點類型:
Demand
當你使用scriptNode指令,隱含地需求它時,運行腳本文件(看在線指令文件的scriptNode指令的信息)。
忽略這種類型的腳本文件的之前和之後的屬性。
Open/Close
如果你已經指定了該腳本文件作為之前的腳本文件,當以批處理模式讀文件時腳本被執行。如果你把它
作為之後的腳本文件,當文件被關閉或者沒有以圖示用戶界面模式提供,或者當該結點被刪除時,它被執行。
GUI Open/Close
如果你已經指定了該腳本文件作為之前的腳本文件,當以圖示用戶界面模式運行MAYA,在讀文件時腳本文件
被執行。如果你把它作為之後的腳本文件,當文件被關閉,或者沒有以圖示用戶界面模式提供,或者當該結
點被刪除時,它被執行。
UI Configuration (內部)
之前的腳本文件包括了用戶界面設置的信息。它是由Maya或者一個plug-in為了保存面板排列和編輯狀態信息
而自動的產生的。當你打開一個文件時,這個腳本結點執行它的腳本文件。在執行之後,該結點被刪除掉。之
後的腳本是不會運行的。如果一個文件被提供或被輸入,這個結點將會不存在。
軟體渲染
如果你選派好腳本作為之前的腳本,腳本的執行在一個動畫之前被渲染。如果你選派好腳本作為之後的腳本,
腳本的執行在一個動畫之後被渲染。
軟體楨渲染
如果你選派好腳本作為之前的腳本,腳本的執行在一個楨之前被渲染。如果你選派好腳本作為之後的腳本,腳
本的執行在一個楨之後被渲染。
8--點擊Edit鍵給腳本結點賦類型。
9--如果你想增加另外一個腳本結點,點擊New Script Node鍵。
Script窗口和Script Node Name框被清除,你可以輸入一個新的腳本結點。