AE彈性表達(dá)式——讓動(dòng)畫(huà)更生動(dòng)

AE彈性表達(dá)式

彈性表達(dá)式,Bounce 和 Overshoot!利用這個(gè)兩個(gè)表達(dá)式你可以輕而易舉地實(shí)現(xiàn)各種彈性動(dòng)畫(huà),如抖動(dòng)、彈跳動(dòng)畫(huà)等。是的,你沒(méi)聽(tīng)錯(cuò),只要998個(gè)贊,你就能輕松獲得隨意加彈性Buff!趕快拿起你的鼠標(biāo)點(diǎn)贊吧!

表達(dá)式的是國(guó)外大神寫(xiě)出來(lái)的,感謝大神的分享,我們只能膜拜了!而且作者非常無(wú)私的貼出了兩個(gè)(Bounce & Overshoot)可以直接進(jìn)行關(guān)鍵幀的表達(dá)式,再次膜拜(室友問(wèn)我為什么跪著打字)。后面我會(huì)提到怎么去快速理解和掌握這個(gè)彈性?xún)蓚€(gè)表達(dá)式。

首先我們先來(lái)了解一下什么是Bounce 和 Overshoot吧!

Bounce 效果(重力效果)

Overshoot 效果(彈性效果)

我可以簡(jiǎn)單將:

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

·Overshoot(過(guò)沖、夸張的)理解為“抖動(dòng)”,如 果凍抖動(dòng)的效果。

說(shuō)了這么多,我們來(lái)看表達(dá)式的真容吧!

Overshoot(彈性表達(dá)式–加上后你的效果就是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(重力反彈表達(dá)式–加上后你的效果就是蹦跶蹦跶的)

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 < 0) ? -1 : 1;

}

tCur = 0;

segDur = 2*vl/g;

tNext = segDur;

nb = 1; // number of bounces

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*delta/2);

}else{

value

}

}else value

AE如何使用表達(dá)式

第一步,將上面兩套表達(dá)式ctrl+c復(fù)制到你的筆記中,方便你的隨時(shí)隨地的調(diào)用它。

看到這步,恭喜你!你已經(jīng)學(xué)會(huì)了80%了。

下面我將拿用的最多的彈性效果來(lái)舉例吧。

step 1:為要做動(dòng)畫(huà)的物體打關(guān)鍵幀

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

未加表達(dá)式的勻速運(yùn)動(dòng)效果(是不是很生硬):

step 2:復(fù)制彈性表達(dá)式

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鍵點(diǎn)擊關(guān)鍵幀碼表,把表達(dá)式復(fù)制進(jìn)去。大功告成!

學(xué)習(xí)更多干貨特效技能,關(guān)注VX公眾號(hào):光影7號(hào)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容