目录:Unity - Timeline 知识汇总
原文:https://docs.unity3d.com/Packages/com.unity.timeline@1.2/manual/clp_gap_extrap.html
翻译时Timeline版本:Timeline 1.2.11
Setting gap extrapolation
设置空白内容的外插处理
空白部分内容的外插处理,就是处理Animation轨道中剪辑的前后两边空白内容的数据模拟。
主要意图是为了避免动画剪辑之间空白部分的表现异常的问题。因为动画部分异常表现于两个不同的Transform变换,或是类人动画中的动作差异太大,导致看起来Transform变化或是动作变化太大。
每个动画剪辑都有两个空白内容的外插属性:Pre-Extrapolate前空白外插(左端的外插),控制动画数据播放前的数据模拟。Post-Extrapolate后空白外插(后端的外插),控制动画数据播放完后的数据模拟。
默认的,Timeline会给剪辑外插属性都设置为 Hold。这种设置意思是,动画剪辑Start前的动画数据是使用该剪辑的第一帧来表示的,而动画剪辑End后的动画数据是使用最后一帧来表示的。在动画剪辑的前或后的图标(无限符号)代表着该剪辑有外插模式处理。
图标代表着 前外插 和 后外插 的模式
当同一轨道上的两个剪辑有空白内容,那么可以设置靠左边的那个剪辑的 Post-Extrapolate(后外插)。如果左边的剪辑的 Post-Extrapolate 设置为 None,那么可以设置靠右边的剪辑的 Pre-Extrapolate(前外插)属性。动画剪辑的前后图标代表空白内容是否有外插处理。
*第一个轨道的空白(红色框那)外插处理是来自左边的剪辑的 Post-Extrapolate(后外插)。第三个轨道的空白(蓝色框那)外插处理是来自右边的剪辑的 Pre-Extrapolate(前外插) *
选择动画剪辑后在Inspector窗口中调整 Pre-Extrapolate与 Post-Extrapolate的动画外插属性。
使用 Pre-Extrapolate和 Post-Extrapolate来给选中的动画剪辑设置外插模式
Pre-Extrapolate 属性在下面其一情况都会被隐藏掉:
- 动画剪辑的前一个剪辑设置了 Post-Extrapolate 模式(外插模式不是None得都算是设置了,原文这里没有说明)。
- 动画剪辑左边(原文没有说明方向)没有空白内容。
选中的剪辑的前面空白内容使用了 Pre-Extrapolate 属性来空白外插处理,有以下选项可选择:
- None(无):关闭Pre-Extrapolate的外插功能。选中剪辑的前面的空白内容,将使用场景中GameObject本身的transform变换,动作,或状态。选择 None,一般你可以是想创建一个场景中的GameObject与动画剪辑之间的淡入效果。查看 Easing-in and Easing-out Clips(剪辑的淡入淡出) 了解详情。
- Hold(默认值):选中的动画剪辑前面的空白内容将使用:剪辑的起始端的第一帧的数据来模拟。
- Loop(循环):选中的动画剪辑前面的空白内容将使用:剪辑的循环帧的数据来模拟,循环的起始偏移内容设置 Clip In 属性即可。
- Ping Pong(回弹,要是用过Mathf.Pingpong函数的话就会好理解一些):选中的动画剪辑前面的空白内容将使用:剪辑的回弹循环帧的数据来模拟,循环的起始偏移内容设置 Clip In 属性即可。
- Continue(按资源设置持续:loop==true?循环:Hold持续前或尾帧):选中的动画剪辑的前面的空白内容将使用:hold或是loop的方式,取决于原始资源的设置。例如,如果选中的动画剪辑使用的资源是"Recorded(2)"的源资源,该资源设置了 Loop为true,那么Continue就会使用与Loop一样的效果,否则(就是Recorded(2)的Loop是false)和Hold效果一样。
使用 Post-Extrapolate的属性与Pre-Extrapolate的几乎一样,区别就是:Pre-Extrapolate处理的是剪辑前面(左手边)的空白内容,而 Post-Extrapolate处理的是剪辑的后面(右手边)的空白内容。
(上面Post-Extrapolate的说明,我就不按官方文档的来写了,太冗余了。所以我简单描述一下。)