Maya编程技术

时间:2022-08-10 03:15:18

Maya编程技术

摘要:对Maya中表达式和脚本这2种动画编程技术分别作了介绍,最后比较了这2种编程技术。

关键词:动画编程;表达式;脚本;MEL

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)36-8409-02

Rendering properties on Maya Particles

YU Hai-wen

(College of Information Engineering NanChang University ,Nanchang 330000,China)

Abstract:The expression of Maya and script in the 2 animated programming technology are introduced;In the end ,Comparison between the 2 kinds of programming technology.

Key words:Animated programming; Expression; Script; MEL(Maya Embedded Language)

本文主要介绍Maya表达式和脚本的一般用法。

1 表达式

表达式动画是一种建立在数学模型基础上的动画控制方式,即将动画的运动轨迹、与时间的关系、与某个属性的关系转化为数学运算的模型关系,来达到控制物体产生动画的目的。

1.1 动画方式

所有的三维软件控制动画的方式有3种:关键帧动画、关联动画、表达式动画。

1)关键帧动画直接记录物体参数随时间的变化关系;

2)关联动画记录两个属性之间的变化关系;

3)表达式动画则将动画中的相关参数、时间属性、运动轨迹等用数学公式模拟表示出来;

1.2 控制物体运动的基本方式

1)Keyframe(关键帧动画)

2)Set Driven Key(驱动关键帧)

3)Constraint(约束)

4)Motion Path(路径动画)

5)Expression(表达式动画)

6)Direct Connection(属性关联)

在这6种方式中,Set Driven Key(驱动关键帧)、Constraint(约束)、Direct Connection(属性关联)都是标准的关联动画,而Motion Path(路径动画)则将关键帧动画与关联动画的优势结合起来,显得对运动中轨迹的控制和属性的关联更加灵活。

1.3 表达式动画

在3DMax、Maya等3D软件中,一般首先通过建模建立所需要的场景、角色、等,而表达式动画的实质是将这些建模中所定义的场景物体、角色等定义为对象,结合采用面向对象的程序设计方法,在表达式编程中利用参数来控制这些对象,这些参数可以是时间参数,也可以是对象的一个参数受控于另一个参数来产生某种数学运算下的动画轨迹,最终实现建立与改变模型与动画的设计。故通过表达式创建出的三维动画就称为表达式动画。

除了特别加以说明,一般情况下,表达式动画对物体运动的控制是全程的,而且只要表达式中关联的数学模型描述是对的,那么动画中受控物体属性值一般就不会出现错误动作。

例如,九大行星运动轨迹都是椭圆,显然这种动画用轨迹动画很难实现,但用表达式动画结合数学中椭圆公式的应用,就很易于实现;而且,表达式动画实现中,通过修改几个简单的参数就可以很轻松地调整椭圆轨迹、形状等,相比于关键帧动画需要修改大量参数而言,方便得多。

2 脚本

2.1 MEL

MEL(Maya Embedded Language),意思就是“Maya内嵌语言”,是Maya自带的高级编程语言,由于涉及到对Maya中建模得到的物体对象的操作,建议必须具备有面向对象编程语言的基础的用户学习它。

Maya中所有的用户界面,包括菜单、视窗、各种工具都是MEL语言编写而成的。用户在Maya中进行的所有操作,无论是通过菜单还是通过命令行,或者是采用其他方式对场景或场景中的物体进行的操作,实际上都是通过调用MEL命令实现的。

Maya的MEL命令对用户是完全开放的,即给出了一个开放的拓展空间,用户可以自己扩展和定制Maya。比如,用户可以编写自己的界面而不必用类似C++这种较为底层的外部开发工具,用户可以像搭积木一样随意拼装自己的工具,可以自己开发Maya默认状态下不能提供的功能,或重新组织Maya的功能等,即通过MEL,可以按照自己的喜好在Maya下创建出特定的项目环境。

2.2 脚本使用

在脚本中有三种运行MEL命令的方法:

如果返回值在以后不需要保留引用,则可以作为独立语句运行;

如果返回值在以后需要保留引用,比如想将返回值存入某变量,则可以考虑将其放入反引号中;

如果想在字符串中构造某命令并执行它,则使用eval函数命令。

MEL脚本使用的情况无非是如下几种需求:

在Script editor窗口或纯文本编辑器下产生MEL程序;

执行用户建模、动画、渲染等的脚本程序;

可以按项目特定的场景自定义UI,则用户使用MEL指令时可以脱离Maya的UI,直接使用热键,访问快速而方便;

直接给某属性输入准确的值;

比如用MEL脚本建立一个球:

1)打开记事本;

2)在记事本中输入:

Global proc mysp()

{

sphere -p 0 0 0 -ax 0.5 1 0 -ssw 0 -esw 300 -r 1.5 -d 3 -ut 0 -tol 0.01 -s 16 -nsp 16 -ch 1;

}

3)保存该文件,文件名:mysp.mel(注意后缀!);

4)之后运行该文件,就可以在Maya按mysp.mel脚本文件中的制定参数中建立一个球。

当然,脚本运行的环境设置、脚本书写的基本规则、变量的定义、MEL中的数学逻辑运算等,因篇幅原因,不再详细解释。

3 MEL和表达式的区别

1) MEL是间接控制物体属性,是Maya编程的核心,也是利用Maya在3D世界自由创作的必需的语言工具;而表达式是直接控制物体属性;

2) 在属性赋值或取值方面:在表达式编程中可以直接用“=”;而MEL脚本中则通过函数getAttr和setAttr来实现;

3) 表达式里有time和frame这两个变量可以调用,而MEL无法直接使用(通过其他方法使用,比如currentTime -q);等。

参考文献:

[1] “火星时代”网站资源.Autodesk Maya培训系列[Z].

[2] 张宝荣.Maya总动员—动画编程篇[M].北京:清华大学出版社,2011.

上一篇:简述市级电视天气预报制作技术 下一篇:如何用ActionScript3.0代码实现位图的导入与分...