刘荣星的博客

  • 留言
  • About
一个关注Linux/BSD运维等相关知识的博客
  1. 首页
  2. Graphics
  3. After Effects
  4. 正文

用in/outPoint表达式使素材淡入淡出效果

2009-04-23 31654点热度 0人点赞 10条评论

利用表达式制作一个淡入淡出效果,这是一个较常用且简单的效果,但每次都要设置透明度的四个关键帧动画,还要输入数值。如果多个镜头都要使用淡入淡出就会很麻烦,利用Sequence Layers功能也可以,但还是要点几下鼠标,所以不如做一个Presets方便。

首先,为了方便我们不使用关键帧来设置动画,因为这样做的话,每次还要调整关键帧3和4的位置,要知道关键帧记录的是时间轴的位置,而每次使用的素材长度是不同的。所以,我们使用表达式,让程序去找素材的出点。

下面第一步,我们利用一个linear(t, tMin, tMax, value1, value2)函数把时间轴上素材的出点转化为透明度变量。

为透明度添加表达式如下:

linear(time,outPoint-1,outPoint, 100, 0);//其中“linear”表示线性变化,“time”是时间,“outPoint”是素材的出点,该表达式表示素材的透明度在素材出点前一秒到素材出点从100变化到0,这样就实现了素材的淡出效果。

同样道理,使用:
linear(time,inPoint,inPoint+1, 0, 100);//这一个表达式可以使素材实现淡入效果。

我们同时淡入淡出的话,就用一个"if.....else....."判断语句将以上两个表达式连起来,
为素材透明度添加表达式如下:

if(time<1)
linear(time,inPoint,inPoint+1, 0, 100);
else
linear(time,outPoint-1,outPoint, 100, 0);

这样就实现了素材的淡入淡出效果。

我现在觉得还是自己手动设置透明度的四个关键帧动画快,因为还不熟练打表达式。

经过RayCrown的指出上面的语句有漏洞,当把入点移到1秒以后 time>1所以不执行if里的,而执行的是else里的。如图:
AE表达式

RayCrown写的规范,标准的语句为:
s=linear(time,inPoint,outPoint, value,value);
a=linear(time,inPoint,inPoint+1, -100, 0);
b=linear(time,outPoint-1,outPoint, 0, -100);
a+b+s

这时候不管你怎么调整出入点、出点动画始终一致

大家快试试吧!

AffterEffects的时间处理方式:出自《AffterEffects CS3 完全剖析》第74页

AffterEffects是以绝对(而不是相对)期限测量时间的,它使用秒(而不是帧,帧的时序和数量将根据每秒的帧数而改变)。如果用总帧数,或每秒帧数测量时间,帧速率改变就会产生问题。相反,从根本上来说,AffterEffects对于帧速率的设置非常灵活。

因此,我们可以随意改变任何全盛图像的帧速率,关键帧仍然在保持它们在实际时间中的位置。动画的时序将不会改变,只是每秒显示它的帧数发生改变。

注意:如果用总帧数,或每秒帧数测量时间,帧速率改变就会导致关键帧偏移。相反,AffterEffects一贯地用秒测量时间,如果需要,它允许关键帧落在帧间,以保持总体时序一致。

标签: inPoint
最后更新:2010-08-27

JavasBoy

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

  • RayCrown

    这个不用加 if else语句

    直接定义然后 做加法就可以了。。
    a=linear(time,inPoint,inPoint+1, 0, 100);

    b=linear(time,outPoint-1,outPoint, 100, 0);

    a+b

    2009-04-23
    回复
    • jalena

      @RayCrown 如果不用if判断后续帧那这个表达式就作废了.

      if(time>1)是以秒为单位?

      2010-08-24
    • JavasBoy

      @jalena AE里是以秒为单位。
      请查看文章中新加的时间说明。

      2010-08-27
  • RayCrown

    haha
    误人子弟了。。加法在这里不行

    2009-04-23
    回复
  • RayCrown

    s=linear(time,inPoint,outPoint, value,value);

    a=linear(time,inPoint,inPoint+1, -100, 0);

    b=linear(time,outPoint-1,outPoint, 0, -100);

    a+b+s

    这是最标准的做法啦
    因为time>1 有的时候 CTI的数值超过1就else 像上面这样就对了。。。怎么调整出入点
    动画始终一致

    2009-04-23
    回复
    • incoho

      @RayCrown @RayCrown,

      为什么加上s就可以用了呢...? s明明什么都没改啊... 还有请教大师cti是什么意思....

      2010-01-02
  • lengyu

    太高深了,看不懂......

    2009-04-23
    回复
  • JavasBoy

    @RayCrown R大讲的是,我现在去AE里好好试试记到本子里去。

    2009-04-23
    回复
  • 西崽猪猪

    AE曾经想学 结果放弃了……因为用不到~
    我只是往影片里加加字幕 ASS语言就够了

    2009-04-27
    回复
  • JavasBoy

    @西崽猪猪 AE更多的是合成等效,我现在正努力学习中~

    2009-04-27
    回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    回复 西崽猪猪 取消回复

    最新 热点 随机
    最新 热点 随机
    CentOS7 python2 安装 elasticsearch 模块 在VMWare Workstation虚拟机里使用 yubikey Gentoo Gnome 登陆界面开启触摸板轻击 python3去除emoji表情符号 记录几个内网广播包 Linux Mint 20 gnome-terminal 使用等距更纱黑体 SC字体
    第一次成功安装Archlinux Gnome3 charset=utf-8和 charset=gb2312编码的不同 再见北京 windows Server 2003 考试 CentOS DNS resolv重起无效的解决方法 记录几个内网广播包
    分类
    • After Effects / 20篇
    • Apple / 5篇
    • Archlinux / 4篇
    • Bash / 2篇
    • Cinema 4D / 1篇
    • Docker / 1篇
    • eMule / 2篇
    • FreeBSD / 9篇
    • Gentoo / 1篇
    • Go / 2篇
    • gpg / 1篇
    • Graphics / 15篇
    • Haproxy / 1篇
    • ingress / 1篇
    • IntelliJ_IDEA / 1篇
    • java / 2篇
    • kafka / 1篇
    • Linux / 24篇
    • MySQL / 3篇
    • network / 3篇
    • Network / 4篇
    • Nginx / 5篇
    • Perl / 4篇
    • Python / 9篇
    • Python 操作符 / 1篇
    • Python 正则 / 2篇
    • rose / 1篇
    • Script / 4篇
    • Tornado / 1篇
    • Vim / 5篇
    • 学习 / 24篇
    • 电脑 / 29篇
    • 那不勒斯 / 1篇
    • 随笔 / 45篇
    标签聚合
    After Effects Linux Graphics python 双系统 MAC AE FreeBSD

    COPYRIGHT © 2025 刘荣星的博客. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang