游戏画面流畅的FPS需求之谜

写在前面:限于作者能力所限,不敢妄言是对这一问题的完全解答。仅仅是记录一些自己的看法。

“为什么电影只要24FPS就能很流畅,而游戏却需要非常高的帧数才流畅?”——这是一个已经讨论烂的问题。随便贴一个Quora的: 和一个知乎的

稍微看一下上面两个地址,可以看到主流观点是:电影因为是使用曝光的方式来成像,每“帧”的曝光时间是固定的,但是被拍摄事物并不是静止的。故当物体运动时,画面会产生残影(运动模糊,或称动态模糊)。而正是这一残影的存在,会让人有流畅的感觉。而游戏每帧都是单独渲染出来的,故每一帧都是精确无模糊的。缺少了中间的残影,感觉物件的运动不流畅,就会觉得很卡。这个理论我们称之为动态模糊论

如果随便找几个视频观察,确实会发现真人电影中模糊几乎无处不在:在真人拍摄的电影中,如果你逐帧播放,你会发现几乎没有一个画面是清晰的——尤其是动作片——几乎全片都是动态模糊。在播放的时候就不会有不流畅的感觉。我个人之前也一直认为这个理论就是游戏低FPS时卡顿的主因。

但是前几天在B站看到一个所谓的对代码菌撕逼的视频中,也提到了这个问题。在视频中,作者主张,真正导致游戏低帧数卡的原因,是帧分布不均匀,或者说FPS不稳定导致的。我们姑且称之为帧不均匀论。理由倒也很简单:当帧数不稳定/帧不均匀时,动作自然不符合物体的正常运动规律,例如说时快时慢,那当然会觉得流畅度大降。当帧数高的时候,虽然帧数忽高忽低的现象依然存在,但是由于总体细分的次数多,那一点点波动自然也就可以忽略了。

真正让我觉得在意的是作者提出的对动态模糊轮的几个反例。反例一,定格动画。当然这里要先说明,因为显而易见的成本和人力所限,大多数定格动画其实是1拍2甚至更低的——也就是说真实FPS只有12帧每秒。这种定格动画其实看上去感觉还是蛮“卡”的(不过感觉上倒也不是3D游戏那种难受的那种卡,见下文)。不过作者中提到的《僵尸新娘》,倒是1拍1的。由于定格动画的原理所致,很显然画面中不会有任何动态模糊存在(有例外,见下文),但是整体成片看上去也不会觉得不流畅。

另外一个反例,就是游戏录像。虽然大多数游戏要达到非常流畅都是要有60fps甚至更高,但是多数视频还是用24-30左右的fps录制(或者后期转制)的——作者表示(转述)“大家天天看这么多直播,有说过不流畅吗?又觉得卡吗?”(然后贴了个LOL的视频)。

这个理论其实我后来发现在知乎那个贴的第一个答案其实也提到了。其作者也提出了几个动态模糊论的反例——许多2D游戏,尤其是像素游戏,帧数其实很低,也没有动态模糊,就可以觉得非常流畅。

虽然作者的一些观点的细节我不太苟同——比如游戏视频24fps“不卡”这点。自从Twitch支持60fps串流之后,大部分著名主播都转向了60fps直播。其区别是巨大的,哪怕是Dota 2这种基本一个俯视视角走到底的游戏,在习惯了60fps之后,24fps的直播简直无法入眼。不过总体而言,我倾向于这个“帧数不稳定”确实是一个非常重要,可能比动态模糊更重要的导致游戏低帧数时感觉不流畅的因素。再举个有点类似的例子:由于Flash性能问题,在Twtich看直播(60fps)经常会有掉帧问题,虽然掉到最低一般也不会低于40fps,但是在掉帧发生时,流畅度感觉奇低,甚至远低于直接用24fps直播的游戏视频。另外电影自然不会有帧数不稳定的问题:因为摄像机的曝光时间长度和拍子都是精确的,能保证以稳定的采样率来记录一组本来就是真实存在的动作,而不像3D游戏,是电脑实时渲染,难以保证稳定性。

不过也不是说动态模糊理论就完全无用。事实上,我觉得游戏“卡”和帧数不足,其实是两个问题。而动态模糊解决的是第二个问题。换句话说,在3D游戏这个特例中,帧数不足时会导致帧不平均,进而导致“卡”,但是对于所有利用视觉暂留的媒介,都会有由于帧数不足产生的另一种“卡”。对我个人来说,这两种卡其实还是区别挺明显的:那种帧数不均匀的卡我稍微看一会就很不舒服,但是帧数不足的则要小于20fps才会觉得明显,而且即使看很久也不至于不能忍受。

既然说帧数不足,就得先说到底多少算“够”。很显然,不同的画面需要的帧数是不同的。最主要的因素自然是物体的运动速度——如果速度越快,就需要越多的帧来把整个运动轨迹来描述清楚。否则自然会有不连续感。换句话说,帧与帧之间位移不能太大。就好像在游戏中越是大转角,卡顿就越明显一样(另外大转角的时候游戏可能消耗更多资源来渲染,从另一个方面反而可能会导致帧数降低)。这一点被日本动画利用得淋漓尽致:有限动画很低的帧数就能让人觉得流畅,因为(这里现学现卖一下,关于有限动画和全动画的区别可以参见上面那个B站视频)有限动画本身就有意简化了很多人物的动作(例如:说话的时候只有嘴动)——所以根本不需要很高的帧数来呈现。同理,许多2D游戏动作速度稳定而单调,也不需要很高的帧数。而3D游戏就不同了:经常有360度全方位的超高速旋转,外加缩放等一些因素,本身就对帧数的要求高一些。

既然我们说到了高速移动,那真人摄影自然也有这些东西。为什么不卡呢?动态模糊的作用这里就出来了:动态模糊在我看来,其作用是:让帧数不高的快速动作看起来流畅。比如一个超长距离的移动,如果只有两帧显示一头一尾的俩位置,那肯定是感觉跳跃;但是如果加上了前后的拖影,那就会好很多。毕竟人眼看视频的原理本来就是视觉暂留;利用残影,可以出一种中间缺的帧似乎存在的错觉。事实上,上面提到的定格动画《僵尸新娘》,在一些大转场(比如镜头围绕着人物快速旋转的时候),也会专门对背景加上(或者是拍摄出?)动态模糊。

但是动态模糊这种方法也是有极限的。自从戴眼镜以来(虽然不知道有没有什么关系,可能是视野变小导致注意点更集中?),我看电影就感觉,凡是动态的时候,虽然确实倒不“卡”,但是其实根本看不清东西——因为实际上根本也就没有清晰的画面,基本每帧都是模糊的一片。人眼其实还是有不错的追踪能力的——比如一个虫子在你眼前飞过,你基本还是可以用眼睛追踪他得到一个不错的清晰的像的。但是电影中就经常出现哪怕是跟拍的镜头中的前景,暂停之后也是模糊一片的现象。其实某种意义上还是不太真实。所以就算是真人摄影,现在也有向高FPS转变的趋势。

那么是时候总结一下了:

游戏需要更高帧数才能流畅是因为

  1. 一般而言游戏帧数不稳定,低帧数时波动会更明显,导致动作不自然从而感觉卡;
  2. 游戏尤其是3D动作游戏,镜头运动速度极快,本身就需要相对更高帧数才能感觉流畅;
  3. 游戏缺乏动作模糊导致高速场景缺帧严重的情况下缺乏拯救(读作hunong)的手段。

当然还有很多别的因素,比如游戏需要输入,而输入也会有延迟啦,电影(特指胶片放映,所以我觉得这个论据没啥说服力…)中间会插黑场啦之类的,如果想了解可以自行搜索一下。

在最后,我贴几个视频,算是我之前做的小小实验。游戏是WOW,首先我先锁60fps然后用60fps录像,那自然是超级流畅。

然后我比较一下以下三种情况:

  1. 60fps游戏录制成60fps视频后转24fps视频
  2. 24fps游戏录制成60fps视频
  3. 24fps游戏录制成60fps视频然后转24fps的视频

这里我是想比较什么呢?因为24fps是通过WOW限制帧数的功能强制达成的,所以我的目的就是希望能达成一个相对比较稳定的帧数(毕竟24fps远远低于我电脑能渲染的能力)。然后来和高帧数游戏转录成的24fps视频相比较,看“卡度”有没有很大区别。如果上面的理论正确,那么只要能保证帧数稳定,24fps的游戏也算可以接受——至少和24fps的游戏录制视频的感觉差不多。

这里先说明一下实验的局限性:首先限帧之后,其实帧数还是有波动:如果把成品视频逐帧播放,会发现偶尔还是会有两帧一样的问题。另外24和60互相转换也是个注定会引发问题的点:从理论上来讲,24fps录制成60fps视频(#2)和拿#2再转24fps视频(#3)应该是完全一样(毕竟真实fps只有24);但是事实上,60fps的效果还是要稍好一点——毕竟是二次转换抽帧,我觉得还是会有额外损失的。所以推荐对#1和#2进行比较。当然我也可以直接录制24fps的视频(我是用shadow play录制的)——但是屏幕刷新率就是60hz,我觉得还是直出60fps最稳定,鬼知道shadow play的实现是不是24fps游戏->60fps显卡输出(匹配屏幕)->24fps视频,不想再引入更多次的转换等后期的幺蛾子来干扰结论了。

但是总体而言,还是达到了我想要的目的:24fps的游戏(保证帧数稳定)->24fps的视频和60fps的游戏->24fps的视频的总体观感接近,都是那种“微卡”的感觉。在大转角的时候,自然掉帧就更明显。但是看上去还是不错的。

(请用最高画质1080p观看)

↑60fps游戏->60fps视频

↑#1 60fps游戏->60fps视频->24fps视频

↑#2 24fps游戏->60fps视频

↑#3 24fps游戏->60fps视频->24fps视频

Advertisements

One thought on “游戏画面流畅的FPS需求之谜

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s