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

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

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

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

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

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

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

看出区别来了吗?这是因为电影和游戏的画面生成方式的本质不同造成的,电影的画面是拍摄的实际场景,在快门时间内胶片/传感器持续曝光,这一段时间里人物场景的变化都会被拍到胶片/传感器上,每隔一段时间换下一张胶片再曝光一段时间。

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

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

游戏里无论移动速度快或慢,始终保持一秒钟60帧画面。当鼠标一秒60像素的时候,鼠标箭头是1像素1像素的移动,一秒600像素的时候,箭头就变成10像素10像素的移动了,中间10个像素的位置信息就丢失了,画面就不连贯了,就卡了。电影里里面一米一米移动的时候,每帧的画面是清晰,十米十米移动的时候,动作就会出现拖影,给人以动感的效果,连贯而不卡,看动作片时暂停就能看到拖影了。人眼的视觉暂留和相机拍摄视频的原理类似的,人的眼睛不可能在第0秒看到一副画面,到第1/24秒又看到一副画面,而是连续的接受光照在视网膜上,持续曝光,所以快速挥手,可以看到手的残影,效果跟电影里面的模糊类似的,就算FPS不高也不会卡了,而如果在游戏里面快速挥手,就只能看到手在两边来回跳,中间的画面没了,就卡了。

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

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

电影《星际穿越》画面,可以看到很明显的动态模糊。

这是早期的极品飞车,没有任何动态模糊,一旦速度过快,画面就显得不流畅了。

这是现代的极品飞车,可以看到有较真实的动态模糊效果,这样就显得流畅多了。

想要体验像游戏般卡顿感的视频,大家可以去B站体验,找一个60FPS的视频,例如科技美学的评测:一代神机 诺基亚3310复刻版 开箱上手体验测评「科技美学直播实录」。打开视频后在右下角选择清晰度,超清为60FPS,其他则为30FPS,对比一下就会发现30FPS的版本明显卡了很多,这是因为B站的30FPS就是把60FPS的去掉了一半的画面,没有动态模糊,信息量一下子少了一半,毕竟也没有一种能自动补全动态模糊的技术,这时候你就能感觉到片头的字幕和画面是跳着走的,那岩的动作也极不流畅,这和游戏中的卡顿颇有异曲同工之妙。如果这个视频一开头就是用30FPS拍的,那显然不会如此卡顿。

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

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

如上图,这是AMD两个版本的驱动测试的帧间隔情况,可以看到红线和蓝线的FPS实际上没什么区别,但是明显红线的帧间隔更稳定,蓝线更容易出现顿卡的情况。

除了显卡性能的不稳定导致上面这种情况出现,就是稳定性能的显卡,也会出现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游戏的人物动作一般是事先绘制的,游戏中人物做动作实际上是播放动画,不管帧数多低,都“不卡”,有些无良游戏商制作的2D游戏,人物动作一秒就几帧画面,虽然看起来卡卡的,也不是3D游戏的那种卡顿感。因为动作是稳定播放的,不是即时生成的,动作的速度是固定的,就不会出现原因一中动作过快“看不清”的情况,也不会出现原因二中FPS不稳定的情况。同时由于2D游戏是事先绘制的,关键帧都会画出来,人物的动作就是连贯的。当然有些2D游戏里面也有即时生成的光影,当硬件机能不够的时候,即时演算的速度跟不上了,依然会“卡”。

转:https://www.zhihu.com/question/21081976/answer/34748080

流畅度游戏60帧,视频24帧的原因相关推荐

  1. 已开源!Flutter 基于分帧渲染的流畅度优化组件 Keframe

    大家好,这里是承香墨影! 今天给大家推荐一个,Flutter 中利用分帧渲染优化流程度的开源库,刚开源,还热乎着.这次开源可真波折,看着 @Nayuta 前前后后在公司内部流程走了一个多月吧,太艰难了 ...

  2. 动作游戏老是卡?试试从这些方面提升流畅度

    编者按:常常有玩家会在游戏评论提到"打击感好"."流畅度高"等等,如何才能让玩家有这样的感受呢?本文将和大家聊聊动作游戏的流畅度. 动作游戏是市场上一直很受欢迎 ...

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

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

  4. 视频截帧大概率避免连续重复图片

    深度学习在数据准备准备方面,有时我们需要把一个长视频截取成一张张的图片,来扩充我们的数据量,但是在按照一定的帧率去截取图片试我们会发现有好多相似且重复的图片出现,但是我们增加训练样本时有需要样式不同风 ...

  5. MP4 格式:最少加载多少数据就能渲染出视频首帧?优化短视频播放体验必须先了解它丨音视频基础

    (本文基本逻辑:MP4 封装格式概览 → 重要 Box 具体信息介绍 → 实战中对 MP4 Box 信息的使用) MP4 也称为 MPEG-4 第 14 部分,是继承 MPEG-4 第 12 部分的 ...

  6. 干货!考虑部署在移动端的视频插帧模型:CDFI

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 对于给定的视频进行插帧操作提高帧率会使得视频更加流畅,但往往用于视频插帧的深度神经网络都具有复杂的模型架构,这使得它们无法部署在系统资源 ...

  7. 当我们讨论流畅度的时候,我们究竟在说什么?

    前言:那些年我们用过的显示性能指标 注:Google 在自己文章中用了 Display Performance 来描述我们常说的流畅度,为了显得有文化,本文主要用"显示性能"一词来 ...

  8. Android流畅度总结

    一.谷歌官方对流畅度的解释: Android流畅运行,需要运行60帧/秒, 则需要每帧的处理时间不超过16ms. 二.IOS系统比ANDROID系统流畅的原因 因为Android系统UI的框架设计的问 ...

  9. ListView流畅度翻倍!Flutter卡顿分析和优化方案

    最近因为在做Flutter中相关的性能优化,在收集很多性能数据之后发现ListView组件在一些场景下(例如加载更多)容易引起页面卡顿,看到了闲鱼的Flutter 高性能.多功能的全场景滚动容器.但奈 ...

最新文章

  1. web.py下获取get参数
  2. 数据科学Python训练营课程:从初级到高级 Python for Data Science Bootcamp Course:Beginner to Advanced
  3. 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)
  4. python编程 语言-Python现在还是最火的编程语言吗?
  5. Kaggle问题总结1
  6. spring 循环依赖注入
  7. 小师妹学JavaIO之:File copy和File filter
  8. 【Java深入研究】10、红黑树
  9. 前端学习(3249):react的文件src
  10. 二、mongodb数据库系列——聚合操作 索引操作 权限管理
  11. 大数据时代下,App数据隐私安全你真的了解么?
  12. Sentinel配置规则持久化
  13. 无法远程到2008R2的解决方法
  14. Uniswap 24h交易量约6.54亿美元涨18.05%
  15. 二十一天学通C++之使用try/catch捕获异常
  16. spring-第十篇之XML Schema的简化配置,p、c、util命名空间
  17. 【转】Java工程师成神之路
  18. 快手投放广告,快手广告优势有哪些呢?
  19. html转换vmax,CSS里px、em、rem、%、vw、vh、vmin、vmax这些单位的区别
  20. airflow的xcom使用

热门文章

  1. Linux系统文件归档压缩处理
  2. 支付宝:花呗、借呗均无独立 App ,不要相信 Apple Store 的假冒货
  3. 苹果linux终端模拟器,5 款最酷的 Linux 终端模拟器
  4. Working with Real-Time Media Streams(翻译自JMF)
  5. Win10安装Oracle19c,详细教程
  6. Listener(监听器)的简单介绍
  7. 数字图像处理笔记 第五章 图像增强 附实验
  8. UE4 新建一个基本的游戏模式
  9. Python打包分发
  10. 【编程实践】编程语言之 Smalltalk