maya脚本教学教材_第1页
maya脚本教学教材_第2页
maya脚本教学教材_第3页
maya脚本教学教材_第4页
maya脚本教学教材_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

maya月却本

精品文档

MayaMel脚本基础教程

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

如何使用本教程

本教程叙述如何学习和使用Maya埋入式语言(MEL)。如果你初次接触MEL,

本教材帮助你在使用MEL指令和脚本程序方面开始起步。一旦当你开始开发

MEL程序的时候,本教材将继续帮助你,讲解如何能够使你获得用MEL产生

的更多的指令、宏、程序和用户界面元素的输出。

本教材假定你对Maya已经有了基本的了解。如果你完全是新开始学习Maya,

请看一下学习Maya的教材,并对在UsingMayadocumentationset中描述的要

点进行开发。应该熟悉Maya的在线文件(见Onlinedocumentation)。特别是应

该使你自己熟悉MELCommandReference和DGNodeReferenceo

本教材的各处都有许多有关的MEL指令和程序码的例子。要运行例子程序,你

可以把它们粘贴至1JMaya的脚本语言编辑器(ScriptEditor)里,并选择Edit>

Execute就可以了。使自己进一步地熟悉脚本语言编辑器的要点,执行脚本程

序,并把程序保存到Maya的script目录中的一个文件中,可以参考Maya文件

和用户指南中的适当章节。

MEL要点

使用MEL的要点包括了使用MEL指令和产生MEL程序。

本章包括以下内容:指令、程序、MayaGems共三个部分。本期介绍MAYA脚

本语言MEL的指令。

分为以下三个部分: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的指令参考在线文件(CommandReferenceonline

documentation)提供了以字母顺序排列的指令,也以**能方式加以组织。

3、使用指令

包括内容有:输入指令、使用指令行、获得指令返回值、指令模式和指令在表

达式中。

⑴、输入指令

Maya提供了一些输入MEL指令的方法;使用脚本语言编辑器(ScriptEditor)或

者指令行(CommandLine)是最常用的方法。你也可以在脚本程序文件、Maya

ASCIRma;)文件、工具柜图标(shelficons)、热键以及表达式中执行指令。但是

最常用的还是在脚本语言编辑器中输入指令。

无论如何输入指令,所有的MEL指令必须用一个分号结束。以下是MEL指令

的一些例子:

sphere-nameroundy;

setAttrroundy.translateX7;

whatlsIs;

helpIs;

Is-typnurbsSurface;

收集于网络,如有侵权请联系管理员删除

精品文档

⑵、使用指令行

可以使用指令行输入MEL指令。如果指令行没有出现,在MAYA主菜单中选

择Options>CommandLine使指令行出现。

虽然在指令行和脚本语言编辑器中都可以输入指令,但两者之间有一些重要的

区别:

你可以从指令行,使用数字键盘或字符键盘的Enter键输入指令。而脚本语言

编辑器只能用数字键盘的Enter键。

指令行只有一行,执行一个MEL指令。为了输入更多的MEL指令,指令之间

可以?quot;;"分开。

指令行仅将结果的最后一行显示到右边。而脚本语言编辑器显示所有的结果。

⑶、获得指令返回值

ManyMEL指令返回一个值。为了抓取这个返回值,可以用单引号或者eval指

令。

使用单引号获得指令返回值

用单引号将指令前后标注出来可以返回指令的输出。随后你可以把这个输出

赋给一个变量并在脚本语言编辑器中显示它。

string$a[];

$a='particle-p505-nameSun';

print($a);

第一条语句定义了一个名为$2的阵列。第二条语句执行引号中的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:Expressionso

概述MAYA脚本语言

本章包括以下内容:1、了解脚本语言;2、设立脚本语言环境。

1、了解脚本语言

编写脚本语言程序是产生Maya埋入式语言(MEL)脚本程序的过程。一个脚本语

言程序是一个MEL指令或者MEL序列的集。通过产生脚本语言程序,你可以

利用Maya的用户界面使执行任务自动化,可以获得"underthehood"访问Maya

所有的各个部分,还可以对界面进行扩展和自定义。

2、设立脚本语言环境

为了设立脚本语言环境,需要考虑以下内容:

⑴、脚本语言文件

⑵、建立脚本语言路径

⑶、在脚本语言程序中使用程序

⑴、脚本语言文件

一个MEL脚本文件(*.mel)是一个包含MEL指令、MEL程序或者二者都有的文

件。典型地,是用一个MEL脚本文件执行一系列的指令。如,可以写一个脚本

程序以产生一个墙形状的物体,然后再给它施加一个砖的纹理。

可以用一个文字编辑器写一个MEL脚本文件然后把它保存到磁盘的一个文件

中。MEL脚本文件使用文件扩展名.melo可以把脚本文件用于不同的场景中和

不同的工作期间中。当执行一个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启动MAYAo

为脚本文件路径增加一个目录(在WindowsNT中):

1--使用WindowsNTExplorer或者MyComputer,显示MayaNTbin目录的内

容。

缺省时是C:\Aw\MayaX.X\bin0

2--双击MayaEnvironment.exe启动该程序。

这样显示出了你的home、project、plug-inscript和bitmap目录的路径。该路

径包括在安装期间产生的缺省路径和你后来定义的任何路径。不能改变缺省路

径。

对于plug-in、script和bitmap路径,用分号(;)分离路径,这些项可以定位。

在这个窗口中禁止编辑路径。但你可以用以下的步骤代替。

重要事项:

如果你的计算机上安装了MayaNT的多个版本,你会看到一个版本的路径。版

本号是在窗口的标题栏里。为了看另外的版本的路径,点击Previous或Next。

为了保存一个版本的路径,点击Save。如果你的计算机只装了一个版本,这些

键会变暗。

3--点击MayaScriptPath框旁边的Change键。

注意,如果你改变了Home路径,这就按照新的home路径改变了project、

plug-in、script和bitmap路径。会询问你是否想这样做。点击Cancel可以放弃

这个改变。

4--在ChangeSetting窗口中输入(或者编辑)一个路径。

一般地,可以增加缺省路径,但是不能重置它们。当你定义路径时使用左斜线

或者右斜线。

收集于网络,如有侵权请联系管理员删除

精品文档

为了定义一个远程路径,可以将一个隐含目录与你的计算机上的一个驱动器字

符对应起来。细节请看你的WindowsNT文件。

如果需要输入多个路径,使用分号把这些路径分离开。

如果要使用一个文件浏览器从别的文件系统查找和选择一个路径,点击

Browseo

为了返回到你原来的缺省路径中,点击RestoreDefault。这对于当你定义了一个

不正确的路径或者想删除废弃的路径是非常有用的。

5—点击0K。

例子(IRIX)

为了给scripts路径增加~/nlaya/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..An");}

globalprocsayWhat(){print(nsayWhatonline\n");}

globalprocGoGo(){print("GoGoonline\n");}

然后全局程序sayWhat和GoGo被声明,并执行sayWhat程序。结果是:

收集于网络,如有侵权请联系管理员删除

精品文档

sayWhatonline

因为GoGo全局程序已经声明过了;现在就可以在指令行中或者在脚本语言编

辑器中输入GoGo运行它。

使用MAYA内部脚本文件

Maya有一些用于它的用户界面和其他运算细节的MEL脚本文件。你可以在

Alias|Wavefront中查找这些脚本文件,学习专业脚本程序作者的这些技术。这

些脚本文件是在由缺省定义的以下述目录开始的目录中:

(IRIX)/usr/aw/mayaX.X/scripts

(WindowsNT)C:\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>OpenScripto出现一个文件浏览器。

2--选择要打开的脚本文件。

把一个脚本程序作为源文件

把一个MEL脚本程序文件作为源文件,执行所有的MEL指令并声明包含在该

脚本程序文件中的所有的全局过程。

如果你在一个脚本程序文件中修改了一个程序,Maya并不把这个改变登记给该

程序,直到你把它的程序文件作为源文件。

收集于网络,如有侵权请联系管理员删除

精品文档

这是因为Maya把执行了的程序保存到了存储器中。当你把一个脚本程序文件

作为源文件时,Maya再次读该脚本程序文件里的那个程序。

为了把一个脚本程序作为源文件:

1--从脚本语言编辑器中选择File>OpenScript0出现一个文件浏览器。

2-选择要打开的脚本文件。

把一个脚本程序作为源文件之后,该文件里的所有MEL指令会执行。该脚本程

序中的所有全局过程会被声明,但并不被执行。

MEL指令是按照它们出现在文件中的顺序执行的,并且应当没有错误。如果产

生了一个错误,执行会中断并不再装载更多的程序。

当你把一个MEL脚本程序作为源文件之后,不声明或者不执行局部过程。

但是,如果你是通过在脚本编辑器或指令行里输入而声明了一个局部过程,该

过程会被声明为全局过程,你可以在任何时候执行它。

执行一个程序可以通过执行一个MEL指令实现。当你想把一个脚本程序作为源

文件,并具有执行该文件中的程序的作用时,这是很有用的。

为了这样做,要首先声明该程序,然后声明通过一个文件浏览器执行该程序的

指令。

4、保存脚本文字

使用File>SaveSelected指令从脚本编辑器保存脚本文字。可以从指令输入(底

部)将文字高亮化,

也可以通过脚本编辑器的状态信息(顶部)部分。Maya将会把高亮的文字部分保

存到你说明的目录里的一个.mel文件中。

5、执行一个脚本程序

当你想执行一个预先已经源化了的脚本程序时,可以在脚本编辑器的指令输入

栏(底部)输入该程序的名字,然后进行下面工作中的一种:

按Ctrl+Enter键;

或者

按数字键盘的Enter键;

或者

从脚本编辑器里选择Edit>Executeo

也可以使用这些指令执行一个在脚本编辑器里已经打开了的脚本程序的定义。

如果MEL脚本定义没有出现失败,

则该定义是从脚本编辑器的底部移到顶部。否则该定义不会移动,并且在顶部

收集于网络,如有侵权请联系管理员删除

精品文档

会显示出一个错误信息。

提示:

可以首先选取MELscript的一部分然后只执行这一部分(Ctrl+Enter)。它不会删

除其它部分。

6、清除状态信息

要清除状态信息(脚本编辑器的顶部),从脚本编辑器里选择Edit>Clear

Historyo这将会删除掉所有的状态信息文字。

使用这个指令时应当小心一些,因为没有办法撤消它。

7、清除指令输入

要清除指令输入文字(脚本编辑器的顶部),从脚本编辑器里选择Edit>Clear

Inputo这将会删除掉所有的指令输入文字。

使用这个指令时应当小心一些,因为没有办法撤消它。

8、响应一个指令

当你用Maya工作时,对应的MEL指令常常出现在脚本编辑器的顶部。缺省情

况下,只有那最重要的指令才会显示。

你可以在脚本编辑器里选择Edit>EchoAllCommands,虚拟地显示与你的

Maya作用相关的所有指令。

它可以帮助你学习哪些MEL指令触发作用。

在你的Maya的作用之间并不是总有一对一的对应关系,这些指令返回响应到

脚本编辑器里。

如果你使用一个脚本程序去打开属性编辑器,一些MEL指令出现在脚本编辑器

里(响应是打开的):

buildObjectEdMenuMayaWindowlmenu4|menultem56;

editSelected;

editMenuUpdateMayaWindow|menu2;

但是,只有以下的MEL指令需要引入属性编辑器:

editSelected;

同时,对于一些作用来说,也不总是会将MEL指令的响应返回到脚本编辑器

收集于网络,如有侵权请联系管理员删除

精品文档

里。如,当你选择了一个属性编辑器时,

脚本编辑器的顶部没有返回任何信息。

要关闭返回信息,从脚本编辑器里再次选择Edit>EchoAllCommands0

9、显示程序中的语句行号

如果你在执行一个长的程序时由于错误而出现了问题,可以打开脚本程序的行

号,你就可以更容易地找到错误。

要显示错误指令的行号,从脚本编辑器里选择Edit>ShowLineNumbers0当你

打开了ShowLineNumbers选项,

Maya在脚本编辑器状态信息框(顶部)的旁边显示脚本程序的行号。

要关掉行号,在脚本编辑器菜单里再次选择Edit>ShowLineNumberso

Maya将显示行号的设置保存下来作为以后使用。如果打开了行号,当下一次你

运行Maya时它们会出现在脚本编辑器里。

10、显示堆栈跟踪

如果你用埋入的脚本程序文件执行一个脚本程序时出现了问题,打开堆栈跟踪

选项显示文件结构中的脚本程序错误。

要显示一个脚本文件的堆栈跟踪,在脚本编辑器里选择Edit>ShowStack

TraceoMaya会在一个窗口里显示堆栈跟踪,

在脚本编辑器里显示一个错误信息。

使用脚本语言结点

一个脚本语言结点是一个包括了一个MEL脚本语言程序的结点。

当该结点产生或者当该结点被破坏时,该程序被执行,它取决于脚本结点的类

型。

本章包括以下内容:

1、了解脚本语言结点;

2、产生脚本语言结点;

3、测试脚本语言;

4、编辑脚本语言结点;

5、设立脚本语言结点的执行;

6、删除脚本语言结点。

1、了解脚本语言结点

脚本语言结点是把一个MEL脚本语言程序存储到一个Maya场景文件中的一种

方法。

收集于网络,如有侵权请联系管理员删除

精品文档

脚本语言结点也包含了用于产生用户界面的所有MEL指令,并被用MAYA文

件保存。

你可以用不同的方法执行脚本语言程序。可以指明一个脚本程序结点执行它的

程序:

当该结点是从一个文件中读出的;

在渲染一桢图像的之前或者之后;

在渲染一个动画的之前或者之后。

当一个文件关闭着时使用File>Open或者File>New

一个脚本语言程序结点有三个属性:

Before、After和Type。决定于脚本程序的类型,当执行该程序时,说明Before

和After属性。

2、产生脚本语言结点

可以使用表达式编辑器产生脚本语言结点。

为了产生一个脚本语言结点:

1--选择Window>ExpressionEditor0

2--在ExpressionEditor中选择SelectFilter>ByScriptNodeName。

任何现存的ScriptNodes显示在ScriptNodes表中。

3--在ExpressionEditor的Scriptwindow中输入脚本程序。

4--在ScriptNodeName框中输入一个名字。

5-定义你想要使脚本成为一个之前或者之后的脚本程序。

6--点击Create键。

这产生脚本结点。现在你可以定义它的类型。

7--从ExecuteOn下拉菜单里选择以下的一个脚本程序结点类型:

收集于网络,如有侵权请联系管理员删除

精品文档

Demand

当你使用scriptNode指令,隐含地需求它时,运行脚本文件(看在线指令文件的

scriptNode指令的信息)。

忽略这种类型的脚本文件的之前和之后的属性。

Open/Close

如果你已经指定了该脚本文件作为之前的脚本文件,当以批处理模式读文件时

脚本被执行。如果你把它

作为之后的脚本文件,当文件被关闭或者没有以图示用户界面模式提供,或者

当该结点被删除时,它被执行。

GUIOpen/Close

如果你已经指定了该脚本文件作为之前的脚本文件,当以图示用户界面模式运

行MAYA,在读文件时脚本文件

被执行。如果你把它作为之后的脚本文件,当文件被关闭,或者没有以图示用

户界面模式提供,或者当该结

点被删除时,它被执行。

UIConfiguration(内部)

之前的脚本文件包括了用户界面设置的信息。它是由Maya或者一个plug-in为

了保存面板排列和编辑状态信息

而自动的产生的。当你打开一个文件时,这个脚本结点执行它的脚本文件。在

执行之后,该结点被删除掉。之

后的脚本是不会运行的。如果一个文件被提供或被输入,这个结点将会不存

在。

软件渲染

如果你选派好脚本作为之前的脚本,脚本的执行在一个动画之前被渲染。如果

你选派好脚本作为之后的脚本,

脚本的执行在一个动画之后被渲染。

软件桢渲染

如果你选派好脚本作为之前的脚本,脚本的执行在一个桢之前被渲染。如果你

选派好脚本作为之后的脚本,脚

本的执行在一个桢之后被渲染。

8-点击Edit键给脚本结点赋类型。

9--如果你想增加另外一个脚本结点,点击NewScriptNode键。

收集于网络,如有侵权请联系管理员删除

精品文档

Script窗口和ScriptNodeName框被清除,你可以输入一个新的脚本结点。

一个脚本语言结点是一个包括了一个MEL脚本语言程序的结点。

当该结点产生或者当该结点被破坏时,该程序被执行,它取决于脚本结点的类

型。

本章包括以下内容:

1、了解脚本语言结点;

2、产生脚本语言结点;

3、测试脚本语言;

4、编辑脚本语言结点;

5、设立脚本语言结点的执行;

6、删除脚本语言结点。

3、测试脚本程序

可以使用表达式编辑器对脚本程序进行测试。

为测试一个脚本程序:

1--选择Window>ExpressionEditor0

2--在表达式编辑器中选择SelectFilter>ByScriptNodeName。

3--在Scriptwindow中输入脚本程序,或从ScriptNodes表中。

4--点击TestScript键。

错误显示在脚本语言编辑器中。

4、编辑脚本语言结点

可以使用表达式编辑器对脚本语言结点进行编辑。

为了对脚本语言的编辑定义一个编辑器:

1--选择Window>ExpressionEditor0

2--在表达式编辑器中选择SelectFilter>ByScriptNodeName。

3-从编辑器下拉菜单中选择一个编辑器。

收集于网络,如有侵权请联系管理员删除

精品文档

为了编辑一个脚本语言结点:

1--选择Window>ExpressionEditor0

2--在表达式编辑器中选择SelectFilter>ByScriptNodeName。

3-选择你想在ScriptNodeslist中要编辑的脚本语言结点。

4--在Scriptwindow中编辑该脚本语言结点。

5-如果你想撤消你的改变,点击Reload。Maya重装原来的脚本语言结点。

6--为了清理Scriptwindow,点击Clear键。

5、设立脚本语言结点的执行

为了设立脚本语言结点的执行:

1--选择File>OpenScene0或选择File>Open然后在OpenScenewindow中点

击Optionso

2-点击复选框将ExecuteScriptNodes打开或者关闭。

6、删除脚本语言结点

可以使用表达式编辑器删除脚本语言结点。

为了删除一个脚本语言结点:

1—S选择Window>ExpressionEditoro

2--在表达式编辑器中选择SelectFilter>ByScriptNodeName。

3--选择你想在ScriptNodeslist中要删除的脚本语言结点。

4一点击Delete按键。

定义数据

本章描述MEL的数据类型它们之间的转换:

1、变量;

2、常数;

3、数据类型转换;

收集于网络,如有侵权请联系管理员删除

精品文档

4、限制。

1、变量

所有变量名以$开始。变量名不包括空格和特殊字符。你可以使用下划线和数字

作为变量名但开头不能是数字。

识别大小写,如$161叩不同于$Temp。

例:

int$radical7Mark;〃有效

intHEYchief;//ERROR:开头缺"$"

int$nine;//ERROR:开头不是"$"

int$_VAL_ID_AIT_;//有效

intShowdyYall;//ERROR:含有无效字符

int$lBill;//ERROR:开头不能是数字

有以下五种变量类型:

类型意义例子

int整数(...-2,-1,0,1,2...)10,-5,和0

float小数392.6,7.0,and-2.667

string一个或更多的字符"What'sup,chief?"

vector三个浮点数«3,?7.7,?9.1»

matrix浮点数阵列<<L1,2,3;6.7,5,4.9»

以上类型除matrix外,都可以是一个阵列。如,一个三元素的整数阵列是一个

跟一个的三个整数。

声明和标注变量

声明一个变量是说明变量的名字和类型;标注一个变量是给已生命的变量一个

专有的值。下例是将声明和标注合为一步:

int$temp=3;

float$Temp=222.222;

string$tEmp="Heyakid.";

vector$teMp=«1,2.7,3.2»;

matrix$temP[2][3]=«4.5,1,0.2;-13,9911,0.007»;

当生命矩阵变量时,必须包括二维阵列的尺寸。

下例说明对整型、浮点、字符串和矢量阵列型变量阵列的声明和标注:

收集于网络,如有侵权请联系管理员删除

精品文档

int$TEmp[5]={100,1000,-70,2,9822);

float$TeMp[4]={43.3,-10.7,0,82.5};

string$TemP[3]={"Lord","Flies","coolbrownfox2."};<p>

vector$tEMp[2]={«0,0,0»,«0.01,-2,16»};

如果一个变量被声明但未被标注,它的所有的值是0;字串变量则?quot;"。

float$teMP;〃赋值:0;

string$TEMp[3];〃赋值:

vector$TEmP[2];〃赋值:{«0,0,0»,«0,0,0»};

matrix$TeMP[3][2];//赋值:«0,0;0,0;0,0»;

如果一个变量被声明或者被使用而没有定义它的类型,它被隐含声明为将要赋

值给它的那种类型。

$tEMP=0.0;//浮点数

string$TEMP[];//零元素字符串阵列

Strip="heyaBuddy";//字符串

$rip={1,2,3,4);//四元素整型阵列

$lip=«1,2.1;3,4»;//2X2矩阵

$flixp=$TEMP;//零元素字符串阵列

注意值0.0是一个浮点数,而一个0值是一个整型数。这决定了在隐含声明时

是产生一个浮点数还是产生一个整型数。

不建议使用隐含声明,因为它不象变量的隐含声明那样的清楚。

保留字

MEL的保留字可以是一个变量类型、控制逻辑或是表达一个值。以下是MEL

的保留字:

breakcasecontinuedefaultdoelse

falsefloatforglobalifin

intmatrixnooffonproc

returnstringswitchtruevectorwhile

yes

数据类型关键字

intfloatvectorstringmatrix

布尔常数关键字

收集于网络,如有侵权请联系管理员删除

精品文档

yesnoonofftruefalse

流动控制关键字

ifelseforwhiledoinbreakcontinuedefaultswitchcase

其他关键字

globalreturnsourcecatchaliasproc

保留字也区分大小写。所以int是整型,Int不是。实际上alias、source、catch

也是保留字,但它们起指令作用,

因此没有被包括在上述表内。

字符串

字符串可用"+”运算连接。

string$what="Whale";

string$title="Great"+"White"+$what;

这将使title变量的内容为GreatWhiteWhale□

矢量

为寻址一个vector的各个成分,使用

vector$LOS=«1,2,7»;

float$firstComponent=$LOS.x;//赋值为1

floatSsecondComponent=$LOS.y;//赋值为2

float$thirdComponent=$LOS.z;//赋值为7

标注矢量的成分:

vector$LOCK=«7,-4,9»;

$LOCK=«$LOCK.x,$LOCK.y,3»;//Assigned«7,-4,3»

但不能直接给一个成分标数字:

$LOCK.z=3000;//错误

但是通常当访问一个矢量成分时,你应该象下面例子那样围绕它使用括号:

例子:

收集于网络,如有侵权请联系管理员删除

精品文档

print$LOCK.x;//错误

print($LOCK.x);

setAttrpersp.scaleX$LOS.x;//错误

setAttrpersp.scaleX($LOS.x);

阵列

你可以声明一个int,float,string或vector类型的阵列。阵列的第一个序号为0

string$array[3]={"first\n","second\n","third\n"};

print($array[O]);//显示"first\n"

print($array[l]);//显示"second\n"

print($array[2]);//显示"third\n"

阵列尺寸可以自动地增加。

int$scores[];//声明为一个0元素阵列

$scores[150]=3;//现在是151元素阵列

$scores[200]=5;//现在是201元素阵列但最好不要声明过大的没用的阵列,因

为它要占内存:

int$bigBoy[];

$bigBoy[123456789]=2;//危险

要除去一个阵列的所有元素可使用clear**能。要查看阵列的尺寸可使用size。

string$hats[3]={"blue","red","black"};

print("Therewere"+size($hats)+"hatsAn");

clear($hats);

print("Butnowthereare"+size($hats)+"An");

以上指令的输出是:

Therewere3hats.

Butnowthereare0.

矩阵

可以把一个矩阵想象为一个浮点阵列的阵列,或是一个浮点数据的二维阵列。

矩阵产生后,它的尺寸不能改变。

企图寻址一个矩阵的不存在的元素将会出现错误。在产生矩阵时必须定义它的

尺寸。

收集于网络,如有侵权请联系管理员删除

精品文档

matrix=<<1;4>>;〃错误:没有说明尺寸

matHx$a2[][];〃错误:没有说明尺寸

matrix$a3[2][l];//有效:产生«0;0»;

$a3[0][l]=7;〃错误:元素不存在

$a3[l]⑼=9;〃有效

声明而未标注值的矩阵,其所有元素都为0。

matrix$a4[2][4]=«-3.4,6,201,0.7;4,2,9.3,1001»;

如果矩阵表示一个二维阵列,则第一个索引表示列;地二个索引表示行:

matrix$a4[2][4]columnOcolumn1column2column3

row0-3.46

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论