After Effects Wiggle 表達式
基本語法
wiggle(frequency, amplitude)
frequency
:每秒鐘的抖動次數。amplitude
:抖動的幅度。
基礎應用
假設你想讓一個圖層的位置
隨機抖動,每秒抖動 2 次,每次的幅度為 50 像素。你可以在位置屬性中添加以下表達式:wiggle(2, 50)
應用於旋轉
如果你想讓一個圖層的旋轉隨機抖動,每秒抖動 3 次,每次的幅度為 10 度,可以在旋轉屬性中添加:wiggle(3, 10)
應用於透明度
同樣,你可以讓一個圖層的透明度隨機變化,每秒變化 1 次,變化幅度為 20%:wiggle(1, 20)
限制單一維度的抖動
如果你只想讓某一個維度抖動,例如只讓X軸位置抖動,可以使用以下表達式,假設你的圖層位置是 [x, y]
,並且你希望只讓 X 軸擺動,而 Y 軸保持不變
選擇圖層的
位置
屬性,並按住Alt
鍵(Windows)或Option
鍵(Mac),點擊位置的碼錶圖標來打開表達式編輯器。在表達式編輯器中輸入以下代碼:
x = wiggle(3, 50)[0]; // 取得 wiggle 的 X 值 y = transform.position[1]; // 保持 Y 值不變 [x, y]
這樣,圖層的位置就會在 Z 軸上隨機擺動,而 X 和 Y 軸保持固定。
使用這些表達式,你可以輕鬆地控制 wiggle
只在一個維度上進行擺動,從而創建你所需要的動畫效果。
添加衰減
如果你想讓抖動隨時間衰減,可以使用一些複雜的表達式。例如,下面這個表達式會讓抖動在 5 秒內逐漸減弱:
freq = 3; amp = 50; decay = 1.0; // 衰減速率 t = time; w = wiggle(freq, amp); [w[0] * Math.exp(-decay * t), w[1] * Math.exp(-decay * t)]
與其他表達式結合
你也可以將 wiggle
與其他表達式結合使用。例如,你可以讓一個物體在沿著一個路徑運動的同時添加抖動效果:
pathPosition = thisComp.layer("Path Layer").position; wiggleEffect = wiggle(2, 30); [pathPosition[0] + wiggleEffect[0], pathPosition[1] + wiggleEffect[1]]
使用 wiggle
表達式可以為你的動畫添加更多的隨機性和自然感,使你的作品更加生動和有趣。希望這些資訊對你有幫助!
循環擺動 Looping Wiggle (by Dan Ebberts)
創建一個在指定時間內循環的 wiggle
效果。這個表達式應該實現的是:在指定的時間段內(secondsToLoop
),生成一個平滑的隨機抖動,然後循環這個效果。
frequency = 2; // 每秒擺動次數 amplitude = 40; // 擺動的像素數量 secondsToLoop = 3; // 循環時間(以秒為單位) t = time % secondsToLoop; wiggle1 = wiggle(frequency, amplitude, 1, 0.5, t); wiggle2 = wiggle(frequency, amplitude, 1, 0.5, t - secondsToLoop); linear(t, 0, secondsToLoop, wiggle1, wiggle2)
frequency
和 amplitude
定義了 wiggle
的頻率和幅度。
secondsToLoop
定義了循環的時間段。t = time % secondsToLoop
計算當前時間在循環周期內的位置,確保t
在0
和secondsToLoop
之間。wiggle1
和wiggle2
創建了兩個wiggle
效果,分別對應當前循環周期的開始和結束時的抖動。linear(t, 0, secondsToLoop, wiggle1, wiggle2)
使用線性插值在wiggle1
和wiggle2
之間創建平滑過渡,實現循環效果。
這樣可以確保你的 wiggle
效果在每個 secondsToLoop
週期內循環,創造出平滑的循環動畫。