罡渡晨星-马罡晨 发表于 2015-7-1 14:19

关于AE表达式wiggle()在多维参数上的单独震动解答



本文由罡渡晨星编写,如有转载请注明出处。

   对于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");    然后在Slider Control上面书写wiggle(2,20),在Slider Control2上面书写wiggle(3,25)就可以完成单独震动。    方法二,书写一个表达式完成效果。但是要明白一个问题,wiggle是多维的属性,当直接书写在二维或者三维四维数组上是可以的,比如在图层的position上书写wiggle是可以的,不会报错,而且这个层是二维层三维层都可以,但是如果这样书写:    可以看到这样书写就会报错,错误说数组不能扩展到大于一个数值,也就是说表达式中的x和y仅仅代表了一个数值,不能代表多个数值,而wiggle是多维的,当然不能直接赋予x或者y这样一维的数组。    但是如果直接书写wiggle的话,不能单个控制图层在x和y轴上单独的运动,这种情况怎么办呢?    在AE中,可以在多维数组后面添加来限定维数,这些在《罡渡晨星AE表达式全析教程》里面有详细的解释,如果想深入学习研究可以看一看。代表x轴,代表y轴,代表z轴,这样就可以限定多维数组中的单轴数值。AE里面的参数不仅仅只有三个维数,有些会很多,比如颜色是四维数组。这样在wiggle后面添加一个维数的限定就可以进行单轴的赋值了。    所以解决单轴不同震动的问题可以书写这样的表达式。x=wiggle(2,20);y=wiggle(3,25);,y]    OK,问题解决。有人可能问到那x和y这俩数组不就是多维的了吗?对,没错,但是在最后返回的时候添加了和就限定了多维参数中的其中一个维数的数值了。
    再举一个例子,我有一个三维的图层,在position上赋值,x轴数值为20,y轴数值为50,z轴数值为wiggle(3,30),可以书写表达式x=22;
y=50;
z=wiggle(3,30);
]
    好了问题解决了!    再出一个题大家可以看看是什么效果,一个三维图层在position上书写表达式如下,a=wiggle(2,25);,a,a]    看看每个轴是一起震动还是单独震动。

CY 发表于 2017-2-5 15:55

回答你的问题:全部一起运动。
a=wiggle(2,25);
,a,a]
同wiggle(2,25);一样。

沐雨的感伤 发表于 2016-11-3 23:40

资源甚好,且阅且珍惜!

仰空越梦 发表于 2016-10-21 23:48

资源甚好,发帖艰辛,且阅且珍惜!
页: [1]
查看完整版本: 关于AE表达式wiggle()在多维参数上的单独震动解答