直入主题,分享一下这个动画(huà)制作时候(hòu)所用(yòng)到的方(fāng)法。
这么一个有趣动画,你是否好奇怎(zěn)么制作?
只要懂一点点数学,懂(dǒng)一点点表(biǎo)达式就可以分分钟完成啦(lā)。
1.首先(xiān),创建一个(gè)800*600的合成,并创建一个同大小的纯色层。添加两(liǎng)个效果,一个是生成-写入,一个(gè)是扭曲-偏移。
写入用来绘(huì)制(zhì)曲线,偏移用来让曲线移动。
2.然后,给画(huà)笔位置(zhì)(写入)添(tiān)加(jiā)表达(dá)式:
x=time*thisComp.layer("空1").effect("x轴偏移速率")("滑块");
y=Math.sin(time*thisComp.layer("空 1").effect("y轴(zhóu)来回频率")("滑块"))*thisComp.layer("空 1").effect("振幅")("滑块")+300;
[x,y];
第一行:用时间(jiān)乘上x轴偏移速率,使(shǐ)得x的数值随时间每(měi)一秒增(zēng)加433.1。
第二行:数学公式:y=Asin(ωt+ψ)+B,这里A是振(zhèn)幅(fú),ω是震动频率,由于(yú)绘制的(de)曲线用偏移来做水平(píng)移动,所(suǒ)以这里(lǐ)ψ=0,最后B是曲线在y轴方向上上下偏移的距离,这里我想让曲线位于合(hé)成的中心,故(gù)偏移300(合成宽为600)。
3.之后(hòu),给(gěi)将(jiāng)中(zhōng)心转换为(偏移)添加(jiā)表达式:
x=time*thisComp.layer("空1").effect("曲线循环")("滑块");
y=effect("偏移")("将中心转换(huàn)为")[1];
[x,y];
第(dì)一行:x每秒(miǎo)向左偏移250。
第(dì)二(èr)行(háng):y不需要变(biàn)化,保持原值。
这两步完成之后可以得到这样的效果:
4.接着(zhe),将(jiāng)所有的层打预合成,向前偏移(yí)一(yī)定时间,为的是略去书写动画,确保一开始(shǐ)就是完(wán)整(zhěng)的弧(hú)线(xiàn)运动(dòng),然后就简单(dān)了,复制(zhì)四层,各偏(piān)移不同的时间,并给它们做上(shàng)不同的(de)遮罩。
这里需要一提的(de)是,可以看到动画周(zhōu)期为8S(-00:00:00:17~00:00:07:07,24fps),可以让动画前后无缝(féng)衔接。8S是最短(duǎn)的(de)周(zhōu)期了,计算(suàn)方式如下,还记得偏移是(shì)每(měi)秒250吗,合成长为800,由(yóu)于sin曲线的对称性,所以我们只需偏移半个合成长400就可以与(yǔ)未偏移的曲线重合了,250与400的最(zuì)小公倍数为2000,而(ér)2000/250=8,得到最小周(zhōu)期。
5.最(zuì)后就是画(huà)笔动画了,首先在(zài)ai中绘制(zhì)画(huà)笔(bǐ),当然这里画笔简单也(yě)可(kě)以在(zài)ae直接绘(huì)制,接下(xià)来将锚点移动笔尖,对旋(xuán)转和Y位(wèi)置K帧做好动画(huà),这里需要对(duì)照曲线确(què)定笔来回移动的最小周期,做好(hǎo)一个周期的笔的运动动画,接下来就只(zhī)需要添加loopOut("cycle")表达(dá)式进行(háng)无限正循环。
将关键复制给其他(tā)画笔,调节位置(zhì),偏(piān)移时间线对(duì)上曲线节(jiē)奏。最(zuì)终效果就出来啦。
那么,请思考一下这个问题,既然(rán)我们已经在最开(kāi)始(shǐ)千方百计(jì)的得到了正弦函数的曲线(xiàn)了,为什么(me)第五步还要再去k关键(jiàn)帧呢?为何(hé)第五步不使用第二步(bù)里面(miàn)的y值呢?所以,想要更(gèng)自动化(huà)、更精准的动画,就需要想明(míng)白各(gè)个(gè)动画与动画之间的联系(xì)(仅适用于符合(hé)规律的动画,逐(zhú)帧(zhēn)路径(jìng)动画(huà)不在这个范畴)。
当然,细(xì)心(xīn)的人会发现,这里并没(méi)有做到完美,例如灰色线条应该(gāi)位于蓝色线条之上,虽然只是简单的(de)图层(céng)顺序问题,不过(guò)追求(qiú)完美,不断优化的理念是需要贯穿整个动画制作过程(chéng)的。