當前位置:編程學習大全網 - 編程語言 - maya中的mel是什麽啊?

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函數命令。

  • 上一篇:如何用VB實現直接發送郵件?
  • 下一篇:unix是什麽樣的操作系統?
  • copyright 2024編程學習大全網