打印 上一主题 下一主题

如何用AE表达式快速实现延迟动画

  [复制链接]
跳转到指定楼层
1#
中文图文CG教程
行业: 影视后期
模块: 动画 
软件/插件: -
版权: 本资源来自互联网,仅供学习交流

马上注册CG织梦网,结交更多CG好友,下载更多CG素材,让你轻松学习。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
如何用AE表达式快速实现延迟动画



Hi,这次AE分享的关键词是“延迟”。实现延迟方法各种各样,最简单粗暴的方法就是通过错帧来实现延迟效果,还有刚刚看了@十分钟设计的《制作延迟动画》,也是一种不错办法。

理论上可以达到我们想要的效果,而在这里我想到分享另一种我觉得更高效,更“科学”的办法。

先用一个小案例来帮助我说明,如下图,如果要蓝色小球跟着; 紫色小球运动,并带有一定延迟,你会怎么做?




利用错帧的办法来实现,虽然简易,但是最大的问题是,到了后面动画越来越复杂,只要你每次修改就相当于每次都重头做一遍,非常不科学,也容易出问题,如下图。



通过表达式语句实现延迟动画

首先我们先来认识一下这个语句“valueAtTime(t)”。下面是官方说明文档给出的定义:

返回类型:数值或数组。参数类型:t 是数值。返回属性在指定时间(以秒为单位)的值。

不难理解,其作用就是返回某一时刻的值。那么我们应该怎么运用他呢?

我们可以在表达式库中随时调用它:


先举一个栗子:如两个小球动画,先设置好“ball3”的位移多关键帧,然后分别点开“ball3”和“ball1”的位置属性,如下图:

然后把“ball1”都位置属性链接到“ball3”到位置属性上(此步的具体操作可以参照我上一篇Ae文章),图下图:

做好位置属性的链接后,最关键的一步,在表达式窗口“thisComp.layer(“ball3″).transform.position”后面加上“.valueAtTime(time-0.04)”(注意有他们之间有个小点点“.”,可以简单把这个点理解为“的”)。此时如下图:

此时“ball1”的完整表达式应该是这样的“thisComp.layer(“ball3″).transform.position.valueAtTime(time-0.04)”,用大白话翻译一下,应该是这样的:“这个合成的’ball3’图层的此刻延迟0.04秒的返回值”,简单一句话,“每次返回ball3延迟了0.04秒的值出来”。

效果如下图:


以同样的方法,再添加几个球并设置不同的延迟时间的效果如下:

所有蓝色小球都是链接紫色小球,完全重复紫色小球的动画,因此你可以随时随地的改变紫色小球的动画;想改变延迟时间,只需valueAtTime(time-x),x是你想要的延迟的时间,单位为秒。

这样就可以一劳永逸啦!如下图:


利用“空对象”达到随心所欲的链接

像上一篇文章提到的那样,直接的属性对属性链接,子图层会被“完全”到父图层,就想上面的演示,所有小球最终都会重叠在一起。

所有我还是利用一个“空对象”,把它的位置属性链接到目标图层的位置属性,之后再把要跟随的图层做个图层子父级链接到空物体上。如下图:



当然只要你理解了“valueAtTime”,你还可以把它用在其他属性上面,如缩放,透明等等。如下图:
5#
kof137122 发表于 2024-4-22 00:22:56 | 只看该作者
谢谢楼主分享
回复 支持 反对

使用道具 举报

4#
paltrow 发表于 2019-7-26 05:39:50 | 只看该作者
谢谢楼主分享
回复 支持 反对

使用道具 举报

3#
masic_work 发表于 2015-10-3 15:48:33 | 只看该作者
恩 。。教主应该多出点这种py的教程AE的啊。。很有水平 很有教导意义的。万分喜欢啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩图文
在线客服(工作时间:9:00-22:00)
18916069001
织梦网微信公众号

Copyright   ©2015-2016  CG织梦网  Powered by©Discuz!  技术支持:织梦网