临摹点:
- 切割;
- 渐弱的wiggle;
- 运动修饰;
- 刨子打磨效果;
- 3D纸张飘落。
一、切割
将六边形分成两个梯形。
利用之前以有的六边形(用作旋转虚线蒙板的六边形,也是作为四边形变形六边形时候的参考的图形,没有的话新建一个),复制两层,一个命名为“左梯形”,一个命名为“右梯形”,给两个梯形key动画,距离inPoint约四帧的位置,key一个持续四帧左右的位移,将两个梯形向对角线方向分开,调整运动曲线。
二、一激灵
将“左梯形”和“右梯形”预合层,命名为“切割六边形”,然后给“切割六边形”的Position添加表达式:
decay = 5; freq = 30; amp = 10; duration = framesToTime(decay); n = linear(time, inPoint, inPoint + duration, freq, 0); wiggle(n, amp)
这个表达式是让图层有一个频率30、振幅10的随机抖动,并且抖动频率在5帧内线性衰减直至零。
三、运动修饰线条及点
依旧有Trim Paths制作装饰性的线条,模拟刀锋。
这里将这些运动修饰元素放在“切割六边形”里,这样这些元素能够跟随wiggle一起抖动。
同样方法绘制一个直线路径,直线粗细改为1.5,将锚点放到路径起点,将位置设置为[960,540]
给Rotation添加表达式:
seedRandom(index,true) value + random(360)
这个表达式让每复制一层,都在360度范围内随机旋转。
添加Trim Paths,将End设置为3%,得到一根短线条,然后给offset添加表达式:
seedRandom(index, true) duration = random(5, 9); linear(time, inPoint, inPoint + framesToTime(duration), 0, 360)
这个表达式能让短线条从起点运行到终点,所需要的时间在5~9帧之间取随机值,且每复制一层,取一次随机值。
这样可以让复制出来的短线条运行的距离、时间都有所差异,增加丰富性。
这时候可以发现每当短线条运行过终点,也就是offset等于360之后,短线条会重新回到起点位置,为了让短线条运行过终点之后就消失,可以给End添加表达式:
if (content("Trim Paths 1").offset == 360){ n = 0; }else{ n = 1; } value*n
随后复制这个形状层,我这里复制了36层。
四、滑落动画
先给“右梯形”滑落key动画。
给“左梯形”key动画,右键Positon,选择Separate Dimensions,给x轴和y轴分开打关键帧,并给Y Position添加表达式:
e = .8; g = 5000; nMax = 10; n = 0; if (numKeys > 0){ n = nearestKey(time).index; if (key(n).time > time) n--; } if (n > 0){ t = time - key(n).time; v = -velocityAtTime(key(n).time - .001)*e; vl = length(v); if (value instanceof Array){ vu = (vl > 0) ? normalize(v) : [0,0,0]; }else{ vu = (v < 0) ? -1 : 1; } tCur = 0; segDur = 2*vl/g; tNext = segDur; nb = 1; // number of bounces while (tNext < t && nb <= nMax){ vl *= e; segDur *= e; tCur = tNext; tNext += segDur; nb++ } if(nb <= nMax){ delta = t - tCur; value + vu*delta*(vl - g*delta/2); }else{ value } }else value
key一个掉落的动画,表达式实现弹跳的效果。
然后手动key一个摇晃的动画(暂时没用到其他方法),这个项目是为了练习,不想使用脚本。
五、修饰性动画
按照前面的方法,可以直接复制前面使用过的短线条图层,宽度改为2px,改好路径位置后,修改其中的表达式:
End下的表达式不变。Rotation下的表达式删除。
Offset下的表达式修改参数:
seedRandom(index, true) duration = random(1, 7); linear(time, inPoint, inPoint + framesToTime(duration), 0, 360)
新建一个空对象,命名为“control”,添加slider control,并将名称改为“width”,给短线条图层的Position添加表达式:
seedRandom(index,true); x = value[0] + random(thisComp.layer("control").effect("width")("Slider")); y = value[1]; [x, y]
添加slider control是为了方便调试,可以修改短线条在x轴上的随机出现的范围,也就相当于修改这些短线组成阵列的宽度。
将空对象及所有短线条的层,预合成,命名为“点雨”,修改“点雨”的位置,并用钢笔勾勒出一个不规则的蒙板,给羽化值,让短线条落下消失的地点参差不齐,且有一个淡化消失的效果。
六、打磨
1.使用遮罩key动画
2.一种碎屑
使用路径Key动画。制作弯形、拐形、螺旋形等各种刨花,key降落的动画,最后一个大一点的刨花key一个变形动画。
预合成,“刨花”。
3.两种碎屑
新建预合成,命名为“碎屑01”。
用钢笔绘制一个小短线,将该图层命名为“小点”。
新建一个null,改名为“control”,添加slider control,命名为“decay”。
继续添加一个slider control,命名为“duration”。
继续添加slider control,命名为“amp”。
给transform下的Position添加表达式:
decay = thisComp.layer("control").effect("decay")("Slider"); duration = thisComp.layer("control").effect("duration")("Slider"); scr = thisComp.frameDuration*duration; seedRandom(index,true); amp = random(thisComp.layer("control").effect("amp")("Slider")); n = thisComp.frameDuration*decay; x = value[0] + easeOut(time, 0, n, 0, amp); y = value[1] + easeIn(time, 0, scr, 0, 960); [x,y]
这个表达式是让“小点”落下动画。
y轴的值加上easeIn(),就是简单的加上增量,引入duration,然后用frameDuration将帧转化为时间,放进easeIn()里,可以控制下落所用的时间,用几帧的时间增加0到960的y轴位移。
x轴的值加上easeOut(),n控制的是衰减时间,amp控制的是x轴上位移位置。“小点”不是直接落下,而是往右边弹出一点距离,曲线落下。
给名为“control”的null继续添加slider control,命名为“emitterW”
继续添加slider control,命名为“emitterH”
给Contents → Shape 1 → Transform:Shape 1 → Positiontian添加表达式:
seedRandom(index,true); h = random(thisComp.layer("control").effect("emitterH")("Slider")); w = random(thisComp.layer("control").effect("emitterW")("Slider")); [value[0]+w, value[1] + h]
这个表达式让复制出来的“小点”起始位置不同。
将“小点”复制若干层。
4.三种碎屑
新建预合成,命名为“碎屑02”。
钢笔绘制一个弯形的小短线,命名为“碎屑”。
新建一个null,改名为“control”,添加slider control,命名为“scr”,并添加表达式:
time*150
继续添加一个slider control,命名为“duration”,给值18(可调试更改)。
给Position添加表达式:
duration = thisComp.layer("control").effect("duration")("Slider"); scr = thisComp.frameDuration*duration x = value[0]; y = value[1] + easeIn(time, 0, scr, 0, 960); [x,y]
给Rotation添加表达式:
seedRandom(index,true) random(360)
给Scale添加表达式:
seedRandom(index,true) random([100,100],[200,200])
给Contents → Shape 1 → Transform:Shape 1 → Positiontian添加表达式:
seedRandom(index,true); scr = random(thisComp.layer("control").effect("scr")("Slider")); value+scr
添加Trim Paths,给End添加表达式:
seedRandom(index,true) random(10,100)
5.四种碎屑
新建预合成,命名为“碎屑03”。
钢笔绘制一个弯形的小短线,命名为“小点啊”。
新建一个null,改名为“control”,添加slider control,命名为“offset”,并添加表达式:
linear(time, 0, framesToTime(20), 0, 100)
给Contents → Shape 1 → Transform:Shape 1 → Positiontian添加表达式:
seedRandom(index,true); scr = random(thisComp.layer("control").effect("offset")("Slider")); [value[0]+scr, value[1]+scr]
给图层transform下的Position添加表达式:
seedRandom(index,true); scr = random(10); x = value[0] + scr; y = value[1] + easeIn(time, 0, framesToTime(30), 0, 960); [x, y]
给transform下的Rotation添加表达式:
seedRandom(index,true); n = random(360); value + n
复制“小点啊”若干层。
6.调整和补缺
配合打磨的动作,调整各个“碎屑”预合成的位置,在合适地方手动key帧,增加一些其他样式的碎屑,比如“楔形”碎屑,以进一步丰富画面。
七、纸张脱落
1、将梯形分成两个图形(将左侧三角区独立出来),可以遮罩,可以修改路径,方法不限。
2、用钢笔工具绘制一个三角形,和梯形左侧三角重叠。
3、将绘制出来放三角形命名为“翻页”,复制一层,命名为“翻页底子”。
4、将“翻页底子”的颜色改为[170,170,170],作为翻起后纸张背面的颜色。将“翻页底子”和“翻页”的Postion和Rotation建立父子链接。
5、给“翻页”添加CC Page Turn,将controls设置为“Classic UI”,给Fold Position、Fold Direction、Fold Radius打关键帧,并给图层的Position、Rotation添加关键帧,制作飘落的效果。
6、新建一个调整层,利用tint和mask,制作一个翻页时候的阴影。原作者可能使用了C4D,但是这个临摹是为了练习AE,就不进C4D了。
请登录以参与评论
现在登录