maya中,表达式和MEL的详细区别是什么?

2024-11-16 20:57:41
推荐回答(2个)
回答1:

表达式 可以理解为 依靠时间驱使的一段mel脚本程序

表达式本身并没有什么神奇之处,只是让某个属性在时间变化(或者状态变化,包括手动去调整其位置等等)的情况下,牵连地引发另外一个属性的变化

写出来就是 y = F(x) F就是表达式本身,

最简单的表达式大概就是 y = x, 比如你可以让一个球在前进时同时旋转,这就是因为它的位移牵连影响到了其旋转。

表达式也可以非常复杂,同时控制多个属性,多个粒子或者多个场景的变化

---------------------

MEL本身就是一种语言,在这种语言上你可以完成一系列事情,仅此而已。

MAYA的所有操作都是基于MEL,包括表达式,所以你可以理解MEL是MAYA的底层结构,但是不是最底层,因为下面还有MAYA API以及最最底层的MAYA CORE

---------------------

对于用户来说,特别是MAYA用户,有句老话叫条条大路通罗马,就是说完成一个任务,可以有很多种不同的办法,对于动画来说,表达式可能能够实现某个效果,同时其他操作也可以达到类似效果,所以在这个意义上,弄清楚他们的区别,不如弄清楚谁的效率更高。

如果简单地排队的话,效率从低到高(仅就动画一件事来说!):
表达式 < MEL < MAYA API

后来居上的python 应该介于MEL与MAYA API之间

回答2:

虽然你没问API,我看大家都在说它,就我理解API是指Maya对外提供的一些命令,除了参数以外,执行过程是我们见不到的,我们也改变不了的。就像炒菜,把各种东西放在锅里,我们可以控制放多少东西,火多大,但锅里面的化学反应过程如果没人告诉我们的话,我们不知道也控制不了。我们可以向命令行输入Maya提供的API命令(函数)以及参数,在Maya帮助里有命令的详细解释以及参数说明。

mel是在API基础上的脚本文件,用文本格式写成。脚本的写法参照C语言语法,关键字基本相同,只是变量定义及函数Maya使用了自己的说明方式。函数(命令)API与脚本中说明方式也可能略有不同。脚本顾名思义就是将API(不能改变)命令进行组合、分配、运用以减小操作者的劳动强度。脚本会在执行时由Maya解释成API命令执行。Maya所提供的API命令对程序的控制非常详尽,一旦详尽自然就会变得非常琐碎,从Maya正常操作中你就可以感觉到,每个属性里有数不尽的节点,节点中又有数不尽的属性,Maya把节点与节点属性作为程序的主要操作对象。总的说来,还像炒一盘菜,但不想自己炒,只想动嘴,然后找了一个人,告诉他如何炒,多大火等等,买了菜给他,剩下的由他来做,等做好了吃就行了。

表达式是Maya提供的另一种操纵API的方式,形式看起来像脚本(个人认为语法不如脚本多,语义表达也不如脚本清楚,但容易写,更直接),表达式一定是A=B,A结果由B行为来驱动,脚本所支持的一些语法也可以用在表达式里,可以直接操纵场景中的物体,表达式只是个“式子”,但“式子”也有优势,就是简洁,方便。就像炒菜,这回找了个厨师,买来柿子与鸡蛋,然后告诉他我要吃木须柿子,不用告诉他怎么炒,等着吃就行了。

我说的虽然一知半解,但无论如何,如果想在程序上真的了解Maya,开发插件或进行动力学模拟,还需要仔细查阅Maya的API命令,以及这些命令(函数)含义、用法,在脚本中的用法等等。脚本语言并不复杂,你学过C很容易上手,表达式也很简单,需要了解的就是使用方式。如果想在作品上有所成就,切记Maya仅仅是个工具,而且网上有很多教程。所需要的只是提高自己的艺术修养,以及有坐下来做点东西的勇气。好多人都一知半解,没有耐心,似乎什么都会做,其实什么都做不成。

当真能坐下来强迫自己做出好作品时,其实Maya很简单;当作品真正完成时,发现其实根本不必对Maya了解那么多。