作者:蔡小帅
链接:https://www.zhihu.com/question/21081976/answer/34748080

虽然电影24FPS也不如60FPS的流畅,但是24FPS不会让人觉得卡,甚至12FPS都不会让人觉得卡,而24FPS的游戏能让人很明显的感受到卡,12FPS就是幻灯片了,这是为什么呢?有两个原因。

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

电影虽然只有24FPS,但是每一帧都包含了一段时间的信息,而游戏则只包含那一瞬间的信息。一个电影在一段时间内曝光,画面的每一帧,都包含有一段时间的信息,这段时间的长度由快门时间决定,最长不能超过1/24秒,所以视频中每一帧包含信息量较大。而游戏的第一帧包含第0秒的信息,第二帧包含了第1/24秒的信息,只有这一个瞬间的信息,这中间的信息完全丢失了,所以看起来会卡。

用图来解释一下,比如有一个圆从左上角移动到右下角,第一帧是这样的:
<img src="https://pic4.zhimg.com/e06f18cc261b19871951a4e9d51c9f7b_b.jpg" data-rawwidth="500" data-rawheight="300" class="origin_image zh-lightbox-thumb" width="500" data-original="https://pic4.zhimg.com/e06f18cc261b19871951a4e9d51c9f7b_r.jpg">如果是电影,第二帧可能是类似下图这样的(图画得不好但是就是这个意思): 如果是电影,第二帧可能是类似下图这样的(图画得不好但是就是这个意思):
<img src="https://pic3.zhimg.com/2719112d4e713e6c87f7930da1e11646_b.jpg" data-rawwidth="500" data-rawheight="300" class="origin_image zh-lightbox-thumb" width="500" data-original="https://pic3.zhimg.com/2719112d4e713e6c87f7930da1e11646_r.jpg">
如果是游戏的话,第二帧就应该是这样的图:
<img src="https://pic4.zhimg.com/7625b8d22c4479db420aafc43285c19f_b.jpg" data-rawwidth="500" data-rawheight="300" class="origin_image zh-lightbox-thumb" width="500" data-original="https://pic4.zhimg.com/7625b8d22c4479db420aafc43285c19f_r.jpg">
看出区别来了吗?这是因为电影和游戏的画面生成方式的本质不同造成的,电影的画面是拍摄的实际场景,在一段时间内胶片持续曝光,这一段时间里人物场景的变化都会被拍到胶片上,每隔一段时间换下一张胶片再曝光一段时间。相机也是一样的原理,如果我们把手机镜头使劲的晃动然后拍一张照片,会发现照片是模糊的,这就是因为曝光过程中把移动过程中一段时间的场景都拍进去了,就模糊了,我们就能感觉到电影里面的人物是移动过去的,可以看到移动的轨迹,画面是“连贯”的。

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

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

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

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

现在很多游戏特别是赛车游戏,当速度变得很快的时候,会加入一个动态模糊的特效,就是模拟电影中这种高速运动的物体有拖影的效果,打开之后会觉得画面连贯一些。但毕竟是模拟特效,还是不能和真拍出来的效果比,做得不好反而会画虎成犬。

第二个原因就是 电影的FPS是稳定的,而游戏则是不稳定的。

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

除了显卡性能的不稳定导致上面这种情况出现,就是稳定性能的显卡,也会出现FPS不变帧间隔时间长短不一,因为每一秒里面的画面有很多帧,每一帧的画面复杂程度都不一样。而且不管是PC还是主机,除非显卡性能大大超越游戏硬件需求,否则FPS都不可能稳定在某一数值,游戏评测里都会有平均FPS和最低FPS,最要最低FPS低于了某一数值,游戏自然会在某一时间顿卡。例如最近的大作仙剑6,显卡吧有人测试过用四路泰坦X,依然会在某一时刻FPS跌到0,这种游戏体验无疑是毁灭性的。

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

所以,60FPS的游戏会卡。

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

为什么游戏帧数一般要到 60 帧每秒才流畅,而过去的大部分电影帧数只有 24 帧每秒却没有不流畅感?相关推荐

  1. 为什么游戏帧数要到 60 帧每秒才流畅,而电影帧数只有24FPS?

    首先要说的是电影就是24FPS也不如60FPS的流畅,对比就可以看出来,但是24FPS不会让人觉得卡,甚至12FPS都不会让人觉得卡,而24FPS的游戏能让人很明显的感受到卡,12FPS就是幻灯片了, ...

  2. 为什么游戏流畅需要60帧,而电影流畅只需要24帧?

    你好,我是悦创. 最近在设计 Pygame 的有些开发课程,有些扩展知识就放在这篇文章里面. 平时我们看的电影,大都是 24 帧,偶尔有几部大制作电影,帧数才会达到 48 或者 60.那么,为什么电影 ...

  3. 流畅度游戏60帧,视频24帧的原因

    流畅度游戏60帧,视频24帧的原因 虽然电影24FPS也不如60FPS的流畅,但是24FPS不会让人觉得卡,甚至12FPS都不会让人觉得卡,而24FPS的游戏能让人很明显的感受到卡,12FPS就是幻灯 ...

  4. HTML5期末大作业:游戏类网站设计——王者荣耀(60页) HTML+CSS+JavaScript

    常见网页设计作业题材有 ​​个人. 美食. 公司. 学校. 旅游. 电商. 宠物. 电器. 茶叶. 家居. 酒店. 舞蹈. 动漫. 明星. 服装. 体育. 化妆品. 物流. 环保. 书籍. 婚纱. 游 ...

  5. 24帧动画走路分解图_人眼只能分辨24帧?我们来聊聊高刷新率的意义

    想必我们都经常听到这样的说法: 当物体在快速运动时, 人眼所看到的影像消失后,人眼仍能继续保留其影像1/24秒左右的图像,这种现象被称为视觉暂留现象.是人眼具有的一种性质.人眼观看物体时,成像于视网膜 ...

  6. 24帧电影实时转60FPS,享受丝般顺滑!

    前段时间分享过一个720p一键转8K的AI视频增强软件Topaz Video Enhance AI. 注: 右边为原视频,左边是放大后. 这个软件可以大幅提升视频的分辨率,同时还会修复视频,有部分视频 ...

  7. 对tf.reduce_mean API的理解就是求平均值,reduce指的是一串数据求平均值后维数降低了,可不是吗,一串向量变成了一个数,维数自然降低了

    tf.math.reduce_mean(input_tensor, axis=None, keepdims=False, name=None ) 对tf.reduce_mean的理解就是求平均值,re ...

  8. C语言(CED)输出前k大的数(分治法/局部快速排序):给定一个数组,统计前k大的数并且把这k个数从大到小输出。

    )输出前k大的数(分治法/局部快速排序):给定一个数组,统计前k大的数并且把这k个数从大到小输出. [输入] 第一行包含一个整数n,表示数组的大小. 第二行包含n个整数,表示数组的元素,整数之间以一个 ...

  9. C语言程序设计——函数 梅森尼数形如2^i-1的素数,称为梅森尼数。编程计算并输出指数i在[2,n]中的所有梅森尼数,并统计这些梅森尼数的个数,其中n的值由键盘输入,并且n的值不能大于50。

    梅森尼数 形如2^i-1的素数,称为梅森尼数.编程计算并输出指数i在[2,n]中的所有梅森尼数,并统计这些梅森尼数的个数,其中n的值由键盘输入,并且n的值不能大于50.其中,2^i表示2的i次方,请不 ...

最新文章

  1. glove 安装错误
  2. iOS内存管理编程指南
  3. Linux中fork函数的作用及用法
  4. 【直播提醒】荷小鱼:K12 在线教育应用的开发实践
  5. ZK的实际应用:MVVM –表单绑定
  6. 下拉推广系统立择火星推荐_下拉词删除都择火星下拉
  7. CAN总线技术 | 物理层02 - CAN总线的异步串行通讯
  8. P1308 统计单词数
  9. MyEclipse 使用文档
  10. python建模预测_技术分享 - python数据分析(6)——挖掘建模(1)分类与预测
  11. 傅里叶变换和拉普拉斯变换公式总结
  12. Android 项目总结(view控件之设置大小和间距)
  13. 挂载WINDOWS虚机镜像
  14. c语言-简单输出整数
  15. mysql 随机分组_mysql分组
  16. Cascade EF-GAN: 局部聚焦渐进式面部表情编辑
  17. CHIP-seq流程学习笔记(7)-热图软件 deeptools
  18. 40了解云计算平台的高可用架构,如 AWS 的多可用区、GCP 的负载均衡器
  19. 企业微信客户端开启调试模式
  20. 看完后,你将离成功不远了...让我们一起奋斗吧!【转】

热门文章

  1. AD域服务器的搭建(1)--AD域介绍
  2. 【opencv图像处理】--4. 低、高通滤波,卷积和各种算子
  3. python 打包成exe 1053_Python Windows服务pyinstaller可执行文件错误1053
  4. oracle awr的意义,在Oracle AWR报告中Elap的含义
  5. 解决2BizBox怎么设置税务科目
  6. Vector多维向量定义
  7. 路由器的功能和特点是什么
  8. 到底什么是Web Server什么是HTTP server?什么是application server?
  9. memmove和memcpy区别
  10. 断言ASSERT使用详解