本节书摘来自异步社区《Adobe After Effects CC完全剖析》一书中的第2章,时间设置,作者 【美】Mark Christiansen(马克·克里斯琴森),译者 姜岩,更多章节内容可以访问云栖社区“异步社区”公众号查看。
时间设置
在处理时间方面,After Effects比大多数视频应用程序更加灵活。你可以使用多种方法重设素材时间或者混合和匹配速度以及调整时间。
绝对(非相对)时间
After Effects是以绝对的秒数而不是帧数来度量时间的,它的时间设置和数量都是相对于每秒的数量而言的。如果使用帧数代替了秒数作为时间的量度,然后又匆忙地改变帧速率,相比较而言这将会造成很大的问题。
如果改变合成中的帧速率,同时关键帧维持在它们在实际时间中所处的位置,那么动画中的时间设置不会发生改变(见图2.18),这仅限于相对于帧而言关键帧的位置不会改变。这里有3句短语:
同样,帧速率不匹配的素材(或者是一个嵌套合成)每秒钟至少要同步一次,但是插入到源文件中的帧可能会插入到合成帧之间。想象一下音乐家弹奏的3/4拍,在After Effects中的1秒就像是音乐中的强拍。
时间伸缩
“时间伸缩”(Time Stretch)可以让你改变源剪辑片段的持续时间(及其速度)——但是它不能让你对重设的时间进行动画上的设置(为此,你需要“时间重映射”(Time Remap)或者“时间扭曲”(Timewarp))。利用时间轴面板左下角3个图标中的第3个可以显示"入"(In)/"出"(Out)/ "持续时间"(Duration)/"伸缩"(Stretch)栏。
我通常只是改变“伸缩”值,需要在这4列所有的繁琐设置中找到相关的设置。我同样很少使用“时间伸缩”进行设置,这一设置无非是得到一个整数倍数或通过半数划分,例如:300%、200%、50%或者25%。如果使用“时间伸缩”对话框(上下文菜单>时间>时间伸缩)你就不需要使用整个列表了。使用Ctrl+Alt+R(Cmd+Opt+R)快捷键或 “图层”>“时间”>“时间反向图层”(Time-Reverse Layer)命令将会设置“伸缩”值为“-100%”。图层的外观将发生变化以提醒你这个图层已经被反向了(见图2.19)。
使用“图层”>“时间”>“冻结帧”(Freeze Frame)命令可以在当前时间使用一个单一的“保持”(Hold)关键帧来应用“时间重映射”效果。
本书配套资源中的02_frame_blend文件夹和项目包含的示例合成将会帮助你尝试你自己的帧混合。
帧混合
假设你使用“伸缩”数值来重置一个源剪辑片段的时间,但这个数值并不能被100%等分,其结果很可能在软件识别有误的情况下造成混乱,产生不准确的改变。为图层和合成启用“帧混合”(Frame Blend),After Effects会将邻近的全部帧进行平均,然后再在插入到源素材帧之间的那些帧上创建一个新的图像。当你将素材添加到帧率不匹配的合成上时,这一方法同样适用。下面介绍两种帧混合的模式:
- “帧混合”(Frame Mix)模式可以叠加邻近的帧,实质上是把它们模糊到一起。
-
“像素运动”(Pixel Motion)模式是基于光流(Optical Flow)技术的模式,他是使用模糊量跟踪实际像素的运动。
“像素运动”与“时间扭曲”效果中的光流技术已得到Foundry公司的许可。我们所知的相同的底层技术Kronos同样用于Flame和Nuke的Furnace插件中。
令人困惑的是,这两种模式的图标分别与草稿和最佳图层质量的图标相同(见图2.20),也大概正是如此,在一些案例中,如果单纯为了更快地代替它们,“帧混合”可能是更好的。“像素运动”经常会出现太模糊,过于扭曲,或者包含了太多显而易见的人为处理过帧的痕迹。在这种情况下,你可以返回到“帧混合”,或者进一步使用“时间扭曲”效果,以获得更多的可控性(在本章后面内容将详细介绍)。
嵌套合成
“时间伸缩”(或“时间重映射”)可以将主合成的帧速率应用到嵌套合成中,而动画效果并不是通过帧混合实现,取而代之的是,关键帧差值会重新切换到这个新的帧速率。如果你将较低帧速率的合成放到一个主合成中,软件可能会保持嵌入合成的帧速率。在这种情况下,打开嵌套的合成的 “合成设置”>“高级”面板,并选中“在嵌套时或在渲染队列中,保留帧速率”(Frame Rate When Nested or in Render Queue)选项(见图2.21)。这将强制After Effects在底层合成中只使用整体的帧增量,就像是使用那个帧率的合成被预渲染了一样。
选择“效果”>“时间”>“色调分离时间”(Posterize Time)选项也可以采取在特定的帧速率上强制任何层,但效果在“时间”分类中应用之前应该可以在指定的图层上应用所有其他效果。“色调分离时间”往往会打破前面的效果。
时间重映射
“时间重映射”胜过“时间伸缩”。其原理非常简单:指定的时间点具有一个数值,就像任何其他的属性一样,所以可以为其设置关键帧,包括“缓和”甚至“循环”。基本上,这个操作就像其他任何动画数据的操作一样。
最后一个“时间重映射”关键帧比图层的总体时间设置(在大多数情况下是一个不存在的帧)更重要,以保证可以触及到最终的源帧,甚至当帧速率不匹配时也是如此。要获取最后一个可见的帧,你必须在倒数第2个帧上添加关键帧。
使用Ctrl+Alt+T(Cmd+Opt+T)快捷键或者使用“图层”>“时间”“启用时间重映射”(Enable Time Remapping)命令设置两个“时间重映射”关键帧:一帧在起始处,另外一帧在图层结尾处的后面。时间重置后的图层在理论上具有无限的持续时间,所以最终的“时间重映射”帧可以有效地变为“保持”关键帧,这时你可以自由地缩放图层的长度,而不受最后一帧的限制。
需要注意的是,当将“时间重映射”应用到一个第1帧或最后一帧超出了合成持续时间的图层上时,可能会有你看不到的关键帧。在这种情况下,我倾向于在合成的起点和终点添加关键帧。单击“时间重映射”选取所有的关键帧,按住“Shift”键取消选择在时间轴面板中能够看到的关键帧,同时去除那些看不到的关键帧并删除它们。
在After Effects中也有一个“冻结帧”选项,可以右击图层并从上下文菜单中选择,或者从“图层”菜单中选择“时间”>“冻结帧”命令,这个命令可以利用单个“保持”关键帧设置“时间重映射”。
时间扭曲
Foundry公司先进的被称为Kronos的时间重设工具提供了应用于“像素运动”和“时间扭曲”的技术。“像素运动”是前面描述过的一种自动化设置,“时间扭曲”则通过添加一组允许对结果进行调整的效果控制器而在“像素运动”基础上进行了加强。“时间扭曲”使用了光流技术来追踪素材中的任何运动。独特的自动化的运动矢量数据描述了每个像素是如何从一个帧移动到另外一个帧上的。利用这种准确的分析,“时间扭曲”就很有可能通过利用不同的时间设置,沿用这些矢量数据以内插值进行改写,生成一个由这些相同像素拼凑而成的图像。其结果就像是在原始帧之间出现了新的帧。当使用它的时候,它必须看起来令人信服。
Foundry公司的Kronos工具现在是作为独立的插件提供的,这些独立的插件使用GPU胜过“时间扭曲”,并提供了其他的功能。在本书配套资源中可以找到它的演示版。
“时间重映射”与“时间扭曲”之间的不同之处是什么呢?“时间重映射”只需要很少的计算能力,而“时间扭曲”则要求更复杂、更苛刻吗?尝试操作一下本书配套资源中的“keyed_timewarp_source”序列(02_timewarp文件夹中)或者打开已经完成的相关联的示例项目。图2.22显示了“帧混合”和“像素运动”之间的最基本的差别。
要将“时间重映射”关键帧转换为“时间扭曲”中的“源帧”(Source Frame)模式,可以启用“源帧”的表达式(参见第10章),并输入以下代码:
d=thisComp.frameDuration timeRemap * 1/d
因此可以在时间轴面板中单击“帧混合”切换到带有“时间伸缩”的“像素运动”选项,或者是“时间重映射”选项,获得同样是“像素运动”方法中的与“时间扭曲”相同的光流解决方案。这有什么不同吗?
- 所有的方法都可用于加快或减慢素材,但是只有“时间重映射”与“时间扭曲”可以使用关键帧动态地在时间属性上设置动画。
- 所有的方法都能够使用所有的3种“帧混合”模式(“全帧”(Whole Frames)、“帧混合”(Frame Mix)和“像素运动”(Pixel Motion))。
- “时间重映射”关键帧甚至能够直接转换到“时间扭曲”,但是它需要一个表达式(请看“注意”)因为“时间扭曲”使用的帧来计算时间,而“时间重映射”是使用秒来计算。
- “时间扭曲”具有以下几个优点,因此它是值得付出一些额外努力来使用的:
- 它可以应用于合成,而不仅仅是素材
- 它包括了通过启用运动模糊开关来添加运动模糊的选项
- “调节”(Tuning)区域可以让你完善“像素运动”自动生成的结果
要将“时间扭曲”应用于素材,可以启用“时间重映射”,并且当减慢素材时扩展图层的长度——否则,你将会用光这些帧。“时间重映射”会在默认位置保持其关键帧,而“时间扭曲”将会改变它。
示例素材已经预先完成了键控,当前景中的任何人(或任何物体)独立于背景进行移动时,示例素材可以提供最好的结果。与“gs_timewarp_source”素材进行交换,你将看到一些错误。在素材下面添加“keyed_timewarp_source”图层作为参考,并在“时间扭曲”将其设置为“遮罩图层”(Matte Layer),错误应该会再次消失,这种操作的额外优势就是可以处理完整的非键控素材。
你甚至可以进一步调整参考图层,并且对它们进行预合成(例如,通过提高对比度或者亮度给“时间扭曲”提供一个更清晰的源文件),然后应用这个已预合成好的图层作为一个“扭曲”(Warp)图层。这时它将随着调整进行分析,但是将把结果应用到未触及的源文件上。
转描(参见第7章)是为“时间扭曲”创建前景“遮罩图层”的非常有效的工具。在前景和背景以不同的地方移动,这有助于消除或减少运动错误。
在“调节”区域中,你可以通过渲染时间来换取精确度,但是不要认为较好的精确度总是会产生较好的结果——不再是这样了。这些工具的制作是使用了“Local Motion Estimation(LME)”(局部运动评估)技术,关于这一技术的内容被较为完全地记录在“Furnace用户手册”中,如果你想完全深入地了解这些方面的细节可以去阅读这个手册。
现在,实验一个需要进行很多调节的镜头,以显示出“像素运动”的更多的缺点,以及“时间扭曲”是如何帮助解决它们的。使用本书配套资源02_rotoSetup_sk8rboi文件夹中的素材,其特点是拥有多个运动的平面——小货车的车轮、货车和溜冰者。在当溜冰者进行360°跳跃旋转时的高潮时刻,背景完全缺乏从一个帧到下一帧的连续性,这是一个典型的将会破环任何当前可用光流类型的案例(见图2.23)。
下面有一些你可以在这个素材上或你自己的素材上进行尝试的调整方法:
- 虽然提高“矢量细节信息”(Vector Detail)似乎能够增加精确度,但是在这个剪辑片段中很难找到任何可以受益于此的地方。较大的数字(100)不仅会激增渲染时间,而且会直接增加或最多也就是改变快速运动中的人为痕迹。这是因为它在没有足够的区域进行平均的情况下分析了太多的细节。
- 平滑度与“矢量细节信息”直接相关。Fmmdry公司声明在已进行平衡过的默认情况下,对于大多数序列来说都可以实现较好使用效果。你能够增加“全局平滑度”(Global Smoothness)、“局部平滑度”(Local Smoothness)以及“平滑迭代”(Smoothing Iterations)以便处理细节噪声,但是同样,在这个案例中它只是改变人为痕迹而不会去解决它。
- 在进行一个滑板动作表演期间,平面上的360°跳跃是比较难处理的,因为它从一个帧到下一帧之间变化太多。像在这种情况下“从一个图像开始构建”(Build From One Image)选项就会非常有帮助——而不是试图混合两个不匹配像素集,“时间扭曲”能够支持处理其中之一。而缺点是在转换点会发生突然的改变——像素不流动。
- 在这个剪辑片段中,不需要启用“适当明亮度更改”(Correct Luminance Changes)选择——它用于在亮度上突然(图像闪烁)或逐渐的变化。
- “错误阀值”(Error Threshold)可以在使用矢量数据之前可以评估每一个矢量数据,提高该数值后由于有太多可感知到的错误,将会淘汰更多的矢量数据。
- “块大小”(Block Size)可以确定每个矢量跟踪区域的宽度和高度,与平滑值一样,较低的数值会产生较多的噪点,较高的数值则会减少细节。Foundry公司的文档表明,该值应该“很少需要进行编辑”。
- “权重”(Weighting)可以让你控制分解多少被指定的颜色通道。作为将在第5章学习的内容,默认相对应的内容是眼睛是如何对颜色进行感知并产生一个单色图像的。如果一个通道具有特别明确的噪点——通常是绿色通道——你可以降低它的设置。
- “过滤”(Filtering)可以应用于渲染,而不是分析;它增加了结果的清晰度。它将花费你的渲染时间,所以如果你要启动这个选项,要等到你完成其他的更改并准备进行渲染的时候。
对于像“sk8rboi”这样的剪辑片段来说,为了提高结果你所能做的全部的最重大的事情就是使用“Roto笔刷”(Roto Brush)工具(详见第7章)分隔出每一个运动元素——货车、溜冰者和背景。
Twixtor(又称Vision Effects)是“时间扭曲”的第三方替代工具,它不一定更好,但是一些艺术家(不是全部)确实更喜欢它。在本书配套资源中可以找到它的演示版。