After Effects 表達式入門:用 loopOut 與 wiggle 打造自動循環動畫
什麼是 AE 表達式?為什麼值得學
如果你用 After Effects 做動態設計已經有一段時間,你一定有過這種經驗:為了一個簡單的循環動畫,手動複製貼上了幾十個關鍵影格,然後客戶說「可以讓它再多循環幾次嗎?」那個瞬間你真的會想砸鍵盤。
表達式(Expressions)就是為了解決這類問題而存在的。它是 AE 內建的一套腳本語言,基於 JavaScript,讓你用幾行程式碼就能控制屬性的數值變化。不需要手動打關鍵影格,動畫會自動計算、自動循環、自動產生隨機效果。聽起來很厲害?其實入門門檻沒你想像中那麼高。
表達式 vs 關鍵影格
先釐清一個觀念:表達式不是要取代關鍵影格,而是補強它。關鍵影格適合需要精確控制時間點的動畫,表達式則適合自動化、重複性、或程序性的效果。兩者搭配使用才是最強的組合。
舉個例子,你用關鍵影格做好一段位移動畫,然後用 loopOut() 讓它無限循環——這就是表達式最經典的用法。零額外工作量,無限次循環。
如何加入表達式
在 AE 裡加入表達式非常簡單。按住 Alt 鍵(Mac 是 Option),然後點擊你想控制的屬性旁邊的小碼錶圖示。你會看到屬性值變成紅色,同時出現一個文字編輯區域,這就是你輸入表達式的地方。
輸入完畢後,點擊編輯區外面的任何地方就會套用。如果表達式有語法錯誤,屬性旁邊會出現一個黃色警告圖示,點開就能看到錯誤訊息。
loopOut() 完全攻略
loopOut() 大概是所有 AE 表達式裡使用頻率最高的一個。它的功能很單純:把你用關鍵影格定義的動畫,在最後一個關鍵影格之後自動重複播放。再也不用複製貼上了,人生突然變得美好。
cycle 模式:最基本的無限循環
loopOut("cycle")
這是最常用的模式。假設你在第 0 秒和第 1 秒之間做了一段位移動畫,加上這行表達式後,動畫會在第 1 秒結束後自動從頭開始,無限循環。就是這麼簡單。
你也可以加上第二個參數來指定循環的關鍵影格數量:
// 只循環最後 2 個關鍵影格之間的動畫
loopOut("cycle", 2)
pingpong 模式:來回擺盪
loopOut("pingpong")
pingpong 模式跟 cycle 類似,但它不是回到起點重新播放,而是倒著播回去再正著播。效果就像乒乓球一樣來回彈。這個模式特別適合做擺動效果,比如鐘擺、搖擺的燈、或者角色站著時的微小晃動。
我個人很喜歡用 pingpong 來做 UI 動畫,比如按鈕的 hover 狀態。設定好放大的關鍵影格,pingpong 會自動做出放大縮小的脈動感,看起來非常舒服。
offset 模式:持續累加
loopOut("offset")
offset 模式比較特別,它不會回到起點,而是在前一次循環結束的位置繼續往上加。假設你做了一段從 0 移動到 100 的動畫,用 offset 模式的話,第二次循環會從 100 移到 200,第三次 200 到 300,以此類推。
這個模式最實用的場景是做無限捲動的背景或文字跑馬燈。不需要算好時間軸有多長,讓 offset 自動處理就對了。
continue 模式:延伸最後速度
loopOut("continue")
continue 模式會取最後兩個關鍵影格之間的速度,然後以相同的速度一直延伸下去。不是循環,是直線延伸。適合做飛出畫面、持續旋轉這類需要「一直走下去」的效果。
wiggle() 完全攻略
如果 loopOut 是表達式界的基本功,那 wiggle 就是讓動畫「活起來」的魔法。它能產生隨機但自然的抖動效果,模擬真實世界中的不規則運動。如果你有在看我們的AE 資訊圖表動畫教學,你會發現很多專業作品裡都大量使用 wiggle 來增加質感。
基本參數:頻率與振幅
wiggle(freq, amp)
// 範例:每秒抖 3 次,幅度 50
wiggle(3, 50)
wiggle 最基本就兩個參數:
- freq(頻率):每秒鐘抖動幾次。數字越大抖越快。一般 2-5 是比較自然的範圍。
- amp(振幅):每次抖動的最大幅度。這個數值取決於你套用的屬性,位移的話單位是像素,旋轉的話是角度。
一個小技巧:如果你想要抖動的幅度隨時間變化,可以把 amp 用關鍵影格控制的 slider 來驅動。比如場景一開始微微晃動,然後逐漸加劇,最後歸零——這種效果用在地震或爆炸場景超讚的。
進階參數:octaves 與 amp_mult
wiggle(freq, amp, octaves, amp_mult, t)
// 範例:多層次細緻抖動
wiggle(2, 30, 3, 0.5)
wiggle 其實還有三個選用參數,大部分教學都不會提到,但它們可以讓抖動效果精緻很多:
- octaves:疊加的雜訊層數,預設 1。數字越大,抖動裡會包含越多高頻的小震動,讓效果更真實。建議不超過 4,否則運算量很大。
- amp_mult:每層雜訊的振幅倍率,預設 0.5。設定 0.5 的話,第二層的振幅會是第一層的一半,第三層是四分之一,以此類推。
- t:時間參數,通常不需要改。但如果你想讓 wiggle 的隨機在某個時間點凍結,可以用這個參數。
只抖動單一軸向
wiggle 預設會在所有軸向都抖,但很多時候你只想抖 X 或 Y。這需要稍微進階一點的寫法:
// 只在 X 軸抖動
w = wiggle(3, 50);
[w[0], value[1]]
// 只在 Y 軸抖動
w = wiggle(3, 50);
[value[0], w[1]]
這個技巧在做手持攝影機效果時特別有用。真實的手持晃動通常水平方向比垂直方向明顯,你可以分開設定不同的頻率和振幅。
組合技:loopOut + wiggle 實戰
單獨用 loopOut 或 wiggle 已經很強了,但把它們結合起來才是真正的魔法時刻。以下是幾個我工作中實際用過的範例。
範例一:無限捲動背景
這是做 MG(Motion Graphics)最常見的需求之一。把一張長圖做成無縫捲動的背景:
// 位置屬性的表達式
velocity = -200; // 每秒移動 200 像素
x = value[0] + velocity * time;
y = value[1];
[x % 1920, y] // 用取餘數實現無限循環
如果再加上一點 wiggle 微調,捲動速度就不會那麼死板:
velocity = -200 + wiggle(0.5, 20)[0] - value[0];
x = value[0] + velocity * time;
[x % 1920, value[1]]
範例二:呼吸動畫效果
讓角色或元素有「呼吸感」的縮放動畫,是提升作品質感的秘密武器:
// 套用在 Scale 屬性
freq = 0.8; // 呼吸頻率
amp = 3; // 縮放幅度(百分比)
s = amp * Math.sin(time * freq * Math.PI * 2);
[value[0] + s, value[1] + s]
用 Math.sin 比用 wiggle 更適合呼吸效果,因為呼吸是有規律的。但如果你想讓呼吸更自然一點,可以在外面再包一層小幅度的 wiggle。
範例三:手持攝影機晃動
這個效果在做 MV 風格或紀錄片風格的 MG 時超好用。套用在攝影機或 Null 物件的位置和旋轉屬性上:
// 位置的表達式
wiggle(1.5, 15, 3, 0.6)
// 旋轉的表達式
wiggle(0.8, 1.5, 2, 0.5)
位置用比較大的振幅和頻率,旋轉用小幅度低頻率,這樣看起來就很像真人手持拍攝的感覺。如果你也對程序化動畫有興趣,推薦看看Cavalry 程式驅動動畫入門,那是另一套完全不同的思路。
效能優化與注意事項
表達式雖然方便,但用不好的話會嚴重拖慢你的專案效能。以下是幾個我整理的注意事項:
- 避免巢狀 wiggle:一個屬性上疊太多 wiggle 會讓運算量暴增。如果需要複雜的隨機效果,用一個 wiggle 搭配數學函式比較好。
- octaves 不要設太高:wiggle 的 octaves 參數每加 1,運算量差不多翻倍。3-4 已經很夠了,超過基本上看不出差別。
- 善用 posterizeTime():如果你的表達式不需要每一格都重新計算,用
posterizeTime(12)這類語法可以降低取樣率,大幅提升效能。特別適合做像素風或低幀率風格的動畫。 - 複雜邏輯改用 ExtendScript:如果你的表達式超過十幾行,考慮改用 AE 的腳本功能。表達式是每幀都會執行的,腳本只執行一次。
- 記得預渲染:含大量表達式的合成,建議在最終輸出前先預渲染成中間格式,這樣後續調整不用每次都等表達式重新計算。
結語:表達式是動態設計師的超能力
學會 loopOut 和 wiggle 這兩個表達式,你的 AE 工作流程絕對會有質的飛躍。它們不只省時間,更重要的是讓你的動畫更靈活、更容易修改。客戶說要改循環次數?一行表達式搞定。要加點隨機感?wiggle 秒殺。
當然,表達式的世界遠不只這兩個函式。像是 valueAtTime()、linear()、ease() 這些也都非常實用。但我的建議是先把 loopOut 和 wiggle 用到滾瓜爛熟,這兩個能解決你日常工作中七八成的表達式需求。剩下的等遇到具體問題再學就好,別一次灌太多東西把自己搞混了。
動態設計最重要的還是創意和審美,技術只是實現想法的工具。但當你的工具箱裡多了表達式這把利器,你能實現的想法就多了好幾個量級。趕快打開 AE 試試看吧!
繼續閱讀
After Effects 2026 新功能完整介紹:向量工作流與 3D Substance 材質
After Effects 2026 帶來了哪些新功能?向量工作流升級、免費 3D 材質庫、可變字體動畫——一次看完所有更新。
相關文章
After Effects 2026 新功能完整介紹:向量工作流與 3D Substance 材質
After Effects 2026 帶來了哪些新功能?向量工作流升級、免費 3D 材質庫、可變字體動畫——一次看完所有更新。
After Effects Shape Layer 動畫教學:用形狀圖層打造專業 MG 動態設計
想做出那種流暢又有質感的 Motion Graphics 動畫嗎?Shape Layer 是 After Effects 裡最強大也最被低估的功能之一。這篇教學帶你從零開始,用形狀圖層打造專業級的 MG 動態設計。
你可能也喜歡
探索其他領域的精選好文