王朝百科
分享
 
 
 

MEL

王朝百科·作者佚名  2009-10-24  
宽屏版  字体: |||超大  

MEL (Maya埋入式语言)为Maya提供了基础。Maya界面的几乎每一个要点都是在MEL指令和脚本程序上建立的。由于Maya给出了对于MEL自身的完全的访问,你可以扩展和定制Maya。通过MEL,你可以进一步开发Maya使它成为你和你的项目的独特而创新的环境。

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程序和执行用户建模、动画、动态和渲染任务的脚本程序。

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

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格&#8203;十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有