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

你好,我是悦创。

最近在设计 Pygame 的有些开发课程,有些扩展知识就放在这篇文章里面。

平时我们看的电影,大都是 24 帧,偶尔有几部大制作电影,帧数才会达到 48 或者 60。那么,为什么电影 24 帧就很流畅,而我们玩电脑游戏就要 60 帧起步才算流畅呢?

这里要先说一下帧的概念。我们经常看到一些动图,就是多张图片连接在一起,从而让人感觉到有动起来的效果。
在这里插入图片描述

这个动图里的一张图片,就是一帧。电影里一秒有 24 张图片,帧数就是 24 帧/秒,换成英文也就是 24FPS。电影和游戏里,帧数越高,我们所看到的画面也就越流畅。

但电影和游戏有一个最大的不同:电影是摄像机拍出来的,而游戏是引擎渲染出来的。

在这里插入图片描述

一、模糊帧与清晰帧

在这里插入图片描述
这是我截取《小丑》电影里的一张图,可以看到,这里小丑的图是模糊的。这种模糊图就叫做模糊帧。

模糊帧的好处是能够记录一段时间内的所有信息。比如说下面的红衣小孩,1 秒内跑了一段距离,而摄像机是 1 秒 1 帧,那么我们就可以在这一帧里看到这 1 秒内小孩所有的运动信息。

在这里插入图片描述
电影中所有用摄像机拍出来的画面都是模糊帧,都记录了短时间内运动的所有信息。所以尽管电影 1 秒只有 24 帧,但这 24 帧包含了 1 秒内所有的运动状态和运动信息,我们自然也就觉得很流畅了。

而游戏和电影恰好相反,由引擎渲染的画面全部都是清晰帧,除非你开动态模糊,否则任意时刻截图一定是清晰帧。

在这里插入图片描述
清晰帧用来截图当壁纸是很不错的,但它有一个最大的问题就是帧与帧之间的过渡信息丢失了。在游戏里,一帧的时间内,人物从 A 运动到 B,只有 A 点的图和 B 点的图,是没有从 A 到 B 的过程图的。这也就导致了游戏的帧率必须要比电影高很多,才能保证看上去很流畅。

二、帧生成时间

影响流畅度的不仅有清晰帧和模糊帧,还有帧生成时间。

电影里,一秒就是 24 帧,这是固定的,每一帧都是 0.042 的间隔。这个间隔就是帧生成时间,帧生成时间恒定,所以帧与帧之间就很平滑。

而电脑游戏的帧生成时间不是恒定的。在不同的游戏场景里,帧生成时间是不同的。比如你在大雪环境下,0.025 秒生成一帧,那到了森林,可能就要 0.05 秒一帧。从大雪进入森林,帧数就会波动,导致画面看上去不流畅。

在这里插入图片描述

三、交互性

电影只是用来看的,那么只需要保证音画同步,我们就不会觉得违和。

但是游戏是用来玩的,所以不仅需要保证音画同步,还需要保证你所有的输入操作都和屏幕实时同步,不然就会被我们的大脑所捕获到,产生违背日常认知的感觉,这种感觉就会让你很难受。

一般来讲,正常情况下,普通人对于游戏画面的响应时间在 100ms 左右,如果我们晃动鼠标,鼠标晃动这个画面在 100ms 内输出到了显示器上,你就不容易察觉不到输入延迟。

而我们的游戏引擎工作原理决定了一件事就是我们的操作必须要 3-5 帧之后才能反馈到屏幕上,如果是 60 帧的画面,操作延迟大概在 70-110ms 左右,你很难察觉,而如果是 24 帧的画面操作延迟就达到了 150-240ms ,如果是 30 帧,那么延迟也在 100-180ms 之间,也就是你的操作反馈到屏幕上会出现滞后的现象,那么这就会违背你的认知,让你非常难受。
在这里插入图片描述
所以这里有个结论,就是你的帧数越低,你的操作延迟越高,而很明显 60 帧已经是 100ms 附近的极限值了,也就是说,如果你使用的是 PC 端,那你必须要保证帧数高于60你的鼠标才能在 100ms 之内反馈到屏幕上。

以上就是电脑游戏帧率需要很高的原因了,大家有什么想补充的可以留言哦!

AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++辅导班、算法/数据结构辅导班、少儿编程」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。QQ、微信在线,随时响应!V:Jiabcdefh

在这里插入图片描述

AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。QQ、微信在线,随时响应!V:Jiabcdefh
AI悦创 » 为什么游戏流畅需要60帧,而电影流畅只需要24帧?

发表评论