很多人都認為After effect中的表達式應用需要編程專家,有時只要一行的表達式就能產生看似很復雜的效果。After effect中的表達式類似于動力學腳本,應用表達式后任何關鍵幀都會永久保持與之的鏈接關系,這樣的解釋是不是很抽象,讓我們一起來實踐中學習研究。
筆者制作的《動感昆明》片頭曾獲得中國廣播電視協會城市廣播電視臺委員會形象創意類獎,其中利用AE表達式制作了串通整片的圓形構成就運用了表達式控制其比例大小。如果不使用表達式控制的話,逐個調整將是非常瑣碎的工作,具體操作如下:
1.由于本片頭使用橘紅色和藍色來彰顯現代都市氣息,建立黃色、橘紅色等類似色solid層,如圖1所示,使用mask變為圓形構成,如圖2所示。
2.對每個solid層運用表達式,選取其中一層transform項中的scale,在菜單中點擊animation單擊add expression,如圖3所示。
3.注意到在scale旁有一個小三角形,如圖4中紅色區域,點擊其選擇數學表達式sin項。如圖5所示。
4.在表達式區域中,填寫上如圖6紅色區域所示。通過其來控制圓形的大小變化,對其它層筆者調整了math前的乘數,如圖7所示。
5.整個片頭都使用這組圓形來貫穿,成為形的主體構成。如圖8所示。定版使用如圖9所示,欄目隔斷使用圓形如圖10所示。
 圖4 |
 圖5 |
 圖6 |
 圖7
|
通過以上表達式的運用,可以發現片頭的制作速度大為縮短,并且這樣的效果并非手動調整能夠完全達到,簡單的說表達式就是為特定的參數賦予特定值的一條或一組語句,在本文中就是讓AE表達式自動計算當前圖層當前時間的大小參數值,其大小隨著數值公式sin的屬性同步變化。AE表達式以Javascript語言(一種用于網站開發的高級通用工業標準程序語言)為基礎,Javascript包括一套豐富的語言工具來創建更復雜的表達式,當然包括本文中最基本的數學三角函數的運算。盡管這是一種高級的語言,但是一句表達式控制一個參數,因為一句表達式僅連接在一個參數上,僅將值賦予該參數上。
下面讓我們再看看更有趣的表達式運用,同時也糾正一種誤解:就是很多人認為表達式只能和每層的比例(scale)透明度(opacity)位置(positon)旋轉(rotation)等有關,其實我們也可以將表達式運用到很多濾鏡上:
A.選擇筆刷工具brush,畫出一條彎曲的路徑,將下面的表達式運用到stroke's end參數上
freq = .5;
50*(1-Math.cos(freq*time*Math.PI*2))
將下面的表達式運用到stroke的顏色參數上,
if (index <=4){linear(index,1,4,[0,1,1,1],[1,0,1,1])}else if (index <= 8){linear(index,5,8,[1,0,1,1],[1,1,0,1])}else{linear(index,9,12,[1,1,0,1],[0,1,1,1])}
最后運用表達式到stroke的旋轉參數上,
(index-1)*30
復制這個stroke11次,動畫看到這個輪轉的圖形每兩秒從中心生長出去,又漸隱消失回到中心,通過表達式自動控制了位置和色彩,可以無休止的將Paint動畫進行到底。如圖11。

圖11
B.運用liquify特技,如圖12。
將如下的表達式運用到Distortion Percentage參數上
freq = 2;
(1-Math.cos(freq*time*Math.PI*2))*50
這個結果是濾鏡效果在應用值和0%之間震蕩,如圖13,我想如果將表達式運用到end參數上將會是風中擺動的效果。

圖12

圖13
[Page]
C.同時表達式的魔力還在于可以將圖層和音頻結合,這充分使用到AE中音頻轉換成關鍵幀的功能,如圖14,導入Hex Hi.wav是左聲道,HexFloor.wav是右聲道,運用Convert Audio to Keyframes,產生Audio Amplitude層,分別控制著左、右和雙聲道,Medium Yellow Solid的scale參數用下面的表達式鏈接到左聲道:
s = thisComp.layer("Audio Amplitude").effect("Left Channel")("Slider");
scale + [s,s]
類似的同樣將Medium Cyan Solid鏈接到右聲道,結果是可以看到兩個圖層的比例同步于所鏈接的音頻聲道。

圖14
以上所展示的只是AE魔力的很小一部分,筆者在制作片頭時經常運用表達式,嘗到甜頭后,自己很注意收集國外高手所書寫的表達式,自己研究,充分挖掘AE內置功能的能力,運用到實際工作中來,當然也僅以此文拋磚引玉,希望和各位高手學習。