AE彈性表示式——讓動畫更生動

彈性表示式

彈性表示式,Bounce 和 Overshoot!利用這個兩個表示式你可以輕而易舉地實現各種彈性動畫,如抖動、彈跳動畫等。是的,你沒聽錯,只要998個贊,你就能輕鬆獲得隨意加彈性Buff!趕快拿起你的滑鼠點贊吧!

表示式的是國外大神寫出來的,感謝大神的分享,我們只能膜拜了!而且作者非常無私的貼出了兩個(Bounce & Overshoot)可以直接進行關鍵幀的表示式,再次膜拜(室友問我為什麼跪著打字)。後面我會提到怎麼去快速理解和掌握這個彈性兩個表示式。

首先我們先來了解一下什麼是Bounce 和 Overshoot吧!

Bounce 效果(重力效果)

AE彈性表示式——讓動畫更生動

Overshoot 效果(彈性效果)

AE彈性表示式——讓動畫更生動

我可以簡單將:

·Bounce 理解為“反彈、類似重力作用”,如 皮球落地反彈的效果;

·Overshoot(過沖、誇張的)理解為“抖動”,如 果凍抖動的效果。

說了這麼多,我們來看錶達式的真容吧!

Overshoot(彈性表示式–加上後你的效果就是Q彈Q彈的)

freq = 3;

decay = 5;

n = 0;

if (numKeys > 0){

n = nearestKey(time)。index;

if (key(n)。time > time) n——;

}

if (n > 0){

t = time - key(n)。time;

amp = velocityAtTime(key(n)。time - 。001);

w = freq*Math。PI*2;

value + amp*(Math。sin(t*w)/Math。exp(decay*t)/w);

}else

value

Bounce Back(重力反彈表示式–加上後你的效果就是蹦躂蹦躂的)

e = 。7;

g = 5000;

nMax = 9;

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

}

tCur = 0;

segDur = 2*vl/g;

tNext = segDur;

nb = 1; // number of bounces

while (tNext

vl *= e;

segDur *= e;

tCur = tNext;

tNext += segDur;

nb++

}

if(nb

delta = t - tCur;

value + vu*delta*(vl - g*delta/2);

}else{

value

}

}else value

AE如何使用表示式

第一步,將上面兩套表示式ctrl+c複製到你的筆記中,方便你的隨時隨地的呼叫它。

看到這步,恭喜你!你已經學會了80%了。

下面我將拿用的最多的彈性效果來舉例吧。

step 1:為要做動畫的物體打關鍵幀

(位置移動,縮放,透明度都行,我們以位移為例)

AE彈性表示式——讓動畫更生動

未加表示式的勻速運動效果(是不是很生硬):

AE彈性表示式——讓動畫更生動

step 2:複製彈性表示式

freq = 3;

decay = 5;

n = 0;

if (numKeys > 0){

n = nearestKey(time)。index;

if (key(n)。time > time) n——;

}

if (n > 0){

t = time - key(n)。time;

amp = velocityAtTime(key(n)。time - 。001);

w = freq*Math。PI*2;

value + amp*(Math。sin(t*w)/Math。exp(decay*t)/w);

}else

value

step 3:按住ALT鍵點選關鍵幀碼錶,把表示式複製進去。大功告成!

AE彈性表示式——讓動畫更生動

TAG: time表示式KeyOvershootMath