首页 百科知识 表达式基础

表达式基础

时间:2023-10-16 百科知识 版权反馈
【摘要】:对表达式Maya官方的解释是:表达式是用户键入的控制属性的命令。将这个表达式写在文本编辑框里,点击Create按钮就创建了一个表达式。的确如此,但是你在通道盒里面只能输入一个数字,而在表达式里,等号的右边却可以是一个“函数”。那么我们这就到MAYA里面去实现这个功能,看看到底是不是如我们所愿!这只是表达式的功能的一个很小的应用,希望能够对你有所启发,对于粒子的控制,表达式将会是一个必不可少的利器。

第二节 表达式基础

本节是对表达式基本概念的学习,如果你已经开始使用表达式了,请跳过此节。

上一节我们知道了粒子的本质就是一个数组,要控制粒子就只需要修改数组里面的粒子属性的数值就可以了。

img39

img40

下面我们就从本质上学习表达式:

对表达式Maya官方的解释是:表达式是用户键入的控制属性的命令。属性是物体的特性,比如,X缩放、Y转换、可见性等等。

所以表达式的本质就是:赋值。

那么如何赋值呢?很简单,把等号右边的赋值给等号左边的。

例如:“属性a=2;”就是让“属性a”等于2,就这么简单,当然记住每句表达式后面必须有;号,这很重要。接下来用个实例来学习表达式:

打开表达式编辑器的方法有很多种,除了使用菜单,还可以直接在属性通道盒里面,在想要写表达式的属性上面用鼠标单击右键,在弹出的菜单里选择expression…

在这里试着为nurbsSphere1的rotateX属性写表达式,使得这个属性永远等于45。

img41

我们在表达式编辑器里面很容易得到nurbsSphere1的rotateX属性的描述是:nurbsSphere1.rotateX。(物体属性的描述方法非常重要:Maya中物体的属性描述使用的格式是:“物体名称+.+属性名称”)

于是表达式就非常简单了:nurbsSphere1.rotateX=45。

将这个表达式写在文本编辑框里,点击Create按钮就创建了一个表达式。表达式编辑器的用法在这里就不多做描述了,在后面的学习中会逐步了解。

这样,我们就把nurbsSphere1的rotateX属性设置成了45。

可能你会问,这样做有什么意义?我直接在通道盒里面该就是了!的确如此,但是你在通道盒里面只能输入一个数字,而在表达式里,等号的右边却可以是一个“函数”。

什么是函数?还记得初中的知识吗?举个例子:y=kx+b这是条直线不是么?还有抛物线,双曲线,等等恐怕都忘掉了吧。忘掉了不要紧,我们只要知道函数能够返回一个特定的,可以预测的值就可以了。

还是一头雾水?OK没有问题,作了下面的练习,你就会豁然开朗,真正进入并且爱上神奇的表达式的世界。

先求解一道数学题:

img42

如图,已知车轮直径为:4.381092,向右方行驶了距离为X。

求:车轮旋转了多少度(Y)?

怎么样?这是一道中学的平面几何题。(做不来?忘掉公式了?都还给老师了吧,快点要回来,还是有用的。)

如果我们能解出来,想一下我们是不是可以在Maya中把“旋转角度”这个函数的解赋予轮子的Rotate属性?然后我们只要移动轮子,它就会自动旋转了,不是吗?这样做汽车动画的时候,就再也不用那么痛苦的手动调节车轮的旋转了!

接下来,我们就来实现这个功能:

这道题目的解很简单,利用中学所学的弧长公式:img43就可以了,于是我们有这样的结论:

L是弧长,也就是X;

R是半径,也就是直径的一半;

N就是旋转角度Y

所以这道题的答案是:Y=(180*X)/(3.14*2.1)

没错吧?如果X是车轮在Z轴上的位移也就是TranslateZ,那么Y不就可以是车轮沿着X轴旋转的角度RotateX了么?

所以就有了“某某.RotateX=(180*某某.TranslateZ)/(3.14*2.1);”这不就是前面我们所学的表达式的稍微复杂了一点而已么?那么我们这就到MAYA里面去实现这个功能,看看到底是不是如我们所愿!

打开场景文件expresion_che_start.mb,我们看到和题目一样的场景,在outliner里面选择Left_wheel组,这个组就是整个车轮,在通道盒里面,在RotateX上点击鼠标右键,在弹出菜单里面选择Expression …

建立表达式:Left_wheel.rotateX=(180*Left_wheel.translateZ)/(3.14*2.1);如果对这个表达式是怎么得来的有困难,请多看两遍上面的内容。

在通道盒里面,在RotateX点击鼠标右键,在弹出菜单里面选择Expression …:

img44

建立表达式:

img45

最终效果:

img46

选择Left_wheel组,使用移动工具,沿着X轴移动车轮,你会发现车轮随着你的拖车而非常自然的旋转,就如同在真实的环境里推车一样!

这只是表达式的功能的一个很小的应用,希望能够对你有所启发,对于粒子的控制,表达式将会是一个必不可少的利器。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈