POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
查看: 5007|回复: 11
打印 上一主题 下一主题

转帖:为什么游戏帧数要60帧每秒才流畅,而电影帧数只有24帧每秒?

[复制链接]
跳转到指定楼层
1#
发表于 2015-2-25 10:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题:为什么游戏帧数要60帧每秒才流畅,而电影帧数只有24帧每秒?楼主纯转帖来的,给大家科普下。
现有的高票答案都是从视觉流畅的角度来分析的,都解释的很好,但是游戏开发中,以每秒60帧作为性能目标的原因,并不仅是单纯考虑到视觉流畅性。

事实上,仅考虑视觉流畅性的话,30帧是完全可以接受的。在画面细节足够的情况下,人眼脑补运动感的能力会被充分调动起来,不会太在意帧间区别。而实际上,xbox360和ps3上都有大量的游戏运行在30帧每秒,包括光环,战争机器,神秘海域,杀戮地带这样的大作。

而且以现在的3D技术,完全可以在30帧的情况下, 加入动作模糊等特效, 对画面中高速运动的物体加上人为模糊,从而实现和电影画面相似的质感。 在打开动态模糊的情况下,30帧和60帧的视觉流畅度差异极小。

这里有一个游戏30帧和60帧视频对比的网站:30fps vs 60fps
可以看到,差别需要细看才能体会,而且单看30帧的话,不会让人在视觉上觉得卡顿。
2#
 楼主| 发表于 2015-2-25 10:55 | 只看该作者
但是开发者和玩家仍然会尽可能的追求60帧的体验,为何?因为对游戏而言,流畅感并不仅来自于视觉方面,操作的流畅也至关重要。

决定操作流畅感的,主要是操作响应时间。这是指玩家做完一个操作,到游戏画面反映出这个操作影响为止,所需的时间。

而根据目前大多数游戏引擎运行的方式,这个过程需要3帧。就是说玩家的任何操作,最快也要3帧之后才能体现在画面上。因此,游戏的响应速度对帧率高度敏感。

30帧的情况下,每帧显示33ms,响应极限大概是100ms。

60帧的情况下,每帧显示16ms,响应极限大概是50ms。

实际表现中,由于游戏逻辑处理,以及显示设备还有一个几毫秒的响应时间,一般60帧的游戏响应速度会在60到70ms,30帧游戏的响应速度会在120到150ms。

因此,对玩家而言,60帧能够明显的感到比30帧流畅。
回复 支持 反对

使用道具 举报

3#
 楼主| 发表于 2015-2-25 10:56 | 只看该作者
=======关于3帧延迟========
3帧延迟和游戏引擎对逻辑和渲染的处理流程有关,在当下比较常用的渲染流程下,3帧是一个极限。对此制作过吉他英雄的 NeverSoft 的联合创始人Mick West 专门撰文进行过详细分析,全文见如下连接:Gamasutra - Programming Responsiveness
我有空的时候考虑翻译一吧,至于原理,倒是引用他一张图就够了:

回复 支持 反对

使用道具 举报

4#
 楼主| 发表于 2015-2-25 11:00 | 只看该作者
虽然电影24FPS也不如60FPS的流畅,但是24FPS不会让人觉得卡,甚至12FPS都不会让人觉得卡,而24FPS的游戏能让人很明显的感受到卡,12FPS就是幻灯片了,这是为什么呢?有两个原因。

第一个原因就是由两者图像生成原理不同造成的。

电影虽然只有24FPS,但是每一帧都包含了1/24秒里一段时间的信息,而游戏则只包含那个节点的信息。把1除以24就是0.04167,一个电影在一段时间你曝光,画面的每一帧,都包含有一段时间的信息,信息量较大,而游戏的第一帧包含第0秒的信息,第二帧包含了第0.04167秒的信息,只有一个瞬间的信息,这中间的信息完全丢失了,所以看起来会卡。

用图来解释一下,比如有一个圆从左上角移动到右下角,第一帧是这样的:

如果是电影,第二帧可能是类似下图这样的(图画得不好但是就是这个意思):

如果是游戏的话,第二帧就应该是这样的图:

看出区别来了吗?这是因为电影和游戏的画面生成方式的本质不同造成的,电影的画面是拍摄的实际场景,在一段时间内胶片持续曝光,这一段时间里人物场景的变化都会被拍到胶片上,每隔一段时间换下一张胶片再曝光一段时间。相机也是一样的原理,如果我们把手机镜头使劲的晃动然后拍一张照片,会发现照片是模糊的,这就是因为曝光过程中把移动过程中一段时间的场景都拍进去了,就模糊了,我们就能感觉到电影里面的人物是移动过去的,可以看到移动的轨迹,画面是“连贯”的。

而游戏的画面则是由显卡生成的,显卡通过计算生成一帧画面,生成完毕后再计算下一帧,这样每一帧都是清晰的,不会有模糊,像我上面图中的那个圆,不管他的移动速度是快是慢,显卡只计算两帧画面,中间的移动轨迹一概不会显示,我们看到物体就好像老版西游记里面孙悟空施一个法术“就”的一声飞过去了。
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2015-2-25 11:01 | 只看该作者
本帖最后由 3670636 于 2015-2-25 11:02 编辑

这里大家可以花10秒钟时间做一个非常简单的实验,先缓慢的挥手,发现手的影像是很清晰的,再快速的挥手,发现手的影像不清晰了,有了残影,但是你绝对不会觉得画面卡了,这就是电影的效果。我们再来模拟游戏的效果,先缓慢的移动鼠标,再快速的移动鼠标,发现了吗,快速移动的时候鼠标卡了,鼠标是一下下的跳动过去的,这就是游戏的效果了,知道为什么卡了吗。

游戏里慢慢的移动,他也是一秒钟60帧画面,飞快的移动,也是60帧,这样当你很快移动的时候,会发现“卡”了。当鼠标一秒移动60像素的时候,显示器一秒输出60帧画面,一秒移动600像素的时候显示器还是一秒60帧画面,问题就来了,当一秒60像素的时候,鼠标箭头是1像素1像素的移动,一秒600像素的时候,箭头就变成10像素10像素的移动了,画面就不连贯了,就卡了。电影就不一样了,1米1米的移动的时候,每帧的画面是清晰,10米10米的移动的时候,人物动作就会出现拖影,给人以动感的效果,连贯而不卡。人眼的视觉暂留和相机拍摄视频的原理是一样的,人的眼睛不可能在第0秒看到一副画面,到第0.04167秒又看到一副画面,而是连续的接受光照在视网膜上,所以快速挥手,可以看到手的残影,效果跟电影里面的模糊类似的,就算FPS不高也不会卡了,而如果在游戏里面快速挥手,就只能看到手在两边来回跳,中间的画面没了,就卡了。

在上面的实验中,如果试着更快速的移动鼠标,并且让鼠标做出更复杂的动作,例如画8字形,会发现中间丢失的关键帧更多了,越发显得卡了。这也就可以解释为什么RPG游戏以较低FPS运行的时候不觉得卡,而FPS以低FPS运行的时候会卡了,这是因为RPG游戏节奏缓慢,FPS节奏快,人物移动迅速,一旦FPS不高,中间的动作就会有断档,会觉得卡了,所以FPS游戏对FPS的要求更高。就像不管我们怎么移动鼠标,显示器始终60FPS没变,但是快速移动就是会卡,这是游戏和电影生成影像的原理本质不同造成的。并且FPS对操作响应速度的要求非常高,一旦FPS低了操作也会反应不过来,RPG对操作反应速度要求明显低多了,像回合制的压根就无所谓了,喝杯茶再来操作都行,FPS里的生死都在毫秒间,FPS一低随时挂掉。

现在很多游戏特别是赛车游戏,当速度变得很快的时候,会加入一个动态模糊的特效,就是模拟电影中这种高速运动的物体有拖影的效果,但毕竟是模拟特效,还是不能和真拍出来的效果比。真正的动态模糊并不是单纯的做一个模糊的拖影,他实际上是视觉暂留,因为人脑运算速度不够快,一秒钟只能处理几十帧画面,一旦物体运动过快,之前的影像还停留在眼睛里,和后面的影像重合,所以才出现了模糊,如果缓慢运动,人脑速度跟得上,就不会模糊了。所以实际上这个模糊,是之前的影像和后面的影响重叠在一起产生的效果。如果游戏要达到这种真实的效果,不是光做一个模糊的效果就行了,必须要计算那一帧前后的画面,并且模糊后叠加,才能真正的模拟人眼看到的真实效果,这明显机能不够,就算有了动态模糊,看起来不怎么卡了,但是仍旧不真实。到控制面板打开鼠标的指针拖影,是不是更卡了,这就是极其糟糕的动态模糊效果了。
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2015-2-25 11:02 | 只看该作者
第二个原因就是电影的FPS是稳定的,而游戏则是不稳定的。

电影虽然是24FPS,但是他固定每隔1/24秒换一次画面,画面出现速度是固定的,这点雷打不动,画面稳定。而游戏乍一看是60FPS没错,但是为什么同样是60FPS,有的显卡流程有的显卡卡顿呢,有人就曾经做评测研究过,为什么一模一样的FPS,有些显卡会感到“顿卡”呢。评测是这样的,他记录了在一秒里面,每一帧都在什么时候出现,于是一下子真相大白,流畅的显卡,他60帧画面是每隔约1/60秒出现一次,也就是说显卡稳定的每隔一段固定的时间生成一副画面,卡顿的显卡,可能前半秒生成了59帧画面,后半秒就只有1帧画面了,那个评测里面提到一个概念“最大帧间隔”,也就是说两帧之间的间隔时间,如果是稳定的,那画面就流畅,如果不稳定,就会卡,有的显卡最大可达数百毫秒,相当于一秒才几帧画面,那自然会让人感觉卡了,如果稳定在33毫秒,只需要30FPS,就会让人觉得基本流畅了。

除了显卡性能的不稳定导致上面这种情况出现,就是稳定性能的显卡,也会出现FPS不变帧间隔时间长短不一,因为每一秒里面的画面有很多帧,每一帧的画面复杂程度都不一样。而且不管是PC还是主机,除非显卡性能大大超越游戏硬件需求,否则FPS都不可能稳定在某一数值,游戏评测里都会有平均FPS和最低FPS,最要最低FPS低于了某一数值,游戏自然会在某一时间卡顿。
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2015-2-25 11:02 | 只看该作者
大家都知道,游戏的卡顿分很多原因。RTS游戏中单位出现过多,CPU计算能力不够,会卡,游戏特效变好,显卡算不过来,会卡,切换地图读硬盘,会卡,场景太大内存放不下,会卡。如果我们把FPS(每秒帧数),换成FPM(每分钟帧数),可能会发现,一个游戏每一分钟的帧数都会大于3600,也就是每秒都大于60,那这样就不卡了?可能前面30秒每秒有100帧画面,后面30秒每秒只有20帧画面,那后面30秒无疑很卡了。用FPM甚至FPH,这完全就是耍流氓,回过头来看FPS难道不也是在耍流氓吗?我们只看一秒钟总共有多少帧,而不去看更小的单位,每100毫秒有多少帧,这也是在耍流氓,在一秒钟内整体似乎是流畅的,可是分割到百毫秒十毫秒的时候,并不是每百毫秒十毫秒都是流畅的。所以光看一秒钟有60帧就认为不卡,是错误的,就像我们不能说一分钟有3600FPS就不卡了一样,“卡”是发生在更短的时间内,而不是一秒。

所以,60FPS的游戏会卡。

如果大家玩过2D游戏就会感受到,2D游戏的FPS不高,但是不卡,因为2D游戏的人物动作大都是播片,实际上就是播放一段简单的动画,哪怕只有20多FPS,甚至十几FPS,一样“不卡”,有些无良游戏商制作的2D游戏,人物动作一秒就几帧画面,也不会有3D游戏的那种卡顿感,因为动作是稳定播放的,不是即时生成的,既不会出现原因一中动作过快“看不清”的情况,也不会出现FPS不稳定的情况。当然有些2D游戏里面也有即时生成的光影,当硬件机能不够的时候,依然会“卡”。  
回复 支持 反对

使用道具 举报

8#
发表于 2015-2-26 09:34 | 只看该作者
这个帖子说的简单明了,不错!
回复 支持 反对

使用道具 举报

9#
发表于 2015-2-26 12:48 | 只看该作者
谢分享了
回复 支持 反对

使用道具 举报

10#
发表于 2015-2-26 21:47 | 只看该作者
很不错的解惑贴。
回复 支持 反对

使用道具 举报

11#
发表于 2015-3-4 23:01 | 只看该作者
扯。
作为前视频非编硬件公司的技术人员,如果出现丢帧是可以直接分辨出来的。同时即使是NTSC的30帧,在大动态画面时也是会出现能被肉眼明显分辨的细节丢失。正是因为这个原因,在国外的部分体育高清频道才会放弃1080P,而采用720P60帧的方式。
回复 支持 反对

使用道具 举报

G70 该用户已被删除
12#
发表于 2015-3-4 23:49 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2024-4-20 04:43

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

快速回复 返回顶部 返回列表