AE表達式一直是大家學習AE過程中的一道坎,涉及代碼網上教程資源又不多,于是很多人都沒有完全地領略到AE表達式的魅力。
一直以來,大多數人都不想去碰AE的表達式,覺得和編程挂鈎的東西都很難。今天就分享一套純AE表達式的教程(分上下篇)。
1.反彈
e = .3; // 彈力
g = 1; // 重力
nMax = 10; // 最大反彈次數
n = 0;
if (numKeys > 0){
n = nearestKey(time).index;
if (key(n).time > time) n--;
}
if (n > 0){
t = time - key(n).time;
v = -velocityAtTime(key(n).time - .001)*e;
vl = length(v);
if (value instanceof Array){
vu = (vl > 0) ? normalize(v) : [0,0,0];
}else{
vu = (v < 0) ? -1 : 1;
}
tCur = 0;
segDur = 2*vl/(g*1000);
tNext = segDur;
nb = 1;
while (tNext < t && nb <= nMax){
vl *= e;
segDur *= e;
tCur = tNext;
tNext = segDur;
nb
}
if(nb <= nMax){
delta = t - tCur;
value vu*delta*(vl - (g*1000)*delta/2);
}else{
value
}
}else
value
2.彈性
amp = .04;//幅度
freq = 2;// 值越高, 頻率越高
decay = 5;// 值越高, 延遲越小
n = 0;
if (numKeys > 0){
n = nearestKey(time).index;
if (key(n).time > time){
n--;
}
}
if (n == 0){
t = 0;
}else{
t = time - key(n).time;
}
if (n > 0){
v = velocityAtTime(key(n).time - thisComp.frameDuration/10);
value v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);
}else{
value;
}
3.彈性變形
maxDev = 20; //最大形變大小
spd = 30; //速度
decay = 1.0; //靜止快慢
t = time - inPoint;
x = scale[0] maxDev*Math.sin(spd*t)/Math.exp(decay*t);
y = scale[0]*scale[1]/x;
[x,y]
4.彈性文字
delay = 0.03; // 延遲
freq = 3; // 頻率
amp = 60; // 幅度
decay = 10; // 值越小,彈性越大
Speed = 0.8; // 值越小,動畫越慢
myDelay = delay*textIndex;
t = (time - inPoint)*Speed - myDelay;
if (t >= 0){
freq;
amp;
decay;
s = amp*Math.cos(freq*t*2*Math.PI)/Math.exp(decay*t);
[s,s] }else{
value
}
5.随機循環(對随機效果再進行循環)
freq = 1; // 頻率
amp = 110; // 幅度
loopTime = 3; // 循環時間
t = time % loopTime;
wiggle1 = wiggle(freq, amp, 1, 0.5, t);
wiggle2 = wiggle(freq, amp, 1, 0.5, t - loopTime);
linear(t, 0, loopTime, wiggle1, wiggle2)
————————————
如果你還不是很了解這方面但是又想系統提升影視後期制作從事這方面工作或者接單掙錢,戳→(這裡有專業的系統課程可以幫到你)!想了解就聯系我吧!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!