《AE教學》隨著音樂擺動的波形韻律動畫!讓物件跟著動次動!
哈囉~
經過幾篇的教學,看到有人想知道「跟著音樂中的Bass一起動的動畫圖」或者是「影片跟著Bass晃動」的方法 (你的聲音,我聽到了),那這次就來使用AE內建的效果和功能來完成這樣的動畫。

首先,挑選一首你要的音樂或有聲音的檔案:

步驟01:挑一首音樂匯入進來。
加入Audio Spectrum效果,底下的Audio Waveform其實也可以,兩者都能製作類似的動畫。

步驟02:加入Audio Spectrum效果。
這個效果內可以調整音樂動畫開始和結束頻率(長度)、波段數量、最大高度、持續時間、波段的厚度和柔化程度等等。

在這邊,我想讓波形動畫是圓形的,可以在中間畫一個圓形遮罩(按住SHIFT可以等比例畫圓)。

步驟03:用鋼筆工具畫一個圓形。
並且在Path內選擇該Mask。
音樂的部分當然是選擇音樂圖層。

步驟04:選擇音樂圖層。
不過當你拖拉時間軸欣賞他的波形時,可能會發現它的波被圖層範圍吃掉了。

被吃掉了!
那是因為遮罩的關係,所以將遮罩不作用即可。

步驟05:將遮罩關閉。
它有三種顯示的模式讓你玩~

三種顯示,一次滿足。
也可以複製一個同樣的圖層,疊兩種不同的顯示方式:

疊兩種模式。
底下還有一個功能可以讓波形平均於整個段落:

那剛剛提到的另外一個呢?
Audio Waveform也是類似的效果,

它一樣可以吃遮罩~

那差別在哪?
Waveform是波形,各個頻率的波形都疊在一起,所以一看就能知道現在這個聲音的大小。
Specturm則是頻譜,擁有每個頻率的波形,能夠知道現在這個聲音的高低頻率中哪個段落比較大或小(比較高音還比較低音),缺點就是不知道整體音樂的大小聲。
因為聲音通常是複雜的頻率重疊在一起,同時都有高音與低音,波形只能知道你在大聲什麼,不能知道你叫出來的聲音比較低沉還是比較尖銳;頻譜則相反。
((結果只是截圖
等等,所以我說那個動畫呢?
既然知道AE有內建製作音樂波形的效果了,但是如果要自定義呢?
還記得文章開頭說了什麼嗎?
「影片跟著Bass晃動」←對,就是這句。

我們把時間倒轉一下,回到一開始音樂剛匯入的時候(其實只是用同樣的音樂開了新的Project),
我們選擇音樂圖層,按快捷鍵L,接著點Audio Levels右鍵,同上圖所示,找到Convert Audio to Keyframes,
它可以將音訊轉換成左、右和雙聲道數值:

左、右和雙聲道的數值。
那麼,有了這些數值,你就知道該怎麼做了吧!
好,拿粉絲提問的「讓影片跟著Bass晃動」來實際操作看看。
※以下的部分屬於第二部分,和上面內容沒有直接關聯。因為以下部分屬於表達式的運用,和上面提到的AE內建的音樂波形效果不相同,
原本會是獨立的另一篇文章,這邊為了一次解決粉絲的提問、也和音樂動畫有些關聯性,所以合併在一起。
首先,匯入一段影片或圖片作為背景:

這邊是使用一顆球來呈現動態,當然你想要用照片或影片的話也是可以的,只是用球球比較好表現它晃動的樣子,之後也能用綁定的方式將你要的素材跟隨球球的動態。
稍微想了一下,就用簡單的表達式來製作晃動的效果,
首先選擇背景圖層,按快捷鍵S開啟Scale數值(同樣的方法可以套用在Position上,這邊先以Scale做示範),然後按住ALT點旁邊的小時鐘開啟表達式語法,並輸入:”wiggle(1,” (紅字部分,不包含兩邊的引號)
這時如果你跟我一樣點回網頁,就會發現它輸入完成,並出現了一條橘色訊息,說明你的語法有問題。我的語法才沒有問題勒。
那當然,因為在輸入到逗號後,要用豬耳朵──我是說小迴紋針,來將雙聲道的數值寫入語法內,如下圖兩張所示:
這時你會發現橘色的訊息條還在,那是因為整個段落後面還要再一個後括弧:
那這個語法是做什麼用的呢?
簡單說,如果將wiggle拿去給GOOGLE,會得到一個「擺動」的答案,而後方的括弧內,則分別代表頻率、震幅;
也就是 wiggle(每秒頻率,震幅),白話點就是每秒以多少幅度擺動幾次。不過震幅數值一直在變動,所以就跳很大~
wiggle內也不一定要是頻率1,你也可以依你的喜好輸入你要的頻率。
那麼,晃動次數我自訂每秒一次,晃動的震幅則是交給雙聲道的數值。
不過你會看到像這樣的結果:
你會發現,它scale的x和y軸是分開wiggle的,如果我要讓它等比例的話又該怎麼做呢?
只要稍微對表達式做一些小更動,例如:
如圖所示,將我們擺動的數值設為x (不同scale的x軸,這邊的x只是一個代號),也就是簡單一個x字母就代表了每一秒做一次多少幅度的晃動,這樣就不用每次都要輸入或貼上那麼多的字,
而AE內所有x、y、z軸的編號都是[0]、[1]、[2],
所以原本的scale是transform.scale[0]和transform.scale[1],
因為將transform.scale[0]和transform.scale[1]套上wiggle會是分開計算的,
所以單純輸入wiggle(a,b)的結果──
──等同於:
x=wiggle(a,b);
[x[0],x[1]]
scale的x軸會算一次x成為x[0],scale的y軸會再另外算一次x成為x[1]──”[1]不同於[0]”──所以結果理論上不同。
那只要告訴它,你現在transform.scale[1]就是”已經算出來”的x軸,
x=wiggle(a,b);
[x[0],x[0]]
scale的y就會等同於x[0],而x[0]=算完的wiggle(a,b),目的就達成了。
好像有點複雜,那換個簡單的方式(其實就有更簡單的方式…)
這次換個角度思考,因為這種有需要x、y軸的表達式,都需要明確告知它到底是[0]還是[1]、是X軸還是Y軸,抑或是另一個明確的答案,而AE各種參數本身就是一個明確的答案,所以要嘛在算式結果告訴它明確答案,就是在座標軸告訴它明確答案。
所以我們可以寫h=wiggle(a,b)[0]; ← h等於每秒以b幅度擺動a次的x座標。
而transform.scale[0]和[1]都等於”已經用h公式算出來”的x座標,有特別指定座標就是一個明確的答案。
或是用temp=…。
像是這樣:
h就是等於40啦,夠明確吧!
f就是等於本圖層的Y軸座標啦!
所以結果會像這樣:
套用到照片上的話:
等比例縮放了!因為是用Scale來做,所以並非晃動,而是縮放,那只要將同樣的作法或表達式貼到Position上,就會變成晃動囉~
這邊加入了一張照片來綁定、追隨球球的運動,這樣就不用重做一次,或是重貼表達式~照片也能個別控制。
不僅Scale,Position也能這麼做,而製作影片晃動的部分,用Position比較合適。
那這邊有一個小問題,Position和Scale不同,由於座標部分讓X跟Y都做一樣數值的運動,就會變成斜的;因為X軸正數往右、Y軸正數往下,所以看起來就是往右下方抖動。
所以這裡我會讓它的X跟Y分開計算。
如此一來就是上下左右的抖動囉!
那如果套用到圖片或影片上,覺得震動幅度太大,要怎麼讓幅度降低呢?
如果你有仔細看表達式,會發現我在上方範例中有加上/4的部分,
意思就是將它所吃的震幅/4(除以4)。
可以依自己的喜好去評判要除以多少甚至乘以多少,單純覺得數值整體太低或太高,也可以用加的或減的。
這只是一些簡單的用法,
更進階的延伸就可以製作類似這樣的動畫,自訂喜愛的波形圖案並隨著音樂韻律~
那麼,
希望這次的教學都能夠幫到大家,
我們下次見~
非經授權請勿轉載本網站原創內容,盜用必究
若想得到更多教學資訊,歡迎加入六指淵學生社團





















Previous Post
Next Post








