哈囉~

经过几篇的教学,看到有人想知道「跟着音乐中的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)。

可以依自己的喜好去评判要除以多少甚至乘以多少,单纯觉得数值整体太低或太高,也可以用加的或减的。

 

 

 

这只是一些简单的用法,

更进阶的延伸就可以制作类似这样的动画,自订喜爱的波形图案并随着音乐韵律~

 

 

 

 

那么,

希望这次的教学都能够帮到大家,

我们下次见~