可以通过选择Window > General Editors > Script Editor或者点击Maya窗口右下部的Script Editor图标打开脚本编辑器。 脚本编辑器提供以下菜单选项:
Open Script--打开脚本程序
Source Script--把一个脚本程序文件作为源文件 Save Selected--保存脚本程序 Execute--执行脚本程序 Clear History--清除历史 Clear Input--清除输入
Echo All Commands--返回所有指令的返回值 Show Line Numbers--显示行号 Show Stack Trace--显示堆栈跟踪 编辑命令
下表列出了在脚本编辑器中有效的键盘命令。(在表达式编辑器和一些输入框中它们也是有效的。) 命令 定义 平台
Ctrl+c Copy IRIX、Windows Ctrl+x Cut IRIX、Windows Ctrl+v Paste IRIX、Windows Ctrl+k 删除到本行末 IRIX Ctrl+d 删除下一个字符 IRIX Ctrl+a 移动光标到行首 IRIX Ctrl+e 移动光标到行末 IRIX
Ctrl+a 选择编辑框中的所有文字 Windows 2、打开一个脚本程序
我们可以打开一个脚本程序以便检查、执行或找出它的问题。打开一个脚本程序时并不执行它。 只是在脚本编辑器的输入栏里简单地把它显示出来。
要执行显示在脚本编辑器的输入栏里的一些或者全部脚本程序,可以用鼠标选择它,然后按键盘的数字Enter键。
当你想把一些或者全部内容拖拉到柜架上并在那里产生一个图标时,打开一个脚本程序就是非常有用的。 可以点击该图标执行这个程序。 为了打开一个脚本文件:
1--从脚本语言编辑器中选择File > Open Script。出现一个文件浏览器。 2--选择要打开的脚本文件。 把一个脚本程序作为源文件
把一个MEL脚本程序文件作为源文件,执行所有的MEL指令并声明包含在该脚本程序文件中的所有的全局过程。
如果你在一个脚本程序文件中修改了一个程序,Maya 并不把这个改变登记给该程序,直到你把它的程序文件作为源文件。
这是因为Maya把执行了的程序保存到了存储器中。当你把一个脚本程序文件作为源文件时,Maya再次读该脚本程序文件里的那个程序。 为了把一个脚本程序作为源文件:
1--从脚本语言编辑器中选择File > Open Script。出现一个文件浏览器。 2--选择要打开的脚本文件。
6
把一个脚本程序作为源文件之后,该文件里的所有MEL指令会执行。该脚本程序中的所有全局过程会被声明,但并不被执行。
MEL指令是按照它们出现在文件中的顺序执行的,并且应当没有错误。如果产生了一个错误,执行会中断并不再装载更多的程序。
当你把一个MEL脚本程序作为源文件之后,不声明或者不执行局部过程。
但是,如果你是通过在脚本编辑器或指令行里输入而声明了一个局部过程,该过程会被声明为全局过程,你可以在任何时候执行它。
执行一个程序可以通过执行一个MEL指令实现。当你想把一个脚本程序作为源文件,并具有执行该文件中的程序的作用时,这是很有用的。
为了这样做,要首先声明该程序,然后声明通过一个文件浏览器执行该程序的指令。 4、保存脚本文字
使用File > Save Selected指令从脚本编辑器保存脚本文字。可以从指令输入(底部)将文字高亮化, 也可以通过脚本编辑器的状态信息(顶部)部分。Maya 将会把高亮的文字部分保存到你说明的目录里的一个 .mel 文件中。 5、执行一个脚本程序
当你想执行一个预先已经源化了的脚本程序时,可以在脚本编辑器的指令输入栏(底部)输入该程序的名字,然后进行下面工作中的一种:
按 Ctrl + Enter 键;或者按数字键盘的 Enter 键;或者 从脚本编辑器里选择 Edit > Execute。 也可以使用这些指令执行一个在脚本编辑器里已经打开了的脚本程序的定义。如果MEL脚本定义没有出现失败,
则该定义是从脚本编辑器的底部移到顶部。否则该定义不会移动,并且在顶部会显示出一个错误信息。 提示:
可以首先选取MEL script的一部分然后只执行这一部分(Ctrl+Enter)。 它不会删除其它部分。 6、清除状态信息
要清除状态信息(脚本编辑器的顶部),从脚本编辑器里选择Edit > Clear History。这将会删除掉所有的状态信息文字。
使用这个指令时应当小心一些,因为没有办法撤消它。 7、清除指令输入
要清除指令输入文字(脚本编辑器的顶部), 从脚本编辑器里选择Edit > Clear Input。这将会删除掉所有的指令输入文字。
使用这个指令时应当小心一些,因为没有办法撤消它。 8、响应一个指令
当你用Maya工作时,对应的MEL指令常常出现在脚本编辑器的顶部。缺省情况下,只有那最重要的指令才会显示。
你可以在脚本编辑器里选择Edit > Echo All Commands ,虚拟地显示与你的Maya作用相关的所有指令。
它可以帮助你学习哪些MEL指令触发作用。
在你的Maya的作用之间并不是总有一对一的对应关系,这些指令返回响应到脚本编辑器里。
如果你使用一个脚本程序去打开属性编辑器,一些MEL指令出现在脚本编辑器里(响应是打开的): buildObjectEdMenu MayaWindow│menu4│menuItem56; editSelected;
editMenuUpdate MayaWindow│menu2;
但是,只有以下的MEL指令需要引入属性编辑器: editSelected;
7
同时,对于一些作用来说,也不总是会将MEL指令的响应返回到脚本编辑器里。如,当你选择了一个属性编辑器时,
脚本编辑器的顶部没有返回任何信息。
要关闭返回信息,从脚本编辑器里再次选择 Edit > Echo All Commands。 9、显示程序中的语句行号
如果你在执行一个长的程序时由于错误而出现了问题,可以打开脚本程序的行号,你就可以更容易地找到错误。
要显示错误指令的行号,从脚本编辑器里选择Edit > Show Line Numbers。当你打开了Show Line Numbers选项,
Maya 在脚本编辑器状态信息框(顶部)的旁边显示脚本程序的行号。 要关掉行号,在脚本编辑器菜单里再次选择Edit > Show Line Numbers。
Maya将显示行号的设置保存下来作为以后使用。如果打开了行号,当下一次你运行Maya时它们会出现在脚本编辑器里。 10、显示堆栈跟踪
如果你用埋入的脚本程序文件执行一个脚本程序时出现了问题,打开堆栈跟踪选项显示文件结构中的脚本程序错误。
要显示一个脚本文件的堆栈跟踪,在脚本编辑器里选择Edit > Show Stack Trace。Maya会在一个窗口里显示堆栈跟踪,在脚本编辑器里显示一个错误信息。
使用脚本语言结点
一个脚本语言结点是一个包括了一个MEL脚本语言程序的结点。
当该结点产生或者当该结点被破坏时,该程序被执行,它取决于脚本结点的类型。
本章包括以下内容:1、了解脚本语言结点;2、产生脚本语言结点;3、测试脚本语言; 4、编辑脚本语言结点; 5、设立脚本语言结点的执行;6、删除脚本语言结点。
1、了解脚本语言结点
脚本语言结点是把一个MEL脚本语言程序存储到一个Maya场景文件中的一种方法。
脚本语言结点也包含了用于产生用户界面的所有MEL指令,并被用MAYA文件保存。 你可以用不同的方法执行脚本语言程序。可以指明一个脚本程序结点执行它的程序: 当该结点是从一个文件中读出的; 在渲染一桢图像的之前或者之后; 在渲染一个动画的之前或者之后。
当一个文件关闭着时使用File > Open或者File > New 一个脚本语言程序结点有三个属性:
Before、After和Type。决定于脚本程序的类型,当执行该程序时,说明Before和After属性。
2、产生脚本语言结点
可以使用表达式编辑器产生脚本语言结点。
为了产生一个脚本语言结点: 1--选择Window > Expression Editor。
2--在Expression Editor中选择Select Filter > By Script Node Name。 任何现存的Script Nodes显示在Script Nodes表中。 3--在Expression Editor的Script window中输入脚本程序。 4--在Script Node Name框中输入一个名字。
5--定义你想要使脚本成为一个之前或者之后的脚本程序。 6--点击Create键。
这产生脚本结点。现在你可以定义它的类型。
8
7--从Execute On 下拉菜单里选择以下的一个脚本程序结点类型:
Demand
当你使用scriptNode指令,隐含地需求它时,运行脚本文件(看在线指令文件的scriptNode指令的信息)。忽略这种类型的脚本文件的之前和之后的属性。
Open/Close
如果你已经指定了该脚本文件作为之前的脚本文件,当以批处理模式读文件时脚本被执行。如果你把
它作为之后的脚本文件,当文件被关闭或者没有以图示用户界面模式提供,或者当该结点被删除时,它被执行。
GUI Open/Close
如果你已经指定了该脚本文件作为之前的脚本文件,当以图示用户界面模式运行MAYA,在读文件时脚
本文件被执行。如果你把它作为之后的脚本文件,当文件被关闭,或者没有以图示用户界面模式提供,或者当该结点被删除时,它被执行。
UI Configuration (内部)
之前的脚本文件包括了用户界面设置的信息。它是由Maya或者一个plug-in为了保存面板排列和编
辑状态信息而自动的产生的。当你打开一个文件时,这个脚本结点执行它的脚本文件。在执行之后,该结点被删除掉。之后的脚本是不会运行的。如果一个文件被提供或被输入,这个结点将会不存在。
软件渲染
如果你选派好脚本作为之前的脚本,脚本的执行在一个动画之前被渲染。如果你选派好脚本作为之后的脚本,脚本的执行在一个动画之后被渲染。
软件桢渲染
如果你选派好脚本作为之前的脚本,脚本的执行在一个桢之前被渲染。如果你选派好脚本作为之后的
脚本,脚本的执行在一个桢之后被渲染。 8--点击Edit键给脚本结点赋类型。
9--如果你想增加另外一个脚本结点,点击New Script Node键。
Script窗口和Script Node Name框被清除,你可以输入一个新的脚本结点。
3、测试脚本程序
可以使用表达式编辑器对脚本程序进行测试。 为测试一个脚本程序:
1--选择Window > Expression Editor。
2--在表达式编辑器中选择Select Filter > By Script Node Name。 3--在Script window中输入脚本程序,或从Script Nodes 表中。 4--点击Test Script键。 错误显示在脚本语言编辑器中。
4、编辑脚本语言结点
可以使用表达式编辑器对脚本语言结点进行编辑。
为了对脚本语言的编辑定义一个编辑器: 1--选择Window > Expression Editor。
2--在表达式编辑器中选择Select Filter > By Script Node Name。 3--从编辑器下拉菜单中选择一个编辑器。 为了编辑一个脚本语言结点: 1--选择Window > Expression Editor。
2--在表达式编辑器中选择Select Filter > By Script Node Name。 3--选择你想在Script Nodes list中要编辑的脚本语言结点。 4--在Script window中编辑该脚本语言结点。
9
5--如果你想撤消你的改变,点击Reload。Maya重装原来的脚本语言结点。 6--为了清理Script window,点击Clear键。
5、设立脚本语言结点的执行
为了设立脚本语言结点的执行:
1--选择File > Open Scene。或选择File > Open然后在Open Scene window中点击Options。 2--点击复选框将Execute Script Nodes打开或者关闭。
6、删除脚本语言结点
可以使用表达式编辑器删除脚本语言结点。
为了删除一个脚本语言结点: 1--S选择Window > Expression Editor。
2--在表达式编辑器中选择Select Filter > By Script Node Name。 3--选择你想在Script Nodes list中要删除的脚本语言结点。 4--点击Delete按键。
定义数据
本章描述MEL的数据类型它们之间的转换:1、变量;2、常数;3、数据类型转换;4、限制。 1、变量
所有变量名以$开始。变量名不包括空格和特殊字符。你可以使用下划线和数字作为变量名但开头不能是数字。
识别大小写,如$temp不同于$Temp。 例:
int $radical7Mark; // 有效 int HEYchief; // ERROR: 开头缺\int $ nine; // ERROR: 开头不是\int $_VAL_ID___AIT_; // 有效
int $howdyYa`ll; // ERROR: 含有无效字符 int $1Bill; // ERROR: 开头不能是数字 有以下五种变量类型: 类型 意义 例子
int 整数 (...-2, -1, 0, 1, 2...)10, -5, 和 0 float 小数 392.6, 7.0, and -2.667
string 一个或更多的字符 \vector 三个浮点数 <<3,?7.7,?9.1>>
matrix 浮点数阵列 <<1.1, 2, 3; 6.7, 5, 4.9>>
以上类型除matrix外,都可以是一个阵列。如,一个三元素的整数阵列是一个跟一个的三个整数。 声明和标注变量
声明一个变量是说明变量的名字和类型;标注一个变量是给已生命的变量一个专有的值。下例是将声明和标注合为一步: int $temp = 3;
float $Temp = 222.222; string $tEmp = \vector $teMp = <<1, 2.7, 3.2>>;
matrix $temP[2][3] = <<4.5, 1, 0.2; -13, 9911, 0.007>>; 当生命矩阵变量时,必须包括二维阵列的尺寸。
10