AE wiggle 表達式用法:wiggle(5, 20) 是每秒晃 5 次、幅度 20,只晃單軸與無縫循環寫法

哈囉!又到了快樂的教學時光。AE wiggle 是掛在屬性上的表達式,寫成 wiggle(freq, amp):freq 是每秒晃幾次,amp 是晃動幅度,單位跟你掛的那個屬性一樣。例如在位置上寫 wiggle(5, 20),就是每秒晃 5 次、幅度 20。這篇把五個參數、只晃單一軸、定時開關和無縫循環一次拆開,寫法對照 After Effects 表達式參考文件與 Dan Ebberts 的循環做法。
先講清楚來源:下面引用的參數說明與範例,來自 docsforadobe 維護的 After Effects 表達式參考(社群整理的文件,不是 Adobe 官網),我們看到的頁面頁尾標示 2026 年 1 月 23 日。Adobe helpx 的官方說明頁,我們這邊打開都是 403,所以選單與面板的操作步驟不寫,只寫表達式本身。
wiggle 五個參數:只有前兩個必填
完整語法是 wiggle(freq, amp, octaves, amp_mult, t),後面三個是選填。照參考文件的定義整理:
- freq:頻率,單位是每秒晃幾次。
- amp:幅度,單位跟被套用的屬性一樣。
- octaves:疊加幾層雜訊,預設 1,數字越大細節越多。
- amp_mult:每多一層,幅度要乘上多少,預設 0.5,越接近 1 高頻細節越明顯,越接近 0 細節越少。
- t:起始時間,預設就是目前的合成時間 time,單位秒。
多數人一開始只會用前兩個,這樣完全夠用。後面三個等你想要「更碎的手持感」或「循環」再補。

wiggle 寫在哪裡,參考文件範例有兩種寫法
表達式是寫在屬性上,不是寫在圖層上。參考文件的語法寫成 thisLayer.position.wiggle(freq, amp),範例裡則同時出現 position.wiggle(5, 20, 3, 0.5) 和直接寫 wiggle(5, 10) 兩種寫法。兩種我們都看過文件示範,所以貼在屬性的表達式欄位時,直接寫 wiggle(5, 20) 就可以。
另外有個容易混淆的 temporalWiggle()。文件說它是在被晃動過的時間點上取樣,所以那個屬性必須有動畫(有關鍵影格),因為它改的是取樣時間,不是數值本身。想讓一個靜止的屬性亂晃,用的是 wiggle(),不是 temporalWiggle()。
octaves 與 amp_mult:多疊幾層細節
參考文件給的例子是 position.wiggle(5, 20, 3, 0.5)。照它的說明,主要的晃動約每秒 5 次、平均幅度約 20 像素,另外再疊兩層細節:頻率 10 次、幅度 10 像素,以及頻率 20 次、幅度 5 像素。你可以把它想成一個大幅度的慢晃,上面再蓋兩層越來越小、越來越快的抖動,看起來比較像手持,而不是單純的左右搖。
如果你只想要乾淨的緩慢漂浮,就不要加 octaves,保持 wiggle(0.5, 30) 這種低頻小幅度。畫面節奏比特效數量重要,晃動太多反而讓觀眾分心。
只晃單一軸:wiggle 回傳的是陣列
位置、縮放這類屬性有兩個以上的值,wiggle() 回傳的是陣列,x 是第 0 格、y 是第 1 格。想讓某一軸不晃,就把那一格換成原本的 value。參考文件有兩個現成範例:
// 縮放:兩個方向晃同樣的量
const v = wiggle(5, 10);
[v[0], v[0]];
// 只讓 Y 軸晃,X 軸維持原值
const freq = 3;
const amp = 50;
const w = wiggle(freq, amp);
[value[0], w[1]];
3D 圖層只想讓 x、y 晃的話,Adobe 社群 2022 年有一串討論,被標為正確答案的回覆(作者 Mylenium)寫法是把 wiggle 的結果拆開,z 軸用原值:
myWiggle = wiggle(5, 10);
X = myWiggle[0];
Y = myWiggle[1];
Z = value[2];
[X, Y, Z]
同一串討論裡,另一位社群專家提到某個外掛工具有「分軸晃動」的選項。我們的做法是:能用內建表達式解決的,就不先推外掛,上面這幾行已經涵蓋常見的單軸需求。

指定幾秒開始晃、幾秒停止
參考文件的範例用 if 判斷時間,決定從哪一秒開始晃、哪一秒停。原理很單純:沒到時間就回傳 value(原值),到了才回傳 wiggle():
// 從 2 秒開始晃
timeToStart = 2;
if (time > timeToStart) {
wiggle(3, 25);
} else {
value;
}
// 2 秒開始、4 秒停止
timeToStart = 2;
timeToStop = 4;
if ((time > timeToStart) && (time < timeToStop)) {
wiggle(3, 25);
} else {
value;
}
文件在這段註明:可以用任何表達式取代 wiggle,來開始或結束它的影響,所以這個寫法不只限於晃動。
wiggle 本身不會循環:用第五個參數補成無縫循環
wiggle 是隨機的,不會自己回到起點,所以做 GIF 或循環背景的時候,頭尾會對不上。參考文件特別提醒,要用 wiggle 的 time 參數做循環,並連到 Dan Ebberts 的 looping wiggle 頁面。他的寫法如下:
freq = 1;
amp = 110;
loopTime = 3;
t = time % loopTime;
wiggle1 = wiggle(freq, amp, 1, 0.5, t);
wiggle2 = wiggle(freq, amp, 1, 0.5, t - loopTime);
linear(t, 0, loopTime, wiggle1, wiggle2)
他的說明大意是:wiggle1 走的是時間 0 到 3 秒的那一段隨機路徑,wiggle2 走的是 -3 秒到 0 的那一段,然後用 linear() 從 wiggle1 慢慢混到 wiggle2。用數字推一次(這是我們自己的推演,不是文件原文):t = time % 3,所以 t 永遠在 0 到 3 之間反覆。t = 0 時,輸出等於 wiggle1 在時間 0 的值;t 走到 3 時,輸出等於 wiggle2,也就是時間 3 - 3 = 0 的 wiggle 值,兩端相同,所以頭尾接得起來。想改成 5 秒一圈,只要把 loopTime 改成 5。
如果你的屬性有關鍵影格,要循環的是那段動畫而不是隨機晃動,那是另一種做法,可以看我們前幾天寫的 AE loop 指令 loopOut 四種循環。wiggle 沒有關鍵影格,不能直接套 loopOut。
六指淵的建議
先表態:我們建議多數剪輯新手把 wiggle 當成「微動」用,不要當成主要動畫。理由有三個,都來自上面查到的內容。第一,wiggle 是隨機晃動,文件只給你頻率與幅度兩個旋鈕,你控制不了它在第幾秒往哪邊走;要精準的動作,還是關鍵影格。第二,需要頭尾一致的循環時,要多寫那段 time 參數的公式,不是加一個選項就好,不想寫就不適合用在循環素材上。第三,單軸、定時、循環都能用幾行內建表達式做完,我們不建議為了這些功能先買外掛。
適合用的情境:手持攝影機的輕微晃動、漂浮物件的緩慢飄移、字卡的細小抖動。不適合的情境:需要每次輸出都完全一樣的動作、需要對準節奏點的動作,這兩種請改用關鍵影格或循環版本。幅度寧小勿大,少一個效果常常更好看。
幾個常見狀況與延伸寫法
想要一格一格跳,而不是平滑晃動?參考文件的 posterizeTime(updatesPerSecond) 可以把一個屬性的更新頻率壓低,不用跟合成的幀率一樣。文件的範例只示範搭配 random(),搭配 wiggle 的寫法 posterizeTime(12); wiggle(3, 25) 是我們依參數定義推出來的,沒有在 AE 實測,貼上後請先預覽。更完整的抽幀說明可以看 Posterize Time 鎖 12 fps 的做法與 4 個坑。
兩個圖層晃得一模一樣?文件的 seedRandom 頁面寫到,offset 這個值也用來控制 wiggle() 的初始值。文件沒有寫兩個圖層預設會不會晃得一樣,所以若你發現兩層的晃動很像,可以在表達式最前面加 seedRandom(1, true) 這類不同的數字,再自己預覽比較。
想看舊文?站上 2020 年有一篇 用亂數表自己做震動模板,是 Premiere 裡不靠 AE 的做法,思路和 wiggle 不同,可以對照。更多表達式文章都放在 AE教學 分類。
如果你的團隊是想把影音與設計流程導入 AI、讓重複工作自動化,可以先約 30 分鐘免費諮詢,聊聊從哪個環節開始比較順。
參考資料
- After Effects Expression Reference:Property attributes and methods(wiggle、temporalWiggle),頁尾標示 2026 年 1 月 23 日
- After Effects Expression Reference:Examples(開始與停止 wiggle)
- After Effects Expression Reference:Global(posterizeTime),頁尾標示 2025 年 1 月 28 日
- After Effects Expression Reference:Random Numbers(seedRandom)
- MotionScript:Dan Ebberts, Looping Wiggle
- Adobe Community:Wiggle 3D layer on X and Y only(2022-10-07)
企業 AI 導入諮詢
公司想導入 AI 卻不知道從哪開始?約 30 分鐘免費諮詢
留下聯絡方式,顧問會先了解你們的團隊與流程,再一起找出最值得先用 AI 改善的環節。方便的話,在下方寫上公司名稱與產業。
六指淵特效教學網編輯團隊,2015 年起以友善的中文教學分享 After Effects、Premiere、Photoshop、特效合成與 MG 動態設計,讓特效沒有距離。









