AE干货丨模拟星轨效果

如何让一个合成comp或素材在另一个合成中循环播放:

给合成或素材添加上一个,layer——time——time remapping,(快捷键Ctrl+alt+T)然后给这个属性加表达式。

loopOut(type = "cycle", numKeyframes = 0)。

注意time remap最后一个关键帧是否为空白,空白的话将关键帧提前一帧。

当然视频素材的话也可以在素材属性里设置循环次数。

用表达式使颜色随机变化:

颜色属性上打:

seedRandom(index, 1);

x=random(0,1);

y=random(0,1);

z=random(0,1);

[x,y,z,1]

(注:seedRandom这个表达式使用的条件是下面必须有random,一般seedRandom是用在有多个图层,让每一个图层的某个属性的随机取值都不同,比如用在透明度上:seedRandom(index,timeless=true);换行random(0,100),复制许多层试试 。)

AE随机选择指定参数的表达式:

随机还是用seedRandom。举例:

seedRandom(index, timeless = true);//根据层固定取样值

color = [[1,1,1,1], [1,0,1,1],[0,0,0,1]];//定义条件(颜色是4维数组,所以定义的颜色必须在颜色表中查找出对应RGBA值加入其中)

colorIndex = Math.floor(random(color.length));//获取数组的长度,即里面元素的个数,并随机选出小于长度的一个数组

color[colorIndex]//从这些数组中间选出一个,给表达式赋值。

比如我想快速得到大量的文字层并且文字的内容是指定的。那么以上表达式只要稍做修改就可以利用到这里:

seedRandom(index, timeless = true)

myText = ["After Effects",

"Shake",

"Photoshop",

"Premiere Pro",

"Final Cut Pro",

"Motion",

"Fusion",

"NUKE",//只需编辑该组中的字串即可

myIndex = Math.floor(random(myText.length));

myText[myIndex]

在文字层的source text中打入以上表达然后复制多层后就会发现文字的内容都是以上定义中随机选出的。

AE取整表达式:

Math.round括号后面填你要取整的数,这个表达式的作用是四舍五入。

还有一个Math.floor 是取小于最接近当前数字的整数;

比如你用

a=random(0,100);

Math.round(a)

得到的就是0到100之间的数字,如果把Math.round改成Math.floor就是取0到99之间的整数 。

网上有人总结过:floor向下取整,ceil向上取整;round和rint四舍五入,取绝对值后舍入,然后加上符号,遇到.5的时候向绝对值小的方向舍之。

wiggle在postion只影响y轴,且为正数:

[value[0],Math.abs(wiggle(f,a)[1])];

通过这个例子可以看到wiggle、只改变局部属性,取正三种表达式的用法。

AE表达式做抽帧

1、首先为素材加入Layer->Enable Time Remapping。按ALT键点选Time Remap旁的码表,加入表达式“time*n”我用的这段是12秒,帧率为25的素材,想做成每秒一帧,这里n=25,如果每两秒一帧就要n=50了,也可以理解为每n帧抽取一帧。这样,我的12秒的素材已经变为12帧了(第12帧以后都是静帧)

2、将表达式转为关健帧。全选Time Remap的关键帧,点选如图,转化关键帧。

按照表达式的计算,为整个素材每帧添加了关键帧。

3、删掉第12帧以后的所有关键帧,选中所有关键帧按住ALT键拖动最后一帧对关键帧进行缩放,使第12个关键帧正好在12秒的位置。

4、将所有关键帧转为恒定值。一定记着将原有的表达式控制关掉。

这时我们已经完成了一般意义上的抽帧效果,由于两个关键帧之间是被当做一帧进行计算,所以渲染速度是非常快的。

这种效果中间都是硬切的,有时可能会感觉有点跳,中间加入一点叠化可能会舒服一些,<兄弟连>的片头中就是抽帧后运用了叠化。(至于它对画面进行的其它处理这里不做讨论,只进行叠化处理)

5、复制你刚刚做好的那段素材,上面的删掉偶数关键帧,下面的删掉奇数关键帧。

6、不管是上面还是下面的素材,有关键帧的地方就是一个硬切,做叠化时是要把它们“挡住”的,也就是说上面的那条素材有一个硬切,我们要使它的透明为“0”;下面那条素材有一个硬切,就要使这时上面那条的透明为“100”来挡住它。我们做的是一秒一帧,可以认为一秒就是一次循环,所以我们只处理一秒,然后用表达式做循环。关键帧设置如图。至于想叠多少,就看心情了

7、为透明加入表达式循环语句。

8、将“cycle”改为“pingpong”,所有有硬切的地方都被“挡住”了。

smooth表达式的运用:

平滑表达式,这是可以使关键帧进行平滑效果的表达式

smooth,括号里面的默认值是0.2和5.就是smooth(0.2,5)

0.2表示--每多少秒进行平滑。

5表示--采样率,采样率越高越平滑。

平滑表达式在跟踪素材时会常常用到。

random表达式的运用:

随机表达式random ,比seedRandom少一个取样。

random(1,10)是在1到10之间进行随机值的抽取,随机抽取的最小值是1,最大值是10

[layerStyle.gradientOverlay.effect[0],random(5,15)]

这句表达式的意思是在layer的gradientOverlay的第一个数值不改变,effect[0]就是代表gradientOverlay的x值,

effect[1]是第二个值,即是y值。在这里 x值不变,y值是random(5,15)

loopOut表达式的运用:

循环表达式

基本格式:loopOut(type="类型",numkeyframes=0)

loopOut(type="pingpong",numkeyframes=0)这是个兵乓的类型的循环,就像那样兵乓球的作用来使用。

loopOut(type="cycle",numkeyframes=0)这是个圆形的类型的循环,就是对一组动作进行循环。

loopOut(type="continue")这是计算机继续计算未完成的运动。

numkeyframes=0是循环的次数,0为无限循环,1是只循环一次,2是循环2次,如此类推。

时间表达式:

thisComp.layer("")
.transform.position.valueAtTime(time-某个数值)

这个合成的某个图层的transform属性的position参数的时间延迟某个数值

如:thisComp.layer("")
.transform.position.valueAtTime(time-1)

这句表达式的意思是这个合成的物体移动时,移动时间总是延迟1秒。

指数表达式:

如果把图层打成三维层,对position参数,填写position[0],position[1],index*2,这是你在不断复制相同的图层,图层里的图片会不断在z轴的方向以2像素的复制,最终形成厚度,达到三维物体的效果。

index,就是每个图层的序列号,如下图的数字:

index属性用来做阵列、有规律的动画时十分有用。

著作权归作者所有来源:知乎

原文链接:,转发请注明来源!