目录

表达式简介

使用表达式的时机

解析表达式

为参数加入表达式

拾取线

向量与维数

参数值范围

插值方法

对象

全局对象

默认对象

方法与属性

矢量运算

实例应用

其他材料

表达式深入

参考表格

工程文件连接

返回主页

参数值范围

当使用表达式中的拾取线来建立参数之间的关系时,AE会自动纠正由于错误的维数匹配导致的错误,但是这种纠正之后的表达式并不意味着就是你所需要的,物理错误是避免了,但是逻辑错误仍然会影响你的创作。.

在这里特别强调一下,有时候你需要调整当前参数值以匹配目标参数。例如,在前面的例子中我们使用图层的旋转属性来控制图层的不透明度属性,你会发现当旋转属性达到100度时,不透明度属性就达到了上限,但是我们想要的效果是当图层完成一个周期的旋转时其不透明度,我们就需要调整参数范围以达到我们的需要。

缩放参数范围值的方法很简单,可以利用公式(当前连接参数/当前连接参数范围上限=目标连接参数/目标连接参数范围上限),还是使用上面的例子来说明,我们需要将旋转参数的范围(0~360)缩放到不透明度参数的范围(0~100),所以我们就需要为不透明度加上表达式:

rotation / 360 * 100

从而就达到了我们需要的效果,不透明度在0~360度范围内变化:

使用这个简单的小技巧可以完成很多期望的效果。例如,使用一个轮胎的素材作为图层,我们就可以利用该图层的位置属性来驱动图层的旋转属性,我们只需缩放位置属性来为旋转属性建立正确的连接表达式,因为轮胎每旋转360度就会移动一个周长的距离,所以我们应该这样书写表达式:

     rotation=distance/circumference*360:

在这里distance代表图层的运动距离,circumference代表轮胎的周长,但是我们怎样将这个公式转化为AE能识别的表达式语句呢?与前面的旋转不透明度的例子比较这个方程式好象发生了本质的变化,但是事实不是这样的。

开始我们提到了我们是要使用这个表达式,让图层的位置属性来控制图层的旋转属性——模拟真实的轮胎行进动画。但是位置属性真的能正确控制旋转属性么,或者说旋转属性能准确的控制位置属性么?答案当然是否定的,你可以试着使用拾取线让位置属性驱动旋转属性,为位置属性设置关键帧,再观察旋转属性,虽然有所变化但根本不是我们需要的效果。

因为我们的轮胎只会在水平方向上滚动,位置属性中的X轴参数(还记得二维数组么),也就是position[0]来计算轮胎移动的距离;它将从合成窗口的最左(X轴方向的0点)边开始运动,随着向合成窗口的右侧移动,X值会慢慢增大。(AE的坐标原点位于合成窗口的左上角)

前面我们提到过,轮胎行进的距离为一个周长的时候旋转的角度正好为360度,否则这个轮胎就会出现在地面上滑行的现象,所以我们使用上面提到的公式,轮胎的周长是当前连接参数范围上限,360度是目标连接参数范围上限,所以正确的方程式为:

rotation=position[0]/circumference*360

当然了轮胎不可能只行进一个周长的距离只完成一周旋转,换句话说周长与360度不是理论意义上的范围上限,但是不用担心,我们的表达式只是起到为范围之间的转换建立一个比例系数的作用,真正的范围要由计算得来。

接下来我们需要定义轮胎的周长,圆的周长应该等于圆周率派乘以圆的直径(c=2*R*PI):

我们可以使用图层的宽度作为轮胎的直径(理论上讲,轮胎的直径无限趋近于图层的宽度),而Javacript内置的PI值精确度非常的高,我们可以使用函数'Math.PI'来计算PI值,(当然,也可以直接粗略写成3.14作为PI值)这样周长的表达式为:

circumference=width*Math.PI;

最后我们可以从表达式中删除'rotation=' ,我们前面提到过,计算得出的值会自动赋予加入表达式的参数。当将这些语句组织起来的时候我们就得到了最终的表达式:

distance=position[0];
circumference=width*Math.PI;
distance/circumference*360;

留给读者一个小练习,试着使用图层的缩放属性来控制旋转属性,哈哈,其实很简单,自己动动脑筋吧!
下面这个特殊旋转效果你能利用所学知识完成么:

 
单击这里 下载上面动画效果的工程文件。 (Window用户单击这里.)

也许有人会问,为什么要花费这么大的经历来讲解参数范围呢,通过为旋转和位置属性设置同步关键帧不是同样可以完成这种真实的效果么。对于匀速运动的图层来说设置关键帧确实可以达到这种效果,但是如果是模拟变速运动利用这种设置关键帧的方法就会出现图层在地面上滑动的状况,手动设置变速运动非常困难,但是使用表达式就方便多了。

如果要得到更详细的描述讲解, 请单击这里.

所有内容版权归JJ Gifford.所有,翻译权归CG频道所有,违者必纠。