數碼資源網

文章頻道 軟件下載 安卓下載 蘋果下載

當前位置:首頁文章中心建模專欄Maya → mel語初解之一

mel語初解之一

時間:2005-07-29 10:36:46人氣:208作者:網友整理
東航MEL手冊管理係統v1.4.5
東航MEL手冊管理係統v1.4.5 for Android
  • 類型:安卓學習閱讀大小:17.60M語言:簡體中文 評分:3.1
  • 東航MEL手冊管理係統是一款專用於中國東方航空公司的培訓學習軟件,員工可以通過這...
立即下載
微信猴語輸入法安卓版(微信猴語怎麼打) v1.1 最新版
微信猴語輸入法安卓版(微信猴語怎麼打) v1.1 最新版 for Android
  • 類型:安卓輸入法大小:24.46M語言:簡體中文 評分:3.0
  • 微信猴語怎麼打?不知道微信猴語怎麼弄的朋友可以把這款微信猴語輸入法安卓版下載回去...
立即下載
仙寵物語安卓apk(回合製戰鬥) v1.0 免費版
仙寵物語安卓apk(回合製戰鬥) v1.0 免費版 for Android
  • 類型:角色扮演大小:60M語言:簡體中文 評分:3.0
  • Q萌畫風的回合製戰鬥,讓各位輕鬆在仙寵物語安卓apk中創造屬於自己的神話,寵物手...
立即下載

來寫一點mel掃盲教程,主要是針對初學Maya的人,如果你已經學了一個月以上的Maya,那你就可以學習這篇mel教程了。不一定要等到Maya掌握的非常熟練才去學mel,相反,如果你在初學Maya的時候就對mel有所了解,那對於將來更好的了解和掌握Maya會起到事半功倍的效果

當然首先要提到的是mel的基本概念,如下:
mel是Maya Embedded Language(Maya內置語言)的縮寫,是一種強大的命令和腳本語言,讓你直接控製Maya的特征、進程和工作流程。

其次要提到的是應該抱怎樣的態度:
有許多人認為mel比較難,我的看法是並不比遊戲攻關難,在網上經常看到有人為攻一關花掉一個月時間,學mel如果能達到這個境界一定會很了不起。學mel的確可能會枯躁一些,因為找不到像CS那麼多人給你去殺。
mel是個可大可小的東西,如果你不是搞程序開發的,應該盡可能的讓mel給你節省時間,而不要在學習和編寫mel程序上花太多時間,應盡量編寫簡單且實用的程序。不要因為盲目追求高深的技術而耽誤了您泡MM的寶貴時間
我的教程也是針對這一點寫的,如果你已經做好了準備,就和我一起進入mel的世界吧。

今天要講的是命令組合。
打開Maya,在命令行(Command Line)輸入"cone"並按回車,視圖中創建了一個圓錐。
如果你沒有看到命令行,用Display->UI Elements->Command Line來顯示它。
你也許會問用命令行創建圓錐跟用菜單創建有什麼差別。我來告訴你,隻是形式上的差別,本質上菜單和命令行都是在執行mel命令,可以說你在Maya中的一舉一動都是在執行mel命令。

現在打開mel編輯器(Script Editor),mel編輯器分兩部分,上麵是曆史窗,下麵是編輯窗。
曆史窗顯示你剛剛執行的命令和命令的結果或錯誤信息。
編輯窗可以輸入命令,而且可以輸入多行命令,但每個MEL 命令之後必須以分號結束。
選擇mel編輯器的菜單Edit->Clear History,把曆史窗清潔一下。

在編輯窗輸入"cone -ax 0 1 0 -r 1;"並按Ctrl+Enter或數字鍵那邊的Enter,視圖中創建了正立的一個圓錐。再看曆史窗,多了兩行,第一行是剛剛執行過的命令,第二行是命令的返回值(Return Result)。我明天會著重講返回值,今天先來解釋一下標誌(Flag)。
剛才那個"-ax"和"-r"就是"cone"命令的標誌,一般一個標誌分長短兩種寫法,比如"-r"和"-radius"就是同一個標誌,寫哪個都行。長標誌看起來比較清楚,而短標誌寫起來比較方便。因此,對於你比較熟悉的標誌,盡量用短標誌,不熟悉的就用長標誌。
改一下"cone"命令"-r"後麵的數值,比如改成"cone -ax 0 1 0 -r 3"再執行,發現創建出的圓錐半徑變大了,由此你可知道-r/-radius是控製圓錐半徑的。

當然"cone"命令還有很多標誌,要深入了解這個命令,最好的辦法是看幫助文檔,Maya為此專門提供了一個mel命令(就是help命令)來快速察看幫助。執行"help -doc cone",就可以打開cone命令的幫助文檔。
要想看到所有mel命令的幫助,選擇Maya菜單Help->MEL Command Reference...
Maya的幫助文檔中一共收錄了將近一千條mel命令,聽起來很恐怖吧。不過沒關係,要想在惡劣的環境下自在的生存,首先要學會對困難視而不見。看幫助時按分類(Categories)去看,隻要翻翻你感興趣的幾個分類就行了,如果你都不感興趣,就都不要看了,等用到了再去翻也不遲。

現在擺在你麵前的一個嚴峻的問題就是你怎樣從這近一千條mel命令找到你想要的那條命令。別怕,你雖然不熟悉mel,但你還不至於不熟悉Maya的菜單吧。選擇Create->NURBS Primitives->Cone來創建一個圓錐,這時你會發現mel曆史窗中多了一行命令,其中"cone -p 0 0 0 -ax 0 1 0 -ssw 0 -esw 360 -r 1 -hr 2 -d 3 -ut 0 -tol 0.01 -s 8 -nsp 1 -ch 1;"就是一個完整的創建圓錐的命令。在命令行執行一下這句命令,會發現可以得到跟菜單相同的結果。有了這種方法,就不用為你掌握的mel命令太少而犯愁了。

你也許已經意識到得到每一步操作的命令意味著什麼了,就是可以把這些命令寫在一起,然後一下子執行,就像Office裏的宏和PhotoShop裏的Actions一樣。好,那就開始吧。

現在Maya雖然已經支持默認燈光渲染了,不過我們建模時經常還是會打一盞燈來觀察一下效果。具體過程是先創建燈光,再把它移動到一個合適的位置,然後旋轉一下角度,然後還要調整亮度。如果你經常要打燈光觀察模型,你一定希望點一個按鈕來完成這一切,我們的實例1就來解決這個問題吧。
------------------------------------------------------
實例1:擺放燈光
首先清潔一下mel曆史窗準備記錄命令。
選擇Create->Lights->Directional Light創建一盞直射燈,把直射燈往左後方移動一下,再旋轉一下使它的方向指向視圖中心,Ctrl+a打開屬性編輯器,把燈光的屬性(Intensity)改為1.2。
這時再看看mel曆史窗,多了類似如下幾行:
defaultDirectionalLight(1, 1,1,1, "0", 0,0,0);
move -r -5.393374 -0.124913 3.360977 ;
rotate -r -os -33.086209 0 0 ;
rotate -r -os 0 -24.179269 0 ;
setAttr "directionalLightShape1.intensity" 1.2;

把這幾行字都選中,用鼠標左鍵拖放到Shelf工具條上,會發現Shelf上多了一個mel圖標。
新建一個文件,按一下這個mel圖標,你會發現你成功了。

一般用戶編寫的常用的mel程序都是放在Shelf裏的,因此你需要對Shelf了解一下。鼠標左鍵在Shelf左下角的三角形那裏按下,在下拉菜單選擇Shelf Editor...打開Shelf編輯器。
關於Shelf編輯器的我就不多講了,你自己瞎按一會兒也會弄明白的。我要說的是既然你已經開始學mel了,要那麼多亂七八糟的Shelf也沒什麼用,你可以隻留一個General,其它的都刪掉,然後新建一個Shelf,名為myTools。
注意我所說的這些操作都是在Shelf編輯器中進行的,不要跑到"你的文檔\maya\5.0\prefs\shelves"那裏去刪Shelf,否則再啟動Maya時那些Shelf會死而複生的。
更改Shelf圖標也在Shelf編輯器中,你可以把那個難看的mel圖標換成你喜歡的美女。
看看好萊塢人用的Maya工作界麵,都是自己定製的Shelf,我們別的地方不如人家,這一點還是可以跟人家很像的。

現在來解釋一下剛才的幾句命令。憑你對英文的理解,其實也能猜到這幾句的意思吧。

"defaultDirectionalLight"就是創建一盞直射燈。
"move"就是移動,"-r/-relative"是經常用到的,意思是相對於物體當前的位置。
例如"move -r 1 0 0;"是說把物體沿X軸移動一個格子,而"move 1 0 0;"是說把物體的"translateX"屬性設為1,"translateY"和"translateY"屬性設為0。
"rotate"用了兩次,就是旋轉了兩次,看一下右邊通道框裏的旋轉數值,你可以把這兩句並作一句,就是"rotate -35.534708 -20.070585 13.771703;"。"-os"是指物體坐標軸,相對"-ws"於世界坐標軸而言的。要想讓物體沿世界坐標軸旋轉,雙擊旋轉工具圖標打開工具設置窗,把Rotate Mode由Local改為Global即可。
"setAttr"是設置屬性,這可是一個關鍵性的命令,需要重視起來。

對於屬性你一定不會陌生的,它是設動畫的關鍵。屬性可以在屬性編輯器(Attribute Editor)和通道框(Channel Box)中修改,也可以用mel的"setAttr"直接修改。物體屬性的寫法是物體名+"."+屬性名(object.attribute),屬性名同mel標誌一樣有長短兩種寫法。選擇通道的菜單Channels->Channel Names->...可以切換長短名的顯示,平常看到的那個"Nice"名隻是為了好看,在mel和表達式中都不中用。
了解屬性對於我以後要講到的表達式有決定性的意義,表達式就是通過對物體的屬性與時間之間、屬性與屬性之間建立某種運算關係來控製動畫的。

根據前麵的說法,"move 1 0 0 nurbsCone1;"同樣可以寫成:
setAttr "nurbsCone1.translateX" 1;
setAttr "nurbsCone1.translateY" 0;
setAttr "nurbsCone1.translateZ" 0;
或:
setAttr "nurbsCone1.tx" 1;
setAttr "nurbsCone1.ty" 0;
setAttr "nurbsCone1.tz" 0;

最後讓我們來編一個比較實用的mel命令組合吧。
------------------------------------------------------
多邊形人頭建模時,一般是先建一半臉,建好後再鏡像,再圓滑一下。
你建一半臉的時候,很難想像出鏡像圓滑後整張臉的樣子吧。你現在學會了mel命令組合,可以實現點一個按鈕來完成鏡像和圓滑了,這樣你可以在建模的過程中預覽一下完成的效果。這樣有用的程序後麵還要繼續完善下去,先給它起個形象的名字叫myFullMoon(月圓),版本訂為1.0。
------------------------------------------------------
實例2:myFullMoon1.0
打開你的半邊臉文件,為了在操作過程中減少不必要的麻煩,我們先來把模型規範化一下:
如果你的模型是右半臉,把它改成左半臉。要保證你能在前視圖看到模型的正麵臉,側視圖看到側麵臉,頂視圖看到頭頂。把模型放到視圖中心線的左邊。選中模型,選擇Modify->Center Pivot,選擇Modify->Freeze Transformations,選擇Display->Component Display->Backfaces不顯示背麵,如圖,記住你的模型寬度是幾個格子。別忘了把mel曆史窗打掃幹淨。
規範好了,就存一下盤。

選中模型,現在可以開始記錄命令了。
選擇菜單Edit Polygons->Extrude Face。
mel曆史窗記錄了四行命令,你要知道的是隻有一行是對你有用的。想知道為什麼?你把每行命令單獨試試就知道了,隻有
polyExtrudeFacet -ch 1 -kft 0 -pvx -3.926295877 -pvy -1.118658066 -pvz 4.649739981 -tx 0 -ty 0 -tz 0 -rx 0 -ry 0 -rz 0 -sx 1 -sy 1 -sz 1 -ran 0 -divisions 1 -off 0 -ltz 0 -ws 0 -ltx 0 -lty 0 -lrx 0 -lry 0 -lrz 0 -lsx 1 -lsy 1 -lsz 1 -ldx 1 -ldy 0 -ldz 0 -w 0 -gx 0 -gy -1 -gz 0 -att 0 -mx 0 -my 0 -mz 0 polySurface1.f[0:682];
這句可以擠出麵。

現在要在通道框裏改幾個屬性,Keep Face Tog屬性改為on,Scale X為-1,Translate X為模型寬度的負值(我的是-7.5)。
曆史窗多了三行有用的命令:
setAttr "polyExtrudeFace1.keepFacesTogether" on;
setAttr "polyExtrudeFace1.translateX" -7.5;
setAttr "polyExtrudeFace1.scaleX" -1;

現在你可以看出來模型麵的法線反了,好,把它正過來。按F8回到物體選擇模式,選擇Edit Polygons->Normals->Reverse。
這回你該從這幾行命令中看出有用的命令了:
polyNormal -normalMode 0 -ch 1 polySurface1.f[0:1449];

下一步是Polygons->Smooth,找到這句命令:
polySmooth -mth 0 -dv 1 -c 1 -kb 1 -ksb 1 -khe 0 -kt 1 -sl 1 -dpe 1 -ps 0.1 -ro 1 -ch 1 polySurface1.f[0:1449];

最後是取消模型的選擇:
select -cl ;

好了,操作結束。來整理一下有用的命令吧,結果如下:
polyExtrudeFacet -ch 1 -kft 0 -pvx -3.926295877 -pvy -1.118658066 -pvz 4.649739981 -tx 0 -ty 0 -tz 0 -rx 0 -ry 0 -rz 0 -sx 1 -sy 1 -sz 1 -ran 0 -divisions 1 -off 0 -ltz 0 -ws 0 -ltx 0 -lty 0 -lrx 0 -lry 0 -lrz 0 -lsx 1 -lsy 1 -lsz 1 -ldx 1 -ldy 0 -ldz 0 -w 0 -gx 0 -gy -1 -gz 0 -att 0 -mx 0 -my 0 -mz 0 polySurface1.f[0:682];
setAttr "polyExtrudeFace1.keepFacesTogether" on;
setAttr "polyExtrudeFace1.translateX" -7.5;
setAttr "polyExtrudeFace1.scaleX" -1;
polyNormal -normalMode 0 -ch 1 polySurface1.f[0:1449];
polySmooth -mth 0 -dv 1 -c 1 -kb 1 -ksb 1 -khe 0 -kt 1 -sl 1 -dpe 1 -ps 0.1 -ro 1 -ch 1 polySurface1.f[0:1449];
select -cl ;

把這幾行命令都選中,用鼠標左鍵拖放到Shelf工具條上,Shelf上出現mel圖標。重新載入模型文件,按一下這個mel圖標,你又一次成功了

對Maya熟悉一點的人會覺得那三個setAttr用的很愚蠢,因為完全可以在polyExtrudeFacet命令的標誌中解決問題。

其實我們的第一步隻是要求做到,第二步才是要求做好。以下是簡化過的結果:
polyExtrudeFacet -ch 1 -kft 1 -pvx -3.926295877 -pvy -1.118658066 -pvz 4.649739981 -translateX -7.5 -ty 0 -tz 0 -rx 0 -ry 0 -rz 0 -scaleX -1 -sy 1 -sz 1 -ran 0 -divisions 1 -off 0 -ltz 0 -ws 0 -ltx 0 -lty 0 -lrx 0 -lry 0 -lrz 0 -lsx 1 -lsy 1 -lsz 1 -ldx 1 -ldy 0 -ldz 0 -w 0 -gx 0 -gy -1 -gz 0 -att 0 -mx 0 -my 0 -mz 0 polySurface1.f[0:682];
polyNormal -normalMode 0 -ch 1 polySurface1.f[0:1449];
polySmooth -mth 0 -dv 1 -c 1 -kb 1 -ksb 1 -khe 0 -kt 1 -sl 1 -dpe 1 -ps 0.1 -ro 1 -ch 1 polySurface1.f[0:1449];
select -cl ;

關於使用mel命令組合的方法,最後要提到一點,如果你執行命令時發覺mel曆史窗沒有變化,可以在mel編輯器勾選Script->Echo All Commands。一般我們不需要顯示那麼多命令,因為很多對我們沒用,所以不選Echo All Commands。

相關文章

感謝速聯科技、八度網絡、九九數據、億恩科技、群英網絡讚助部分帶寬!

關於本站 | 聯係方式 | 版權聲明 | 下載幫助(?) | 網站地圖

Copyright 2002-2020 95262.com 【數碼資源網】 版權所有 粵ICP備2020128507號-1

本站所有軟件來自互聯網,版權歸原著所有。如有侵權,敬請來信告知 ,我們將及時撤銷。