AEJoy —— 彻底搞懂 AE 各种 loop* 表达式【一】

news/2024/11/15 7:27:46/

 

 前言

通过阅读本文,您将收获以下知识点

  • loopIn(typenumKeyframes
  • loopOut(typenumKeyframes
  • loopInDuration(typeduration
  • loopOutDuration(typeduration

以及它们各自在不同 type 和 numKeyframes / duration 下的区别;

 

本文默认您已经具备了 AE 中关键帧(KeyFrame)的基础概念,并且以下的演示都是基于 4 个关键帧(依次从左到右)小车,如下所示

4 个关键帧,当前小车处在第三个关键帧的 Position 

 

 我们先从比较简单 loopOut 开始(loopIn 的思维稍稍有点反人类,但是转过弯来就容易理解了)

 

 loopOut

 

loopOut 的功能从最后一个关键帧开始从头(第一个关键帧)循环,直到超过你所设置的时间限制。

 首先,我们来看看 loopOut 表达式的形式,它一共由两个参数构成,第一个参数表示循环的类型(默认是 cycle 类型),第二个参数用于指示循环片段的关键帧帧数(默认是 0,意味着所有关键帧都会被循环)。

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

1. numKeyframes = 0  

 实际的效果如图所示

loopOut("cycle", 0)

 

关键帧在 timeline 中的位置

 

 从 Position 和时间的曲线关系可知,小车从左向右的运动是周期性重复(循环所有关键帧)的,直到到达 timeline 的终点。

Position 与时间的曲线图

 

 2. numKeyframes = 1

 现在我们尝试把 numKeyFrame 设置为 1 ,看看会发生什么

loopOut("cycle", 1)

 

numKeyframes = 1

 

 从 Position 和时间的关系图中我们可以看到 loopOut 是在最后一帧和倒数第二帧之间的 Position 进行循环的,即 N 和 N - 1 的位置(这里的 N 表示关键帧总数)。

同理,我们可以大胆推论,如果 numKeyframes = 2 的话,则是 N 和 N - 2 之间进行循环

numKeyframes = 2

 上图也印证了我们的推论。

可能有的机智的读者会想:如果 numKeyframes 的值超过范围会发生什么?(即 numKeyframes >= N)

在此我先按下不表,后文稍后会提到。

 

 loopIn

 

loopIn 和 loopOut 虽然函数看起来很类似,但是作用却是截然相反,它从时间线一开始就(从最后一个关键帧的位置, 即 Position)循环,接着某一个时刻到达第一个关键帧,仍会继续执行,直到达到最后一个关键帧为止(停止循环)。

loopIn(type="cycle", numKeyframes=0)

 

1. numKeyframes = 0 

我们还是以 cycle 类型、numKeyframes = 0 为例,效果如下

loopIn("cycle", 0)

 

 注意关键帧在时间线上的位置,关键帧前面需要空出一段时间用于 loopIn 循环

关键帧前面空出一段时间

 

对应的 Position 曲线图如下,显然在遇到第一个关键帧之前,执行了两次循环,直到到达最后一个关键帧的 Position 就停止移动。 

Position 随着时间变化的曲线

 

但是有一点需要注意,就是如果从时间线开始到第一个关键帧的时间 ( time0),不是第一个关键帧到最后一个关键帧周期时间 (time1) 的整数倍的话(即 time0 无法整出 time1),则可能出现以下 Position 不符合预期的情况(起始位置跑到了最后一帧的 Position)

 

loopIn("cycle", 0)

 

Position 随着时间变化的曲线

 

2. numKeyframes = 1

现在我们尝试把 numKeyframes 设置为 1 试试

 

loopIn("cycle", 1)

 

从位置曲线上,我们很容易看出来,numKeyframes = 1 使得循环仅在第一个 Position 和第二个 Position 之间进行 

Position 随着时间变化的曲线

 

 感兴趣的同学可以尝试其他的 numKeyframes,我这里就不具体演示了,总结起来 numKeyframes 的作用就是 “指定进行循环的片段范围:循环片段是层中从第一个关键帧到 numKeyframes+1 关键帧的部分”,默认值 0 表示所有关键帧都循环。

理论上可以在大多数属性上使用它。但是有些例外的情况 —— 包括时间轴面板中不能用简单数值表示的属性,例如源文本属性、路径形状属性和用于级别效果的直方图属性;

太大的关键帧或持续时间值会被裁剪到最大允许值;

值太小会导致一个常量循环。

(未完待续)


http://www.ppmy.cn/news/911068.html

相关文章

ae使用计算机不支持的文字,AE软件使用字体出现错误83 ::2如何解决?

终极解决办法: 或者 选择了AE不能支持的中文字体,没有通用的ascii编码。 83 :: 2报错提示信息:After Effects error: CT generic : bad lenDesignVector 报错信息说明:对一个矢量图形素材的操作失败了。 报错的可能原因&#xff1…

17.Java反射

# 反射的简介 反射机制允许程序在执行期借助于 反射Api 取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。 加载完类之后,在堆内存的方法区中就产生了一个 Class 类型的对象(一个类只有一个 Class 对象),这…

入门力扣自学笔记273 C++ (题目编号:979)

979. 在二叉树中分配硬币 题目: 给定一个有 N 个结点的二叉树的根结点 root,树中的每个结点上都对应有 node.val 枚硬币,并且总共有 N 枚硬币。 在一次移动中,我们可以选择两个相邻的结点,然后将一枚硬币从其中一个…

视频技术阐释

目录 一、视频定义 二、视频原理 三、视频中的图像表达原理 四、视频的基础参数:帧、长宽比、分辨率、帧率、码率、重采样率、色深 五、视频的高低频 六、视频编码与格式 七、视频评价 八、视频开发库 九、视频协议 十、常用视频编辑软件 一、视频定义 视…

ckplayer超酷网页播放器

ckplayer超酷网页播放器引入: 原始API文档&#xff1a; http://www.fufuok.com/demo/ckplayer/index.html <script type"text/javascript" src"ck.js" charset"utf-8"></script> 新浪风格纯净播放器示例: <div id"myvide…

php怎么播放大视频教程,PHP获取各大视频网站页面中的Flash播放地址_PHP教程

有很多朋友做电影网站都是直接用大视频网站的flash播放地址了,这样如果我们不影响到自己网服务器,下面小编来给大家介绍一下利用PHP获取各大视频网站页面中的Flash播放地址实例。 先看一个简单的 然后我用PHP实现了这个功能,我觉得用PHP来做这项工作简直是一种享受!使用其提…

优酷上传高清视频

优酷上传高清视频 利用Adobe Media Encoder CC进行转码 预设设置&#xff1a; 导出设置—>格式&#xff1a;H.264&#xff0c;基于预设&#xff1a;HD 1080P 29.97fps posted on 2017-11-12 10:58 雪山看雪 阅读( ...) 评论( ...) 编辑 收藏 转载于:https://www.cnblogs.com…

坚持UGC 酷6走上网络视频健康化模式

12月14日&#xff0c;酷6股价报收于1.05美元&#xff0c;对于酷6这样拥有4-5亿用户覆盖的企业而言显然是让人看不懂的结果&#xff0c;这不禁让人们将其归结于股票市场整体的冷遇。 曾几何时&#xff0c;中国互联网市场在华尔街投资人眼中炙手可热&#xff0c;中国概念股得到广…