对于AE中wiggle的表达式大家并不陌生,是AE中最为常用的表达式之一,但是大家对于在单方向的运动规律却并不熟悉,在这里写一篇博文解释一下。
这个问题在我的表达式教学中有过讲解,方法是通过使用链接的方式把wiggle中的一个参数链接到一个slider上单独控制,这样是完全可以的。但是有位细心的买家问到,如何不通过链接而是用书写的表达式来单独控制单个方向的震动呢?
wiggle(freq, amp, octaves = 1, amp_mult = .5, t =time)是基本形式,wiggle()括号里面写5个数组,但是我们一般只写两个,即wiggle(频率,幅度),频率是每秒钟震动次数,频率是2也就是每秒钟震动2次,频率是0.5的话也就是每秒震动0.5次即2秒震动一次。幅度是在基数(即做表达式的参数的原数值)的基础上上下进行震动。好了,这是最基础的解释。
如果对二维的固态层的position书写wiggle(2,20)的话就是在X和Y轴两个方向进行震动。如何进行单向震动呢?比如如何在x轴向上wiggle(2,20)的方式震动而在y轴wiggle(3,25)的方式震动呢?
方法一,单独链接slider,也就是添加2个slider的特效,在position上面书写
x=effect("Slider Control")("Slider");
y=effect("Slider Control2")("Slider");
[x,y]
然后在SliderControl上面书写wiggle(2,20),在SliderControl2上面书写wiggle(3,25)就可以完成单独震动。
方法二,书写一个表达式完成效果。但是要明白一个问题,wiggle是多维的属性,当直接书写在二维或者三维四维数组上是可以的,比如在图层的position上书写wiggle是可以的,不会报错,而且这个层是二维层三维层都可以,但是如果这样书写:
可以看到这样书写就会报错,错误说数组不能扩展到大于一个数值,也就是说表达式中的x和y仅仅代表了一个数值,不能代表多个数值,而wiggle是多维的,当然不能直接赋予x或者y这样一维的数组。
但是如果直接书写wiggle的话,不能单个控制图层在x和y轴上单独的运动,这种情况怎么办呢?
在AE中,可以在多维数组后面添加[0][1][2]来限定维数,这些在《罡渡晨星AE表达式全析教程》里面有详细的解释,如果想深入学习研究可以看一看。[0]代表x轴,[1]代表y轴,[2]代表z轴,这样就可以限定多维数组中的单轴数值。AE里面的参数不仅仅只有三个维数,有些会很多,比如颜色是四维数组。这样在wiggle后面添加一个维数的限定就可以进行单轴的赋值了。
所以解决单轴不同震动的问题可以书写这样的表达式。
x=wiggle(2,20);
y=wiggle(3,25);
[x[0],y[1]]
OK,问题解决。有人可能问到那x和y这俩数组不就是多维的了吗?对,没错,但是在最后返回的时候添加了[0]和[1]就限定了多维参数中的其中一个维数的数值了。这些在我的表达式教程里面有过讲解,讲的还是比较细致的,在这里给自己做个小广告哈
再举一个例子,我有一个三维的图层,在position上赋值,x轴数值为20,y轴数值为50,z轴数值为wiggle(3,30),可以书写表达式
x=22;
y=50;
z=wiggle(3,30);
[x,y,z[2]]
好了问题解决了!
再出一个题大家可以看看是什么效果,一个三维图层在position上书写表达式如下,
a=wiggle(2,25);
[a[0],a[1],a[2]]
看看每个轴是一起震动还是单独震动。