maya脚本教学教材Word文档下载推荐.docx
《maya脚本教学教材Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《maya脚本教学教材Word文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。
分为以下三个部分:
1、了解指令;
2、MEL指令文件;
3、使用指令。
1、了解指令
MEL包括了涉及使用Maya的所有方面的全范围的指令。
使用MEL指令的一些典型的例子包括快速产生物体、精确移动物体和对物体进行更有效的控制。
如,可以使用下述的一个MEL指令产生一个半径准确的为27.5单位的叫做bigBoy的一个球体:
sphere-radius27.5-namebigBoy;
随后你还可以再输入一条MEL指令将bigBoy绕Z轴旋转90度:
rotate-r0090bigBoy;
另一个例子,假定你在用结点工具产生一个结点,你想把这个结点沿着X轴方向移动5个单位。
你可以执行以下的MEL指令,而不需要打断结点的产生:
move-r500;
2、MEL指令文件
Maya的在线库(OnlineLibrary)描述了每一条指令,提供了用法、格式、返回值和例子的信息。
MEL的指令参考在线文件(CommandReferenceonlinedocumentation)提供了以字母顺序排列的指令,也以**能方式加以组织。
3、使用指令
包括内容有:
输入指令、使用指令行、获得指令返回值、指令模式和指令在表达式中。
⑴、输入指令
Maya提供了一些输入MEL指令的方法;
使用脚本语言编辑器(ScriptEditor)或者指令行(CommandLine)是最常用的方法。
你也可以在脚本程序文件、MayaASCII(.ma)文件、工具柜图标(shelficons)、热键以及表达式中执行指令。
但是最常用的还是在脚本语言编辑器中输入指令。
无论如何输入指令,所有的MEL指令必须用一个分号结束。
以下是MEL指令的一些例子:
sphere-nameroundy;
setAttrroundy.translateX7;
whatIsls;
helpls;
ls-typnurbsSurface;
⑵、使用指令行
可以使用指令行输入MEL指令。
如果指令行没有出现,在MAYA主菜单中选择Options>
CommandLine使指令行出现。
虽然在指令行和脚本语言编辑器中都可以输入指令,但两者之间有一些重要的区别:
你可以从指令行,使用数字键盘或字符键盘的Enter键输入指令。
而脚本语言编辑器只能用数字键盘的Enter键。
指令行只有一行,执行一个MEL指令。
为了输入更多的MEL指令,指令之间可以?
quot;
;
"
分开。
指令行仅将结果的最后一行显示到右边。
而脚本语言编辑器显示所有的结果。
⑶、获得指令返回值
ManyMEL指令返回一个值。
为了抓取这个返回值,可以用单引号或者eval指令。
使用单引号获得指令返回值
用单引号"
`"
将指令前后标注出来可以返回指令的输出。
随后你可以把这个输出赋给一个变量并在脚本语言编辑器中显示它。
例
string$a[];
$a=`particle-p505-nameSun`;
print($a);
第一条语句定义了一个名为$a的阵列。
第二条语句执行引号中的MEL指令,并把指令的输出赋给$a。
第三条指令把$a的内容显示给脚本语言编辑器,如下:
Sun
SunShape
可以对任何一个MEL指令保存和显示其结果。
返回值的类型是由你使用的指令决定的。
在以上例子中,粒子命令返回一个字符串阵列。
所以,等式左边的变量符号也须要是接受这个返回值的字符串阵列的类型。
使用eval指令获得指令返回值
eval指令执行一个命令,也让你抓取返回值。
它比起单引号有一个优点,因为你可以从一个字符串建立一个指令。
象单引号方式那样,也可以把输出赋给一个变量并显示它。
string$command="
sphere"
;
eval($command+"
-r5"
);
第一条语句把字符串sphere标注给变量$command。
第二条指令给字符串sphere添加-r5,并执行完整的指令sphere-r5。
它产生一个半径为5个格子单位的球体。
有关eval指令的更多的信息,见掌管指令的在线文件。
⑷、指令模式
MEL指令选项典型地在以下一种或多种模式中起作用:
query、编辑和产生。
Query模式是用于找出一些事件的值;
编辑模式是用于改变一些事件的值;
产生模式是产生一些事件。
在在线MEL指令参考中,指令选项的描述包括一个Q、E或C以指示query模式、编辑模式、产生模式。
⑸、指令在表达式中
可以在一个表达式中执行MEL指令和序列。
但是,如果你执行以下的指令你的场景会产生故障:
断开或连接属性
删除或产生物体或者其他项
在一个表达式中播放你的动画不会撤消MEL指令的执行。
例如,如果你的表达式执行MEL指令产生了一对球体,播放这段动画时并不删除原来的球体。
再次播放该场景时会产生另一对球体。
不过你可以通过选择Edit>
Undo撤消MEL指令,但是如果你的场景有故障时,它将会不工作。
还要注意,你可以只撤消Queue尺寸的设置所允许的许多运算。
为设立Queue尺寸,选择Options>
GeneralPreferences。
当你从指令行执行一个指令时,状态信息出现在脚本语言编辑器中和指令行的响应区域里。
当在一个表达式中执行指令时,不显示这个信息。
关于表达式的更多的内容,请参考UsingMaya:
Expressions。
概述MAYA脚本语言
1、了解脚本语言;
2、设立脚本语言环境。
1、了解脚本语言
编写脚本语言程序是产生Maya埋入式语言(MEL)脚本程序的过程。
一个脚本语言程序是一个MEL指令或者MEL序列的集。
通过产生脚本语言程序,你可以利用Maya的用户界面使执行任务自动化,可以获得"
underthehood"
访问Maya所有的各个部分,还可以对界面进行扩展和自定义。
2、设立脚本语言环境
为了设立脚本语言环境,需要考虑以下内容:
⑴、脚本语言文件
⑵、建立脚本语言路径
⑶、在脚本语言程序中使用程序
一个MEL脚本文件(*.mel)是一个包含MEL指令、MEL程序或者二者都有的文件。
典型地,是用一个MEL脚本文件执行一系列的指令。
如,可以写一个脚本程序以产生一个墙形状的物体,然后再给它施加一个砖的纹理。
可以用一个文字编辑器写一个MEL脚本文件然后把它保存到磁盘的一个文件中。
MEL脚本文件使用文件扩展名.mel。
可以把脚本文件用于不同的场景中和不同的工作期间中。
当执行一个MEL脚本文件时,它并不变成为场景的一个部分,因此如果你要想重复它的作用时,应该每次都执行该脚本程序。
⑵、建立脚本文件路径
在缺省状态下,Maya在你的scripts目录中查找MEL脚本文件。
在缺省状态下,这个目录定义在你的login名下。
例子如下:
(IRIX)~elvis/maya/scripts
(WindowsNT)C:
\Aw\Elvis\maya\scripts
使你的脚本文件可以运行的最简单的方法是把它们放在上述路径里。
注意你的scripts目录缺省地包含了一些脚本文件。
它们以menu_作为名字的开始,用于Maya内部。
你可以给MAYA用于查找脚本文件的缺省路径增加目录。
为脚本文件路径增加一个目录(在IRIX中):
1--在一个IRIXshell中,设立环境变量MAYA_SCRIPT_PATH给附加目录的路径。
2--从这个shell启动MAYA。
为脚本文件路径增加一个目录(在WindowsNT中):
1--使用WindowsNTExplorer或者MyComputer,显示MayaNTbin目录的内容。
缺省时是C:
\Aw\MayaX.X\bin。
2--双击MayaEnvironment.exe启动该程序。
这样显示出了你的home、project、plug-in、script和bitmap目录的路径。
该路径包括在安装期间产生的缺省路径和你后来定义的任何路径。
不能改变缺省路径。
对于plug-in、script和bitmap路径,用分号(;
)分离路径,这些项可以定位。
在这个窗口中禁止编辑路径。
但你可以用以下的步骤代替。
重要事项:
如果你的计算机上安装了MayaNT的多个版本,你会看到一个版本的路径。
版本号是在窗口的标题栏里。
为了看另外的版本的路径,点击Previous或Next。
为了保存一个版本的路径,点击Save。
如果你的计算机只装了一个版本,这些键会变暗。
3--点击MayaScriptPath框旁边的Change键。
注意,如果你改变了Home路径,这就按照新的home路径改变了project、plug-in、script和bitmap路径。
会询问你是否想这样做。
点击Cancel可以放弃这个改变。
4--在ChangeSetting窗口中输入(或者编辑)一个路径。
一般地,可以增加缺省路径,但是不能重置它们。
当你定义路径时使用左斜线或者右斜线。
为了定义一个远程路径,可以将一个隐含目录与你的计算机上的一个驱动器字符对应起来。
细节请看你的WindowsNT文件。
如果需要输入多个路径,使用分号把这些路径分离开。
如果要使用一个文件浏览器从别的文件系统查找和选择一个路径,点击Browse。
为了返回到你原来的缺省路径中,点击RestoreDefault。
这对于当你定义了一个不正确的路径或者想删除废弃的路径是非常有用的。
5--点击OK。
例子(IRIX)
为了给scripts路径增加~/maya/scripts/clipFXandremote/X/scripts目录,在启动MAYA之前给IRIX增加以下目录:
setenvMAYA_SCRIPT_PATH~/maya/scripts/clipFX:
/remote/X/scripts
随后Maya将能够在~/maya/scripts,~/maya/scripts/clipFX,或者/remote/X/scripts中找到你的脚本文件。
⑶、在脚本文件中使用程序
你可以在MEL脚本文件中使用全局和局部程序。
全局程序在它们的文件外边是可见的;
局部程序仅在它们的文件内部是可见的。
如果Maya遇到一个没有定义的指令,它会为找到一个与该指令有相同基名的MEL脚本文件搜索脚本路径。
当它找到该文件之后,它在该文件中会声明所有的全局MEL程序。
任何具有与该指令有相同基名的全局程序会被执行。
如,假定你在运行一个sayWhat指令。
因为没有这样的一个sayWhat指令,Maya会在它的所有的script路径中对一个叫做sayWhat或者sayWhat.mel的文件进行搜索。
如果在一个script目录中,它找到了有以下内容的sayWhat.mel脚本文件:
procred5(){print("
red5standingby...\n"
}
globalprocsayWhat(){print("
sayWhatonline\n"
globalprocGoGo(){print("
GoGoonline\n"
然后全局程序sayWhat和GoGo被声明,并执行sayWhat程序。
结果是:
sayWhatonline
因为GoGo全局程序已经声明过了;
现在就可以在指令行中或者在脚本语言编辑器中输入GoGo运行它。
使用MAYA内部脚本文件
Maya有一些用于它的用户界面和其他运算细节的MEL脚本文件。
你可以在Alias|Wavefront中查找这些脚本文件,学习专业脚本程序作者的这些技术。
这些脚本文件是在由缺省定义的以下述目录开始的目录中:
(IRIX)/usr/aw/mayaX.X/scripts
\Aw\MayaX.X\scripts
其中X.X是Maya的版本号。
注意:
不要在这个目录中修改或者插入脚本文件;
该目录是保留Maya用户界面工作用的脚本文件的。
改变这些文件可能会影响Maya的操作。
如果你想在这个目录中修改脚本程序以改变Maya的界面,先要把它们拷贝到你的局部scripts目录中。
如果你的局部scripts目录中有与Maya内部script文件目录中相同名字的脚本文件,那你的局部scripts目录中的文件会被运行。
使用脚本语言编辑器
1、打开脚本编辑器;
2、打开一个脚本程序;
3、把一个MEL脚本程序文件作为源文件;
4、保存脚本文字;
5、执行一个脚本程序;
6、清除状态信息;
7、清除指令输入;
8、响应一个指令;
9、显示程序中的语句行号;
10、显示堆栈跟踪。
1、打开脚本编辑器
可以通过选择Window>
GeneralEditors>
ScriptEditor或者点击Maya窗口右下部的ScriptEditor图标打开脚本编辑器。
脚本编辑器提供以下菜单选项:
OpenScript--打开脚本程序
SourceScript--把一个脚本程序文件作为源文件
SaveSelected--保存脚本程序
Execute--执行脚本程序
ClearHistory--清除历史
ClearInput--清除输入
EchoAllCommands--返回所有指令的返回值
ShowLineNumbers--显示行号
ShowStackTrace--显示堆栈跟踪
编辑命令
下表列出了在脚本编辑器中有效的键盘命令。
(在表达式编辑器和一些输入框中它们也是有效的。
)命令定义平台
Ctrl+cCopyIRIX、Windows
Ctrl+xCutIRIX、Windows
Ctrl+vPasteIRIX、Windows
Ctrl+k删除到本行末IRIX
Ctrl+d删除下一个字符IRIX
Ctrl+a移动光标到行首IRIX
Ctrl+e移动光标到行末IRIX
Ctrl+a选择编辑框中的所有文字Windows
2、打开一个脚本程序
我们可以打开一个脚本程序以便检查、执行或找出它的问题。
打开一个脚本程序时并不执行它。
只是在脚本编辑器的输入栏里简单地把它显示出来。
要执行显示在脚本编辑器的输入栏里的一些或者全部脚本程序,可以用鼠标选择它,然后按键盘的数字Enter键。
当你想把一些或者全部内容拖拉到柜架上并在那里产生一个图标时,打开一个脚本程序就是非常有用的。
可以点击该图标执行这个程序。
为了打开一个脚本文件:
1--从脚本语言编辑器中选择File>
OpenScript。
出现一个文件浏览器。
2--选择要打开的脚本文件。
把一个脚本程序作为源文件
把一个MEL脚本程序文件作为源文件,执行所有的MEL指令并声明包含在该脚本程序文件中的所有的全局过程。
如果你在一个脚本程序文件中修改了一个程序,Maya并不把这个改变登记给该程序,直到你把它的程序文件作为源文件。
这是因为Maya把执行了的程序保存到了存储器中。
当你把一个脚本程序文件作为源文件时,Maya再次读该脚本程序文件里的那个程序。
为了把一个脚本程序作为源文件:
把一个脚本程序作为源文件之后,该文件里的所有MEL指令会执行。
该脚本程序中的所有全局过程会被声明,但并不被执行。
MEL指令是按照它们出现在文件中的顺序执行的,并且应当没有错误。
如果产生了一个错误,执行会中断并不再装载更多的程序。
当你把一个MEL脚本程序作为源文件之后,不声明或者不执行局部过程。
但是,如果你是通过在脚本编辑器或指令行里输入而声明了一个局部过程,该过程会被声明为全局过程,你可以在任何时候执行它。
执行一个程序可以通过执行一个MEL指令实现。
当你想把一个脚本程序作为源文件,并具有执行该文件中的程序的作用时,这是很有用的。
为了这样做,要首先声明该程序,然后声明通过一个文件浏览器执行该程序的指令。
4、保存脚本文字
使用File>
SaveSelected指令从脚本编辑器保存脚本文字。
可以从指令输入(底部)将文字高亮化,
也可以通过脚本编辑器的状态信息(顶部)部分。
Maya将会把高亮的文字部分保存到你说明的目录里的一个.mel文件中。
5、执行一个脚本程序
当你想执行一个预先已经源化了的脚本程序时,可以在脚本编辑器的指令输入栏(底部)输入该程序的名字,然后进行下面工作中的一种:
按Ctrl+Enter键;
或者
按数字键盘的Enter键;
从脚本编辑器里选择Edit>
Execute。
也可以使用这些指令执行一个在脚本编辑器里已经打开了的脚本程序的定义。
如果MEL脚本定义没有出现失败,
则该定义是从脚本编辑器的底部移到顶部。
否则该定义不会移动,并且在顶部会显示出一个错误信息。
提示:
可以首先选取MELscript的一部分然后只执行这一部分(Ctrl+Enter)。
它不会删除其它部分。
6、清除状态信息
要清除状态信息(脚本编辑器的顶部),从脚本编辑器里选择Edit>
ClearHistory。
这将会删除掉所有的状态信息文字。
使用这个指令时应当小心一些,因为没有办法撤消它。
7、清除指令输入
要清除指令输入文字(脚本编辑器的顶部),从脚本编辑器里选择Edit>
ClearInput。
这将会删除掉所有的指令输入文字。
8、响应一个指令
当你用Maya工作时,对应的MEL指令常常出现在脚本编辑器的顶部。
缺省情况下,只有那最重要的指令才会显示。
你可以在脚本编辑器里选择Edit>
EchoAllCommands,虚拟地显示与你的Maya作用相关的所有指令。
它可以帮助你学习哪些MEL指令触发作用。
在你的Maya的作用之间并不是总有一对一的对应关系,这些指令返回响应到脚本编辑器里。
如果你使用一个脚本程序去打开属性编辑器,一些MEL指令出现在脚本编辑器里(响应是打开的):
buildObjectEdMenuMayaWindow|menu4|menuItem56;
editSelected;
editMenuUpdateMayaWindow|menu2;
但是,只有以下的MEL指令需要引入属性编辑器:
同时,对于一些作用来说,也不总是会将MEL指令的响应返回到脚本编辑器里。
如,当你选择了一个属性编辑器时,
脚本编辑器的顶部没有返回任何信息。
要关闭返回信息,从脚本编辑器里再次选择Edit>
EchoAllCommands。
9、显示程序中的语句行号
如果你在执行一个长的程序时由于错误而出现了问题,可以打开脚本程序的行号,你就可以更容易地找到错误。
要显示错误指令的行号,从脚本编辑器里选择Edit>
ShowLineNumbers。
当你打开了ShowLineNumbers选项,
Maya在脚本编辑器状态信息框(顶部)的旁边显示脚本程序的行号。
要关掉行号,在脚本编辑器菜单里再次选择Edit>
Maya将显示行号的设置保存下来作为以后使用。
如果打开了行号,当下一次你运行Maya时它们会出现在脚本编辑器里。
10、显示堆栈跟踪
如果你用埋入的脚本程序文件执行一个脚本程序时出现了问题,打开堆栈跟踪选项显示文件结构中的脚本程序错误。
要显示一个脚本文件的堆栈跟踪,在脚本编辑器里选择Edit>
ShowStackTrace。
Maya会在一个窗口里显示堆栈跟踪,
在脚本编辑器里显示一个错误信息。
使用脚本语言结点
一个脚本语言结点是一个包括了一个MEL脚本语言程序的结点。
当该结点产生或者当该结点被破坏时,该程序被执行,它取决于脚本结点的类型。
1、了解脚本语言结点;
2、产生脚本语言结点;
3、测试脚本语言;
4、编辑脚本语言结点;
5、设立脚本语言结点的执行;
6、删除脚本语言结点。
1、了解脚本语言结点
脚本语言结点是把一个MEL脚本语言程序存储到一个Maya场景文件中的一种方法。
脚本语言结点也包含了用于产生用户界面的所有MEL指令,并被用MAYA文件保存。
你可以用不同的方法执行脚本语言程序。
可以指明一个