
二、MEL要点 top
使用MEL的要点包括了使用MEL指令和产生MEL程序。本章包括以下内容:指令、程序、Maya Gems共三个部分。本期介绍MAYA脚本语言MEL的指令。分为以下三个部分:1、了解指令;2、MEL指令文件;3、使用指令。
1、了解指令
MEL包括了涉及使用Maya的所有方面的全范围的指令。使用MEL指令的一些典型的例子包括快速产生物体、精确移动物体和对物体进行更有效的控制。如,可以使用下述的一个MEL指令产生一个半径准确的为27.5 单位的叫做 bigBoy 的一个球体:sphere -radius 27.5 -name bigBoy;随后你还可以再输入一条MEL指令将bigBoy绕Z轴旋转90度:rotate -r 0 0 90 bigBoy; 另一个例子,假定你在用结点工具产生一个结点,你想把这个结点沿着X轴方向移动5个单位。你可以执行以下的MEL指令,而不需要打断结点的产生:move -r 5 0 0。
2、MEL指令文件
Maya的在线库(Online Library)描述了每一条指令,提供了用法、格式、返回值和例子的信息。MEL的指令参考在线文件(Command Reference online documentation)提供了以字母顺序排列的指令,也以功能方式加以组织。
3、使用指令
包括内容有:输入指令、使用指令行、获得指令返回值、指令模式和指令在表达式中。
⑴、输入指令
Maya提供了一些输入MEL指令的方法;使用脚本语言编辑器(Script Editor)或者指令行(Command Line)是最常用的方法。你也可以在脚本程序文件、Maya ASCII(.ma)文件、工具柜图标(shelf icons)、热键以及表达式中执行指令。但是最常用的还是在脚本语言编辑器中输入指令。
无论如何输入指令,所有的MEL指令必须用一个分号结束。以下是MEL 指令的一些例子:
sphere -name roundy;
setAttr roundy.translateX 7;
whatIs ls;
help ls;
ls -typ nurbsSurface;
⑵、使用指令行
可以使用指令行输入MEL指令。如果指令行没有出现,在MAYA主菜单中选择Options > Command Line使指令行出现。虽然在指令行和脚本语言编辑器中都可以输入指令,但两者之间有一些重要的区别:
你可以从指令行,使用数字键盘或字符键盘的Enter键输入指令。而脚本语言编辑器只能用数字键盘的Enter键。指令行只有一行,执行一个MEL指令。为了输入更多的MEL指令,指令之间可以?quot;;"分开。
指令行仅将结果的最后一行显示到右边。而脚本语言编辑器显示所有的结果。
⑶、获得指令返回值
Many MEL指令返回一个值。为了抓取这个返回值,可以用单引号或者eval指令。
使用单引号获得指令返回值,用单引号"`"将指令前后标注出来可以返回指令的输出。随后你可以把这个输出赋给一个变量并在脚本语言编辑器中显示它。
例:
string $a[];
$a = `particle -p 5 0 5 -name Sun`;
print($a);
第一条语句定义了一个名为$a的阵列。第二条语句执行引号中的MEL指令,并把指令的输出赋给$a。第三条指令把$a的内容显示给脚本语言编辑器,如下:
Sun
SunShape
可以对任何一个MEL指令保存和显示其结果。返回值的类型是由你使用的指令决定的。在以上例子中,粒子命令返回一个字符串阵列。所以,等式左边的变量符号也须要是接受这个返回值的字符串阵列的类型。
使用eval指令获得指令返回值
eval指令执行一个命令,也让你抓取返回值。它比起单引号有一个优点,因为你可以从一个字符串建立一个指令。象单引号方式那样,也可以把输出赋给一个变量并显示它。
例 :
string $command = "sphere";
eval($command + " -r 5");
第一条语句把字符串sphere标注给变量$command。第二条指令给字符串sphere添加 -r 5,并执行完整的指令sphere -r 5。它产生一个半径为5个格子单位的球体。
有关eval指令的更多的信息,见掌管指令的在线文件。
⑷、指令模式
MEL指令选项典型地在以下一种或多种模式中起作用:query、编辑和产生。Query模式是用于找出一些事件的值;编辑模式是用于改变一些事件的值;产生模式是产生一些事件。在在线MEL指令参考中,指令选项的描述包括一个Q、E或C以指示query模式、编辑模式、产生模式。
⑸、指令在表达式中
可以在一个表达式中执行MEL指令和序列。但是,如果你执行以下的指令你的场景会产生故障:断开或连接属性删除或产生物体或者其他项,在一个表达式中播放你的动画不会撤消MEL指令的执行。例如,如果你的表达式执行MEL指令产生了一对球体,播放这段动画时并不删除原来的球体。再次播放该场景时会产生另一对球体。
不过你可以通过选择Edit > Undo撤消MEL指令,但是如果你的场景有故障时,它将会不工作。还要注意,你可以只撤消Queue尺寸的设置所允许的许多运算。为设立Queue 尺寸,选择Options > General Preferences。
当你从指令行执行一个指令时,状态信息出现在脚本语言编辑器中和指令行的响应区域里。当在一个表达式中执行指令时,不显示这个信息。 关于表达式的更多的内容,请参考Using Maya: Expressions。
评论加载中…