🍇
添加快捷方式
分享
表达式-wiggle()在多维参数上的单独震动解答
输入“/”快速插入内容
🍇
表达式-wiggle()在多维参数上的单独震动解答
用户69
用户69
2024年10月22日修改
一、
基础解释
wiggle(freq, amp, octaves = 1, amp_mult = .5, t = time)是基本形式,
wiggle(2,20)括号里面写5个数组,
但是我们一般只写两个,即wiggle(频率,幅度),频率是每秒钟震动次数,
freq=频率(设置每秒抖动的频率);
amp=振幅(每次抖动的幅度);
octaves=振幅幅度(在每次振幅的基础上还会进行一定的震幅幅度,很少用);
amp_mult=频率倍频(默认数值即可,数值越接近0,细节越少;越接近1,细节越多);
t=持续时间(抖动时间为合成时间,一般无需修改);
一般只写前两个数值即可
频率是2也就是每秒钟震动2次,频率是0.5的话也就是每秒震动0.5次即2秒震动1次。
幅度是在基数(即做表达式的参数的原数值)的基础上上下进行震动。
position书写wiggle(2,20),X和Y轴两个方向进行随机位移,1秒震动2次,震幅为 ±20
二、
单向震动方法1:分别定义X,Y变量到滑杆(Slider)
如何进行单向震动呢?比如如何在x轴向上wiggle(2,20)的方式震动而在y轴wiggle(3,25)的方式震动呢?
1.
添加2个效果器 Slider1,Slider2,并分别进行赋值wiggle();
Expression Controls > Slider
2.
选择属性,例如position,赋于表达式
x=effect("Slider1")("Slider");
y=effect("Slider2")("Slider");
[x,y]
x,y分别链接slider1,slider2,也就是添加2个slider的效果器(滑杆)
三、单向震动方法2:书写一个表达式完成效果
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);