签到

08月02日
尚未签到

共有回帖数 0

    做月子

    等级:
    颜色属性上打:
    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秒。
    【万能弹性表达式(振幅、频率、衰减)
    amp = .1;
    freq = 2.0;
    decay = 2.0;
    n = 0;
    if (numKeys  0){
    n = nearestKey(time).index;
    if (key(n).time  time){n--;}
    }
    if (n == 0){ t = 0;}
    else{t = time - key(n).time;}
    if (n  0){
    v = velocityAtTime(key(n).time - thisComp.frameDuration/10);
    value + v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);
    【时间延迟表达式内容(for 21楼;10可以更改)
    Q=(thisComp.layer("Shape Layer 2").index-index)/10;
    thisComp.layer("Shape Layer 2").transform.position.valueAtTime(time-Q)

    楼主 2015-10-27 13:13 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表
Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知