目录:Unity - Timeline 知识汇总
原文:https://docs.unity3d.com/Packages/com.unity.timeline@1.2/manual/clp_ease.html
翻译时Timeline版本:Timeline 1.2.11
Easing-in and easing-out clips
剪辑的淡入淡出
剪辑的淡入淡出可以让剪辑与他周围的剪辑混合过渡或是与空白内容的过渡。创建淡入淡出,你可以选中一个剪辑,然后在Inspector窗口中设置 Ease In Duration 或是 Ease Out Duration。
使用 Ease In Duration 与 Ease Out Duration 给选中的剪辑淡入淡出平滑过渡。
淡入淡出可以不同的效果,取决于轨道的类型:
- 在一个Animation或是Animation Override 的轨道上,动画剪辑的淡入可以处理剪辑前面的空白内容或是其他剪辑的淡入平滑过渡。而淡出可以处理后面的空白内容或是剪辑的淡出平滑过渡。而关于怎么设定剪辑前后端的空白内容呈现动画的方法,查看 Setting gap extrapolation(设置空白内容的外插处理)。
- 在音频轨道的话,ease-in淡入Audio剪辑会淡入它的音量。Ease-out是淡出音量。
- 在Playable轨道的话,淡入Playable剪辑是处理特效或是Playable剪辑里的脚本处理的。淡出也是。
淡入与淡出动画剪辑。Timeline处理淡入淡出类似一个线性插值的曲线。
剪辑视图区中的淡入或是淡出的过渡看起来都像是一个直线型的线性过渡,但其实是有一个默认的曲线型的线性过渡的。调整Inspector窗口中的Blend Curves下的In(淡入)或是Out(淡出)的曲线即可。
使用Blend Curves来自定义淡入淡出的过渡变化
注意 Blend Curves 可能会影响到用户两个剪辑之间的混合区。Ease In Duration和Ease Out Duration 属性代表Blend Curves是否有作用于淡入淡出的过渡,或是混合处理。Ease In Duration或是Ease Out Duration可编辑时,一般适用于对空白内容的淡入淡出。不可编辑时,是对剪辑之间的混合过渡的淡入淡出处理的。(原文对Ease In/Out Duration的是否可编辑时的说明有点拗口,而且也没说明白可编辑时是对空白内容的处理)
Ease Out Duration 不可编辑,因此 Blend Curves 下的 Out 曲线是用于剪辑之间的混合
自定义淡入淡出的过渡,使用下拉菜单,将Auto调整为Manual,然后旁边会显示预览的混合曲线。点击该预览的曲线,Inspector窗口下方会显示曲线编辑器。
选择Manual并点击预览区域打开曲线编辑器
曲线编辑器与 blending between clips(剪辑之间的混合处理) 时的曲线编辑器是同一个编辑器。
当给动画剪辑创建了淡入或淡出的过渡,剪辑就会与空白或是剪辑有过渡或是混合过渡处理。以下的动画属性值会影响动画剪辑对空白内容的处理:
- 剪辑的 pre-extrapolate and post-extrapolate setting(前后外插设置)。
- 过个轨道中的多个剪辑同时绑定了相同的GameObject。
- 场景中不是通过Timeline处理的动画。
Gap extrapolation and easing clips
空白内容的外插处理与剪辑的淡入淡出
为了能够成功能的让剪辑的外插与淡入淡出可以正常处理。
- 如果想要外插有效果,就不要设置Ease(淡入处),这时可以让其他的剪辑来Ease就好。
- 如果想要Ease(淡入处)有效果,就不要设置外插效果,这时可以让其他的剪辑来处理外插。
(上面这段是我自己总结,有兴趣的同学可以看看原文这里写的说明(如果文档没有更新的话),你会看的一头雾水的)
例如,下面的Pre-Extrapolate前外插处理没有效果,因为Victory_Dance剪辑有Ease-In的淡入处理。
剪辑的前外插设置没效果,因为剪辑有Ease-In。
让Idle剪辑来淡入处理,Victory_Dance剪辑的前外插设置为 None 就好了。空白内容的淡入是通过Idle剪辑的 Post-Extrapolate 来设置的。
Overriding Animation tracks with ease-in and ease-out transitions
使用两个动画轨道绑定控制同一个GameObject并创建两个轨道的平滑过渡效果。
(这里我要特别说明一下,这个功能必须要在:Game Play Mode模式下才有效果,就是要运行后才能看到正常效果,在编辑模式下,没有混合过渡,只会看到最下方轨道动画的效果,当然如果都放到了同一个轨道下编辑,就没有这个问题了。)
例如,两个动画轨道绑定了同一个GameObject,第二个轨道有一个包含淡入的剪辑,这时可以让第二个轨道中的动画与前一个轨道中的动画进行过度平滑处理。(注意原文没写:一定要在运行模式下才能看到效果,我现在使用的Unity版本是2018.3.0f2的,如果读者发现不用运行也可以的话,那可能你的Unity版本比较高吧,官方可能已经修复了这个问题了。)
例子中使用了两个动画轨道,同绑定了同一个GameObject,并创建了夸轨道的剪辑平滑过渡。
在这例子中,第一个轨道中的动画剪辑是循环播放的Idle类人动画,人物会一直站立着的。第二个轨道中的动画剪辑是个有淡入效果的,该动画Victory_Dance淡出时会慢慢的过渡到循环的Idle动画。
为了能成功了覆盖前一个轨道的动画,第二个轨道的空白外插处理必须选择为:None,这样空白内容才会使用前一个轨道的动画数据。(我在运行模式看到的结果是,无论你的下面那个轨道的剪辑设置外插是什么选项,都是可以正常与上一个轨道的动画过渡的,还是要说明,我的Unity是2018.3.0f2)