Skip to content
This repository has been archived by the owner on Jun 10, 2021. It is now read-only.

Latest commit

 

History

History
336 lines (186 loc) · 16.5 KB

md4GitHub.md

File metadata and controls

336 lines (186 loc) · 16.5 KB

禁止转载。

禁止转载是指“禁止转载本文内容”,可以通过超链接的方式分享本文。


本文章内容由我的这个回答处理而来:

https://www.zhihu.com/question/58159898/answer/167682476

本文章也存在于 GitHub 仓库:

https://github.com/pzhlkj6612-zhihupost/ZhihuPost-31568576


注意:

  • 本文的内容是过时的;
  • 我仅在 Windows 10 下的 Adobe After Effects CC 2015.3/CC 2017/CC 2018 对本文内容做了简要测试;
  • 所有方法均由我从各个地方习得并测试,仅供参考,并不一定是最佳选择;
  • 本文并不适合在小屏幕终端上阅读;
  • 以下内容有难度,请你务必耐心;
  • 有问题请及时指出。

目录


概述

导出无限循环的动画,一般都是想得到能循环播放的 GIF 动画;但如果仅仅是想让一段视频在另一段视频里循环播放个几百来次,就不需要琢磨 GIF 那些。网络上已经有许多关于“Ae 循环”的内容了,所以我会先让你学习前辈们的教程,再看后边我做的补充。


文中用到的视频素材主要来自:《50帧又何妨(25FPS已重传)(2)


可以用循环做什么

例如《【雷军/初音】New Friend_鬼畜调教_鬼畜_bilibili_哔哩哔哩》中的:


先看教程

  • 通过剪辑与合成,做出循环播放的 GIF 动画

【中级】和我一起学AE 10_野生技术协会_科技_bilibili_哔哩哔哩》,来自@龙子潇

你应该从这个教程里学到如何将一段视频以尽量和谐的方式循环起来。

不过要注意,教程在“导出 GIF”部分有不正确的地方:向 Ps 导入视频时进行了“丢帧”(这并不是官方术语),但之后却没有做处理,导致最终 GIF 的“播放速度”较原素材加快了一倍。关于用 Ps 导出 GIF,可以查看我的“知乎文章31567795《从 Ae 导出 GIF 动画的一些方法》”中的“用 Ps 配合 Ae 导出 GIF”部分。


  • 使用表达式让元素的属性循环变化

在这里,“属性”指某个元素的位置缩放不透明度等等。


首先可以看《实用AE表达式推荐(二) - 知乎》的“六、LOOPIN&LOOPOUT”节,做一个简单了解:


接着,《MG实用技巧:Loop循环表达式运用|平面|教程|D27_ - 原创文章 - 站酷 (ZCOOL)》:

顺便说一句,这个教程如果最终能够循环起来(一点点调整)就很好看了;


如果前边的你都跟着做了,那么这里还有一个更高级的教程:《AE 表达式应用——萤火虫-UI中国-专业用户体验设计平台》:


复习与补充

教程看完了,我来做一些补充。


在上述的有关“表达式”的教程里,都是在对某些个很“具象”的属性的值(的关键帧)进行循环。那么时间呢?

就像文章概述里所说,你可能有这样的需求:“想让一段视频在另一段视频里循环播放个几百来次”,那么你就需要接触到“时间重映射”。

接下来,介绍两种“循环素材”和一种“循环合成”的方法:


  • 对于素材的循环 - 解释素材

这是最简单的办法。先准备一段素材,不用创建合成,直接右键素材-解释素材-主要

在打开的解释素材对话框中,找到其他选项区域-循环,设置一个循环次数(1~9999),并单击确定

现在,你的素材的持续时间已经发生了变化。试着用调整过的素材创建合成并预览画面,就能发现已经有了循环的效果:

注意,图中的合成只有 3 小时长,因为Ae 最高只支持 3 小时长度的合成,如果你需要更长时间的循环,就将合成裁剪好,导出 Ae 后再导入 Pr,就可以在 Pr 里制作更长的视频了。


  • 对于素材的循环 - 表达式

将要循环的合成放入合成中:

接着,右击代表那段素材的图层-时间-启用时间重映射(Ctrl+Alt+T),能看到该图层下方出现了属性时间重映射的两个关键帧,头尾各一个;而且图层的“时间范围”变为无限远:

现在按住 Alt,单击时间重映射前的秒表,调出表达式编辑器:

单击“表达式语言菜单”(表达式: 时间重映射右侧的圆形白底指向右侧的黑色箭头)-Property-LoopOut(Type = "cycle", numKeyframes = 0), 或者直接输入:

value = loopOut(Type = "cycle", numKeyframes = 0);

现在,任意改变图层的持续时间并预览,就能够发现已经有循环播放的效果了:

最后,将合成的工作区域调整好,导出视频即可。


  • 对于合成的循环

循环合成的话,与循环素材的大体方法是一致的,但需要一些额外的操作。

先来看问题,你按照循环素材的方式去循环合成,可能会遇到:循环空了一帧怎么消除【ae吧】_百度贴吧;然后你可能会看到这样的方法:

先把他预合成!然后在添加时间重映射(在层菜单下的时间的第一个),再在动画结束处设置关键帧,把后面的关键帧删了,再按住AIT单击小马表图表添加关键帧在时间线窗口输入loop_out("cycle",0)这样就好了!

这是求助 怎样让AE里的一个合成无限循环_百度知道里的一个回答,说得没错但是不那么具体,所以我在这里试着把它讲明白。


将要循环的合成放入另一个更长的合成里,然后右击代表那段合成的图层-时间-启用时间重映射(Ctrl+Alt+T):

现在你可以去看看尾部关键帧处的画面是什么:

空的?!往前一帧呢:

如果你不管它,继续添加表达式,延长持续时间,你就会发现每到结尾时画面都会闪一下(空一帧),类似这样:


出现这种现象的原因我还不太清楚,但有规避问题的方法:

添加时间重映射后,你需要手动寻找你想循环的时间范围的出点,也就是循环的结尾。一般情况下,你是想让那个合成整个循环起来,所以找到有画面的最后一帧(也就是有关键帧的前一帧)。然后,打上关键帧(单击秒表图标左侧的菱形“◇ 在当前时间添加或移除关键帧”):

再将后边的关键帧删掉,现在时间重映射属性仅有两个关键帧:

按住 Alt,单击时间重映射前的秒表,调出表达式编辑器,像之前那样添加LoopOut表达式,再延长图层持续时间,搞定。


导出无限循环的动画

如果你想导出 GIF 动画,就直接看我的知乎文章31567795《从 Ae 导出 GIF 动画的一些方法》

如果只是导出为一段视频,那就别忘了 Alpha 通道。因为你想要的可能是有着透明背景的视频,所以需要使用支持 RGB+Alpha 的格式与编码器。推荐使用 GoPro CineForm 编码 QuickTime 格式进行导出。


你还可以尝试...

将下边这两个教程里所做的东西制成流畅的、能够循环播放的 GIF 动画,就像我这样:


异常处理

当出现“表达式错误”的提示时,请检查你所编写的代码:

  • 是否忘记使用;来结束语句;
  • 是否错误地使用了全角符号;
  • 是否少写了.""()[]{}等符号;

更多的还是请你去参考官方文档以及 JavaScript 语法。


注意事项

  • Ae 中的表达式并不是标准的 JavaScript,而是 JavaScript eXtension(JSX),为了对应 Ae 中的元素,JSX 的语法与 JS 有一些差别,例如某些索引是从1开始的(layer(1)effect(1)propertyGroup(1)key(1)等等),而不是0
  • JSX 的语法较为“宽松”,某些关键字和符号可以省略不写(软件能自动识别),但作为学习者,尽量还是完整地去写每一行代码。特别的,要养成给属性赋值时带上“左值value = ”的好习惯;
  • 有了好习惯,一旦你要开始查错(Debug),或者读别人的代码,效率就会比较高了;
  • 最后,学习英语、编程,益处很大。

未解决的问题


推荐



  • 这里“有好多好多教程”:doyoudo


结尾

  • 待更新的

关键帧循环,图表编辑器,显示表达式对应的数值变化。


  • 参考

关于AE中进行循环动画的几种方法_百度文库

How To Loop A Video In Adobe After Effects

MG实用技巧:Loop循环表达式运用|平面|教程|D27_ - 原创文章 - 站酷 (ZCOOL)

实用AE表达式推荐(二) - 知乎

AE循环的表达式是什么_百度知道

循环素材项目 - 在 After Effects 中使用素材项目

求助 怎样让AE里的一个合成无限循环_百度知道

After Effects 有什么技巧让你相见恨晚? - 知乎


本文章:

@栗子@MGWeysong@徐勇智 提供了全文检查;

@Sakura286 提供了大量建议;


@墨子 2200MHz 测试、整理。


原答案发布于:2017.05.11

原答案修改于:2017.11.30


修改于:16:55 2019/01/30

禁止转载。