After Effects 表達式基礎(chǔ)知識 — 擺動

Adobe After Effects中的表達式是一個非常有價值的工具,它可以在運動設(shè)計過程中節(jié)省時間,并且可以幫助創(chuàng)建動畫,這在關(guān)鍵幀中幾乎是不可能完成的。然而,它們一開始學(xué)起來有點嚇人,主要是因為它們涉及到代碼工作。
如果你是一個初學(xué)者,重要的是要從只有幾行的基本表達式開始;我個人學(xué)會的第一個表達式是wiggle表達式,它是一個非常好的開始。要對你的圖層應(yīng)用一個基本的擺動表達式,你需要在圖層屬性的秒表上選擇+單擊(Mac)或Alt+Click(Win)。在這個例子中,我們將把扭動應(yīng)用到形狀層的位置屬性上。

在選擇點擊圖層后,屬性值將變成紅色,表達式編輯器應(yīng)該出現(xiàn)在時間軸上。在表達式編輯器中,輸入以下代碼:
wiggle(5, 50)
這樣做的目的是告訴After Effects,你想每秒擺動(或隨機移動)這個圖層5次,在任何方向最大移動50像素。試著在這里使用不同的值,看看它對你的圖層有什么影響。

這是因為wiggle()是AE表達式引擎中內(nèi)置的一個JavaScript函數(shù)。你不需要學(xué)習(xí)JavaScript來理解基本的表達式,你只需要理解這個。
wiggle函數(shù)接收參數(shù),在這個例子中,參數(shù)是5和50,然后它根據(jù)這些參數(shù)做一些數(shù)學(xué)運算,并為每一幀返回一個值。然后,應(yīng)用了表達式的圖層屬性在每一幀都被分配了返回值。
考慮到這一點,我們可以開始做一些更高級的擺動表達式。例如,如果你只想在X軸上擺動正方形,會怎么樣?幸運的是,有一個簡單的方法可以做到這一點,同時還可以用下面的表達式把所有東西都放在一行:
[wiggle(5, 150)[0], value[1]]

position屬性可以分解為[x,y]值,所以在這種情況下,x=wiggle表達式的返回值,而y=原來未改變的y軸值。試著顛倒一下順序,看看對你的層有什么影響。
嘗試在其他圖層屬性上使用擺動表達式。
擺動當(dāng)然不僅限于位置屬性,還可以通過將擺動表達式應(yīng)用于縮放和旋轉(zhuǎn)等內(nèi)容進行實驗。擺動表達式的一個常見用途是通過預(yù)合成場景、擺動整個合成上的值并放大它以隱藏幀邊緣的任何間隙來模擬晃動的相機。

更高級的擺動表達式
在本教程的初級部分,我只展示了有兩個參數(shù)的表達式,因為大多數(shù)時候你只需要這些參數(shù),然而wiggle表達式的完整語法如下:
wiggle(freq, amp, octaves=1, amp_mult=0.5, t=time)
以下是根據(jù)官方Adobe 官方文檔對每個參數(shù)的說明:
freq value is the frequency in wiggles per second. amp value is the amplitude in units of the property to which it is applied. octaves is the number of octaves of noise to add together. This value controls how much detail is in the wiggle. Make this value higher than the default of 1 to include higher frequencies or lower to include amplitude harmonics in the wiggle. amp_mult is the amount that amp is multiplied by for each octave. This value controls how fast the harmonics drop off. The default is 0.5; make it closer to 1 to have the harmonics added at the same amplitude as the base frequency, or closer to 0 to add in less detail. t is the base start time. This value defaults to the current time. Use this parameter if you want the output to be a wiggle of the property value sampled at a different time.
freq值是以每秒擺動次數(shù)為單位的頻率。
amp值是振幅,單位是它所應(yīng)用的屬性。
octaves是要加在一起的噪聲的八度數(shù)。這個值控制擺動的細節(jié)有多少。使這個值高于默認(rèn)的1,以包括更高的頻率,或者更低,以包括擺動中的振幅諧波。
amp_mult是指在每個八度的情況下,amp乘以的量。這個值控制諧波下降的速度。默認(rèn)值是0.5;如果接近于1,就可以在與基頻相同的振幅下加入諧波,如果接近于0,就可以加入較少的細節(jié)。
t是基礎(chǔ)開始時間。該值默認(rèn)為當(dāng)前時間。如果你希望輸出是在不同時間采樣的屬性值的擺動,請使用這個參數(shù)。
在應(yīng)用 wiggle 表達式時,基本開始時間很容易理解和試驗,但octaves和amp_mult選項有點難以考慮,因此我創(chuàng)建了一個圖表來幫助可視化它們?nèi)绾斡绊懕磉_式的結(jié)果值。

為此,我創(chuàng)建了一個在整個屏幕上從左向右移動的圖層,使用相同的擺動種子值復(fù)制了三次,并將擺動限制在Y軸上。 然后,我將表達式烘焙到關(guān)鍵幀,并重疊生成的運動路徑。
希望您已經(jīng)從這篇博文中學(xué)到了很多關(guān)于擺動表達式的知識,并且您會在自己的項目中輕松嘗試它!
如果對你有所幫助,別忘了點贊關(guān)注哦!
