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 軸保持不變
這樣,圖層的位置就會在 Z 軸上隨機擺動,而 X 和 Y 軸保持固定。
使用這些表達式,你可以輕鬆地控制 wiggle 只在一
個維度上進行擺動,從而創建你所需要的動畫效果。
x = wiggle(3, 50)[0]; // 取得 wiggle 的 X 值
y = transform.position[1]; // 保持 Y 值不變
[x, y]
*添加衰減
如果你想讓抖動隨時間衰減,可以使用一些複雜的表達式。例如,下面這個表達式會讓抖動在 5 秒內逐漸減弱:
pathPosition = thisComp.layer("Path Layer").position;
wiggleEffect = wiggle(2, 30);
[pathPosition[0] + wiggleEffect[0], pathPosition[1] + wiggleEffect[1]]
*與其他表達式結合
你也可以將 wiggle 與其他表達式結合使用。例如,你可以讓一個物體在沿著一個路徑運動的同時添加抖動效果:
使用 wiggle 表達式可以為你的動畫添加更多的隨機性和自然感,使你的作品更加生動和有趣。希望這些資訊對你有幫助!
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
效果。這個表達式應該實現的是:在指定的時間段內(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 的頻率和幅度。
這樣可以確保你的 wiggle 效果在每個 secondsToLoop 週期內循環,創造出平滑的循環動畫。