很多人都认为After effect中的表达式应用需要编程专家,有时只要一行的表达式就能产生看似很复杂的效果。After effect中的表达式类似于动力学脚本,应用表达式后任何关键帧都会永久保持与之的链接关系,这样的解释是不是很抽象,让我们一起来实践中学习研究。
笔者制作的《动感昆明》片头曾获得中国广播电视协会城市广播电视台委员会形象创意类奖,其中利用AE表达式制作了串通整片的圆形构成就运用了表达式控制其比例大小。如果不使用表达式控制的话,逐个调整将是非常琐碎的工作,具体操作如下:
1.由于本片头使用橘红色和蓝色来彰显现代都市气息,建立黄色、橘红色等类似色solid层,如图1所示,使用mask变为圆形构成,如图2所示。
2.对每个solid层运用表达式,选取其中一层transform项中的scale,在菜单中点击animation单击add expression,如图3所示。
3.注意到在scale旁有一个小三角形,如图4中红色区域,点击其选择数学表达式sin项。如图5所示。
4.在表达式区域中,填写上如图6红色区域所示。通过其来控制圆形的大小变化,对其它层笔者调整了math前的乘数,如图7所示。
5.整个片头都使用这组圆形来贯穿,成为形的主体构成。如图8所示。定版使用如图9所示,栏目隔断使用圆形如图10所示。
 图4 |
 图5 |
 图6 |
 图7
|
通过以上表达式的运用,可以发现片头的制作速度大为缩短,并且这样的效果并非手动调整能够完全达到,简单的说表达式就是为特定的参数赋予特定值的一条或一组语句,在本文中就是让AE表达式自动计算当前图层当前时间的大小参数值,其大小随着数值公式sin的属性同步变化。AE表达式以Javascript语言(一种用于网站开发的高级通用工业标准程序语言)为基础,Javascript包括一套丰富的语言工具来创建更复杂的表达式,当然包括本文中最基本的数学三角函数的运算。尽管这是一种高级的语言,但是一句表达式控制一个参数,因为一句表达式仅连接在一个参数上,仅将值赋予该参数上。
下面让我们再看看更有趣的表达式运用,同时也纠正一种误解:就是很多人认为表达式只能和每层的比例(scale)透明度(opacity)位置(positon)旋转(rotation)等有关,其实我们也可以将表达式运用到很多滤镜上:
A.选择笔刷工具brush,画出一条弯曲的路径,将下面的表达式运用到stroke's end参数上
freq = .5;
50*(1-Math.cos(freq*time*Math.PI*2))
将下面的表达式运用到stroke的颜色参数上,
if (index <=4){linear(index,1,4,[0,1,1,1],[1,0,1,1])}else if (index <= 8){linear(index,5,8,[1,0,1,1],[1,1,0,1])}else{linear(index,9,12,[1,1,0,1],[0,1,1,1])}
最后运用表达式到stroke的旋转参数上,
(index-1)*30
复制这个stroke11次,动画看到这个轮转的图形每两秒从中心生长出去,又渐隐消失回到中心,通过表达式自动控制了位置和色彩,可以无休止的将Paint动画进行到底。如图11。

图11
B.运用liquify特技,如图12。
将如下的表达式运用到Distortion Percentage参数上
freq = 2;
(1-Math.cos(freq*time*Math.PI*2))*50
这个结果是滤镜效果在应用值和0%之间震荡,如图13,我想如果将表达式运用到end参数上将会是风中摆动的效果。

图12

图13
[Page]
C.同时表达式的魔力还在于可以将图层和音频结合,这充分使用到AE中音频转换成关键帧的功能,如图14,导入Hex Hi.wav是左声道,HexFloor.wav是右声道,运用Convert Audio to Keyframes,产生Audio Amplitude层,分别控制着左、右和双声道,Medium Yellow Solid的scale参数用下面的表达式链接到左声道:
s = thisComp.layer("Audio Amplitude").effect("Left Channel")("Slider");
scale + [s,s]
类似的同样将Medium Cyan Solid链接到右声道,结果是可以看到两个图层的比例同步于所链接的音频声道。

图14
以上所展示的只是AE魔力的很小一部分,笔者在制作片头时经常运用表达式,尝到甜头后,自己很注意收集国外高手所书写的表达式,自己研究,充分挖掘AE内置功能的能力,运用到实际工作中来,当然也仅以此文抛砖引玉,希望和各位高手学习。