實用AE表達式推薦(二)

六、LOOPIN&LOOPOUT

1、介紹:讓關鍵幀動畫循環下去的語言。

2、案例:如下圖,已經為圓形位置屬性設置好了四個關鍵幀動畫。

打開關鍵幀,選擇關鍵幀選項的最後一個控制項,調出常用表達式,選擇loopin,表達式自動生成。

如下圖,使用loopin後,動畫循環從開始到第一個關鍵幀結束,也就說動畫只在開始位置到第一個關鍵幀之間做循環;loopout則從最末尾的關鍵幀開始循環直到整個合成的結尾。

簡單的說,如果關鍵幀的位置在圖層起始位置,在關鍵幀後需要不斷循環動畫則直接使用loopout,如果關鍵幀位置不在起始位置,需要在起始位置到關鍵幀所在位置中間循環關鍵幀,則使用loopin。

3、案例:接案例2,看一下關鍵幀類型type = "cycle",表達式會照原樣不斷循環關鍵幀動畫,表達式如下:

loopOut(type = "cycle", numKeyframes = 0)

將type="cycle"修改為type="pingpong",表達式正向+反向循環關鍵幀,表達式顯示如下:

loopOut(type = "pingpong", numKeyframes = 0)

4、案例:接案例三,將表達式numKeyframes = 0修改為numKeyframes = 2,整個表達式如下:

loopOut(type = "pingpong", numKeyframes = 2)

如上圖可以看到,numKeyframes控制表達式從第幾幀開始循環關鍵幀,numKeyframes=2,則表示只從第二個關鍵幀開始循環動畫。

七、LINEAR&EASE

1、介紹:動畫插值轉換計算方法

2、案例:如下圖,想要通過左邊滑桿上下運動精確控制右邊圓的旋轉。

在圓的旋轉屬性上打開表達式,並選擇常用表達式linear。

整體表達式顯示如下:

linear(t, tMin, tMax, value1, value2)

這個表達式無法直接使用,需要定義相應的值。

t:需要綁定的對象的屬性值,直接可以使用拉索工具鏈接到控制按鈕的Y值屬性上。

tmin&tmax:定義屬性大小值範圍,也就是按鈕Y值在滑桿兩個端點位置Y的值。

value1&value2:定義轉換屬性的變動值,也就是本案例中該圓旋轉的角度範圍。

拉索工具鏈接t的值;移動按鈕到滑桿兩端,獲取位置Y的值,定義到表達式,並定義圓旋轉的範圍,整個表達式顯示如下:

t=thisComp.layer("button").transform.position[1]linear(t, 90, 641, 360, 0)

EASE(平滑)和linear(線性)在作用上是一樣的,ease能夠產生更為平滑的動畫效果。

八、CLAMP

1、介紹:限定屬性的數值變動範圍。

2、案例:

接上一個項目,如果直接通過滑鼠上下拖動左邊按鈕,在位置X上可能會出現左右晃動移位,其次是Y軸上下沒有限制,按鈕能超出滑桿的頂端範圍,接下來就解決這個問題。

將按鈕圖層位右鍵分離為單獨尺寸,位置屬性x寫入關鍵幀,數值與原屬性值相同,表達式位置鎖定,保證按鈕在x軸位置保持固定數值,這樣直接拖動按鈕不會左右移位的情況。

3、案例:

繼續處理按鈕Y值的上下限範圍,為Y屬性寫入如下表達式:

clamp(transform.yPosition,82,655)

括弧中第一個值定義需要控制的屬性,可以直接使用拉索工具鏈接到Y位置,第二三個值分別表示Y值的上限和下限。

表達式綁定後Y的變動範圍只在83~655之間,超出該範圍屬性值不再變動,也就是按鈕也始終控制在滑桿的兩個頂端範圍之間。

九、WIGGLE

1、介紹:超級常用的隨機晃動表達式。

2、案例:為圓形位置寫入表達式如下:

wiggle(5,100)

wiggle(頻率,幅度),頻率數值越大,晃動越激烈,幅度數值越大,晃動範圍越廣。

十、IF---ELSE

1、作用:判斷表達式,如果---否則---

2、案例: 在製作AE模板的時候需要為使用者提供自定義的選擇項,接案例九,為用戶提供自定義選擇抖動開關,選擇菜單欄-效果-表達式控制-複選框控制。

此時,點選複選框沒任何作用,其並沒有與圓形的屬性做表達式綁定;選擇的圓形旋轉屬性,寫入表達if(寫入狀態下使用拉索工具鏈接到效果控制項欄複選框屬性),整個表達式如下:

if(effect("複選框控制")("複選框")==1)wiggle(5,50) else 0;

整個表達式的含義是:如果複選框==1(被選擇),則wiggle表達式起作用,否則0(無效果)

十一、LENTH

1、介紹:獲取字元屬性。

2、案例:如下圖,我們想要通過空文本層直接顯示出圓形1圓形2之間的距離。

選擇文本圖層源文本屬性,寫入表達式如下:

a=thisComp.layer("cycle").transform.position[0]b=thisComp.layer("cycle 2").transform.position[0]length(a,b)

a和b分別使用拉索工具鏈接到兩個圓形位置的屬性X值,這樣文本層就可以即時獲取到兩個圓形的間距。

AE表達式系列

初見AE表達式 - 知乎專欄

推薦16個實用的AE表達式(一) - 知乎專欄
推薦閱讀:

AE的渲染與輸出技巧
全面分析AE跟蹤系統(一)
搞不懂的AE圖層混合模式

TAG:AdobeAfterEffects | AfterEffects特效 | 后期特效 |