本帖最后由 听柳 于 2025-3-14 16:05 编辑
通过观察分析,我们可以发现画面出现闪动、闪烁或闪白的动画,原因并不是单一的。
1.动画的第一帧和最后一帧画面元素的位置、颜色或形态上存在明显的差异,导致循环播放时出现视觉跳跃,从而感觉画面闪动或抖动了一下。即使首尾帧视觉上相似,若存在1像素的位置偏移、透明度差异或图层残留,循环播放时会因微小跳跃产生闪动。
比如图2和图3,我故意制作了两个不同的画面,图2是长方形画面,小球水平运动;图3是圆形画面,小球环形运动,但问题都是一样的:即首尾帧位置相差太远,循环播放时首尾帧衔接不上而出现画面闪动。
以图2为例,第1帧放个球在画面的最左侧,最后1帧在画面中间稍偏右的位置,播放时这个球还没有滚到画面最右侧,更没有滚出舞台,就又重新返回画面的左侧再次向右滚动,肯定会出现画面抖动闪动一下。
只不过球是轴对称图形,虽然出现闪动,我们的视觉上还不是太明显,如果是其他不规则物体(如图4)、不同的形状(如图5)、不同的颜色(如图6)、不同的风景画面(如图7),则视觉跳跃会更明显。尤其是用AI生成的动画,不管是风景动画还是人物动作动画,由于动画帧数较少,画面的第1帧和最后1帧的画面差别巨大,循环播放时,画面从尾帧跳回到第1帧再次循环播放时,首尾帧画面肯定会结合的不好,甚至根本无法吻合,肯定会难以避免的出现画面闪动。这是发在咱们版面上的个别动图画面出现闪动最常见的原因。
明白了其中的原因和原理,我们就会有对应的解决办法了。比如上面说的图2那个滚球的动画,要确保最后一帧的球完全移出画布右侧(如位置坐标等于画布宽度+球自身宽度),而第一帧的球从画布左侧外开始,形成无缝循环路径。我们要考虑优化首尾帧设计,首先要内容衔接:确保首尾帧的主体位置、形态接近(如首帧角色向右移动,尾帧角色应处于循环起始位置)。其次要色彩统一:调整首尾两帧的亮度、色调一致性,避免色差导致闪烁。
其他不同画面的动画,如移动的风景动画(全景动画),小动物、飞鸟、游鱼、人物等活动的画面等等,都可以按这个思路去处理。不过,对于AI生成的动画则处理起来太难,例如用AI生成一个几个人跳舞的画面,第1帧画面中的人物刚举起手,然后第2帧第3帧等继续举手,而最后1帧变成刚要踢腿的画面,循环播放时,就会突然由踢了一半的腿还没落地的画面,突然变成了腿早已落地又扬手的画面,出现画面中播放到最后跳舞的人刚踢起腿却因循环到了第1帧。遇到这种情况如果我们可以在画面的最后再添加几帧人物踢腿后又能落地又举起手的画面,再循环到第1帧时,正好和第1帧刚好扬起手的画面紧密贴合,就不会有画面闪动的现象了。但像这种需要添加几帧画面以达到和第1帧画面吻合的处理,对于简单的画面我们完全可以这样做,而对于复杂的画面并不容易,比如上面举例说的跳舞的画面,添加几个帧的时候,除了考虑主角的举手抬腿等动作首尾要吻合,还要考虑背景画面的变动是否首尾吻合,如果是多人画面还有小动物等复杂的画面,更得统一考虑首尾帧交接时画面都要吻合,这处理起来是非常复杂的,所以大多只能不处理了。
多帧动画在制作过程中,如果其中的某一帧或某几帧画面中动画元素出现移位、错位,或颜色出现改变,或不小心加入了空白帧,也会在动画循环播放时出现画面闪动。解决的办法就是在制作时避免出现这种情况,如果有空白帧,删除这多出来的空白帧后闪白就消失了。
2.在一个gif动画中,需要添加另一个gif动画时,为了达到作者想要的效果,肯定会调整新加入动画的位置和大小。但如果在移动新添加的动画位置时,仅移动了第1帧,其他帧还保留在刚导入画面时的位置,在循环播放时肯定会出现较明显的画面闪动,如果位置差别过大,则会出现很奇怪的播放画面。解决的办法是如果新导入的gif多帧可以整体移动时,就整体移动到画面中你想放的位置,比如Flash中就可以整体移动新导入的gif动画。而在ps或U5中,我们通常一次只能移动1帧,我们可以选中第1帧,把需要移动的对象放到需要的位置后,在U5中我们可以选择“与对象重叠帧同步”,在PS中我们可以选择“跨帧匹配图层”,这样在第1帧把对象移动到需要的位置后,其余帧也自动移动到相同的位置,而不至于出现画面错位而闪动了。
3.其他因素。动画帧数太少、动画帧率与导出设置不匹配(如24帧/秒的动画以30帧/秒导出),会导致播放速度异常引发跳跃感;过渡帧处理缺失;首尾帧透明区域未完全对齐。也有资料提示美图秀秀的闪图工具仅支持手动添加静态帧,无法自动生成首尾之间的动态过渡效果(如渐隐、位移补间),导致画面跳跃。
|