【AE表達式】透明過渡效果
還是那個FRANK外國大大最喜歡的,這個是透明過渡表達式。透明過渡的表達式我看過好幾個了,基本上都是一句話了事,這個大大秉承了一貫的風格,寫的比較多,控制的方面也比較多。一起來看看吧,里面還是有幾個地方值得我們學習,對學習寫表達式的朋友很有幫助。?
transition = 20;?
if (marker.numKeys<2){?
tSecs = transition / ( 1 / thisComp.frameDuration);?
linear(time, inPoint, inPoint + tSecs, 0, 100) - linear(time, outPoint - tSecs, outPoint, 0, 100)?
}else{?
linear(time, inPoint, marker.key(1).time, 0, 100) - linear(time, marker.key(2).time, outPoint, 0, 100)?
}?
還是一句一句來:?
transition = 20;?
這里定義的是幀數,也就是多少幀完成這個漸變過渡。呵呵,很帥吧,別人都是用秒。?
if (marker.numKeys<2){}?
判斷標記點數量,如果小于2執(zhí)行大括號里的內容。為什么這么做呢?其實這個表達式可以用于兩種情況:當默認時,沒有標記點,表達式會在圖層的最前20幀和最后20幀添加過渡動畫;如果圖層有標記,那么表達式會在圖層開始到第一個標記和第二個標記到圖層結束添加過渡效果。?
tSecs = transition / ( 1 / thisComp.frameDuration);?
把幀數轉換成秒,這個表達式很新,可以用在很多精確控制的地方。thisComp.frameDuration 很多地方都解釋為“返回畫面的持續(xù)時間”,這個比較容易讓人誤解,我們連起來看 1 / thisComp.frameDuration 就當幀率好了,當你的對象圖層設置為25幀每秒的時候,1 / thisComp.frameDuration=25,那前面定義的幀數除以這個幀率就得到秒了。?
linear(time, inPoint, inPoint + tSecs, 0, 100) - linear(time, outPoint - tSecs, outPoint, 0, 100);?
這句涉及到linear()函數,它的解釋如下:?
Number or Array linear(t, tMin, tMax, value1, value2) {t, tMin和 tMax are 數, value1和value2 是數或數組} 當 t <= tmin時返回value1;當t >= tMax時,返回value2 ;當tMin < t < tMax 時, 返回 value1和value2 的線性聯合。?
那我們根據上面那個函數的解釋,看看linear(time, inPoint, inPoint + tSecs, 0, 100)這句。?
inPoint 其實就是對象圖層的進入點時間,整句的意思就是,時間線在對象圖層的入點時間前,函數返回值為0,在入點時間與入點時間加定義幀數時間中間時,函數返回值在0到100之間線性增長,在入點時間加定義幀數時間之后為100,這個表達式是放到透明度屬性中的,所以函數返回值就是透明度值。?
linear(time, outPoint - tSecs, outPoint, 0, 100)?
這句和上句差不多,就是outPoint為對象圖層的結束點。?
linear(time, inPoint, inPoint + tSecs, 0, 100) - linear(time, outPoint - tSecs, outPoint, 0, 100);?
這句中間的那個“-”要注意,當時間線經過 inPoint+tSecs 后前面那個linear()返回值已經是100了,所以當時間線在 outPoint-tSecs 后要減去第二個linear()返回值,這樣才能讓整體值回到0。?
else{}?
與上個IF連用,當IF條件不成立的時候執(zhí)行大括號里的內容,也就是說當有標記的時候執(zhí)行。?
linear(time, inPoint, marker.key(1).time, 0, 100) - linear(time, marker.key(2).time, outPoint, 0, 100)?
和上面介紹的那句差不多,只不過 marker.key(1).time 取的是第一個標記點時間, marker.key(2).time 取的是第二個標記點時間。
轉載自豆瓣:https://site.douban.com/215474/widget/notes/16140669/note/524238426/
原作者:想象C?