马上注册,加入CGJOY,让你轻松玩转CGJOY。
您需要 登录 才可以下载或查看,没有帐号?立即注册
×
本文由罡渡晨星编写,如有转载请注明出处。
对于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] 然后在Slider Control上面书写wiggle(2,20),在Slider Control2上面书写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]] 看看每个轴是一起震动还是单独震动。
|