命令语法

 
 
 

MEL 包含使用 Maya 全部功能的各种命令。关于使用 MEL 命令的典型示例包括:快速创建对象、精确移动对象,以及更高效地使用对象等。

例如,可以使用 MEL 命令创建一个名为 bigBoy 的、半径精确到 27.5 个单位的球体:

sphere -radius 27.5 -name "bigBoy";

然后,可以输入该 MEL 命令,让 bigBoy 绕 Z 轴旋转 90 度:

rotate -relative 0 0 90 "bigBoy";

另外,如果要创建带关节工具的关节,并希望该关节沿 X 轴方向移动 5 个单位,可以执行下列 MEL 命令,而无需中断关节创建:

move -relative 5 0 0;

按照惯例,在指定名称的情况下,大多数命令将在对象上操作,否则就会在当前选择上操作。

有两种方式来使用 MEL 命令:强制性语法和函数语法。

强制性语法

强制性命令语法类似于 UNIX 或 DOS 壳中的命令,在命令名称后可增加可选标志及参数:

sphere -name "martha" -radius 10;

强制性样式要求使用完整语句,应当以分号结尾。如果使用命令的强制性语法作为表达式的一部分,需要在命令外增加反引号。请参见下面的使用返回值:函数语法和反引号

未加引号的字符串

当使用该强制性命令语法时(与下面介绍的函数语法相反),可选择在单字字符串周围去掉引号。因此,可编写如下的球体命令:

sphere -name martha -radius 10;

脚本中经常会出现这样的命令,特别是只有一个单词的节点和属性名称等字符串。但初学者可能希望避免使用该功能,因为这会减弱字符串与关键字和命令的区别。

函数语法

函数语法类似于计算机语言中的标准函数调用。

强制性语法 函数语法
attributeExists visibility mySphere;
attributeExists("visibility","mySphere");
abs -50;
abs(-50);

标志

标志用于修改命令的工作方式。标志出现在命令名称后,前面是一个破折号 (-),后面是一个参数。

sphere -radius 5;

在本示例中,radius 标志的参数是 5。

创建、编辑和查询模式

许多命令都具有基于一对特殊标志(-edit-query)的不同行为。

sphere -name "george";
sphere -edit -radius 10 "george";
sphere -query -radius "george";
// Result: 10 //

每个命令的“Maya 帮助”(Maya Help)中均列出了可用于创建、编辑和查询模式的标志。

使用返回值:函数语法和反引号

使用命令的函数语法时,该命令将返回一个值。使用强制性语法时,命令只将其返回值传送到“脚本编辑器”(Script Editor),而不提供可用的返回值。在表达式中使用强制性语法将导致语法错误:

if (size($word)) print("Not empty.\n");
// Function syntax of size returns a value.
// This is OK.
if (size $word) print("Not empty.\n");
// Can't use imperative 
// This is a syntax error.

若要在表达式中使用强制性命令语法,必须在命令周围使用反引号:

if (`size $word`) print("Not empty.\n");

用户会经常通过反引号在表达式内的查询模式中使用命令的返回值:

if (`sphere -query -radius "mySphere"` == 5)
	print("This sphere has a radius of 5!";