作者:蔡小帥
鏈接:http://www.zhihu.com/question/21081976/answer/34748080
來源:知乎
著作權(quán)歸作者所有,轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)。
雖然電影24FPS也不如60FPS的流暢,但是24FPS不會讓人覺得卡,甚至12FPS都不會讓人覺得卡,而24FPS的游戲能讓人很明顯的感受到卡,12FPS就是幻燈片了,這是為什么呢?有兩個原因。
第一個原因就是由兩者圖像生成原理不同造成的。
電影雖然只有24FPS,但是每一幀都包含了一段時間的信息,而游戲則只包含那一瞬間的信息。一個電影在一段時間內(nèi)曝光,畫面的每一幀,都包含有一段時間的信息,這段時間的長度由快門時間決定,最長不能超過1/24秒,所以視頻中每一幀包含信息量較大。而游戲的第一幀包含第0秒的信息,第二幀包含了第1/24秒的信息,只有這一個瞬間的信息,這中間的信息完全丟失了,所以看起來會卡。
用圖來解釋一下,比如有一個圓從左上角移動到右下角,第一幀是這樣的:
如果是電影,第二幀可能是類似下圖這樣的(圖畫得不好但是就是這個意思):
如果是游戲的話,第二幀就應(yīng)該是這樣的圖:
看出區(qū)別來了嗎?這是因為電影和游戲的畫面生成方式的本質(zhì)不同造成的,電影的畫面是拍攝的實際場景,在一段時間內(nèi)膠片持續(xù)曝光,這一段時間里人物場景的變化都會被拍到膠片上,每隔一段時間換下一張膠片再曝光一段時間。相機(jī)也是一樣的原理,如果我們把手機(jī)鏡頭使勁的晃動然后拍一張照片,會發(fā)現(xiàn)照片是模糊的,這就是因為曝光過程中把移動過程中一段時間的場景都拍進(jìn)去了,就模糊了,我們就能感覺到電影里面的人物是移動過去的,可以看到移動的軌跡,畫面是“連貫”的。
而游戲的畫面則是由顯卡生成的,顯卡通過計算生成一幀畫面,生成完畢后再計算下一幀,這樣每一幀都是清晰的,不會有模糊,像我上面圖中的那個圓,不管他的移動速度是快是慢,顯卡只計算兩幀畫面,中間的移動軌跡一概不會顯示,我們看到物體就好像老版西游記里面孫悟空施一個法術(shù)“就”的一聲飛過去了。
這里大家可以花10秒鐘時間做一個非常簡單的實驗,先緩慢的揮手,發(fā)現(xiàn)手的影像是很清晰的,再快速的揮手,發(fā)現(xiàn)手的影像不清晰了,有了殘影,但是你絕對不會覺得畫面卡了,這就是電影的效果。我們再來模擬游戲的效果,先緩慢的移動鼠標(biāo),再快速的移動鼠標(biāo),發(fā)現(xiàn)了嗎,快速移動的時候鼠標(biāo)卡了,鼠標(biāo)是一下下的跳動過去的,這就是游戲的效果了,發(fā)現(xiàn)為什么卡了嗎。
游戲里慢慢的移動,他也是一秒鐘60幀畫面,飛快的移動,也是60幀,這樣當(dāng)你很快移動的時候,會發(fā)現(xiàn)“卡”了。當(dāng)鼠標(biāo)一秒移動60像素的時候,顯示器一秒輸出60幀畫面,一秒移動600像素的時候顯示器還是一秒60幀畫面,問題就來了,當(dāng)一秒60像素的時候,鼠標(biāo)箭頭是1像素1像素的移動,一秒600像素的時候,箭頭就變成10像素10像素的移動了,畫面就不連貫了,就卡了。電影就不一樣了,1米1米的移動的時候,每幀的畫面是清晰,10米10米的移動的時候,人物動作就會出現(xiàn)拖影,給人以動感的效果,連貫而不卡。人眼的視覺暫留和相機(jī)拍攝視頻的原理類似的,人的眼睛不可能在第0秒看到一副畫面,到第1/24秒又看到一副畫面,而是連續(xù)的接受光照在視網(wǎng)膜上,持續(xù)曝光,所以快速揮手,可以看到手的殘影,效果跟電影里面的模糊類似的,就算FPS不高也不會卡了,而如果在游戲里面快速揮手,就只能看到手在兩邊來回跳,中間的畫面沒了,就卡了。
在上面的實驗中,如果試著更快速的移動鼠標(biāo),并且讓鼠標(biāo)做出更復(fù)雜的動作,例如畫8字形,會發(fā)現(xiàn)中間丟失的關(guān)鍵幀更多了,越發(fā)顯得卡了。這也就可以解釋為什么RPG游戲以較低幀數(shù)運行的時候不覺得卡,而射擊以低幀數(shù)運行的時候會卡了。這是因為射擊游戲節(jié)奏快,人物移動迅速,一旦幀數(shù)不高,中間的動作就會有斷檔,會覺得卡了,所以射擊游戲?qū)瑪?shù)的要求更高。就像不管我們怎么移動鼠標(biāo),顯示器始終60FPS沒變,但是快速移動就是會卡,這是游戲和電影生成影像的原理本質(zhì)不同造成的。并且射擊游戲?qū)Σ僮黜憫?yīng)速度的要求非常高,一旦FPS低了操作也會反應(yīng)不過來,RPG游戲?qū)Σ僮鞣磻?yīng)速度要求明顯低多了,像回合制的壓根就無所謂了,喝杯茶再來操作都行,射擊游戲里的生死都在毫秒間,幀數(shù)一低隨時掛掉,像Quake3中某個跳躍動作甚至還要求必須在125FPS以上才能完成。
現(xiàn)在很多游戲特別是賽車游戲,當(dāng)速度變得很快的時候,會加入一個動態(tài)模糊的特效,就是模擬電影中這種高速運動的物體有拖影的效果,打開之后會覺得畫面連貫一些。但畢竟是模擬特效,還是不能和真拍出來的效果比,做得不好反而會畫虎成犬。
第二個原因就是電影的FPS是穩(wěn)定的,而游戲則是不穩(wěn)定的。
電影雖然是24FPS,但是他固定每隔1/24秒換一次畫面,畫面出現(xiàn)頻率是固定的,這點雷打不動,畫面是穩(wěn)定的。而游戲乍一看是60FPS沒錯,但是為什么同樣是60FPS,有的顯卡流暢有的卡頓呢,有人就曾經(jīng)做評測研究過,為什么一模一樣的FPS,有些顯卡會感到“頓卡”呢。評測是這樣的,他記錄了在一秒里面,每一幀都在什么時候出現(xiàn),于是一下子真相大白,流暢的顯卡,他60幀畫面差不多是每隔約1/60秒出現(xiàn)一次,也就是說顯卡穩(wěn)定的每隔一段固定的時間生成一副畫面,卡頓的顯卡,可能前半秒生成了59幀畫面,后半秒就只有1幀畫面了,那個評測里面提到一個概念“最大幀間隔”,也就是說兩幀之間的間隔時間,如果是穩(wěn)定的,那畫面就流暢,如果不穩(wěn)定,就會卡,有的顯卡最大可達(dá)數(shù)百毫秒,相當(dāng)于一秒才幾幀畫面,那自然會讓人感覺卡了,如果穩(wěn)定在33毫秒,只需要30FPS,就會讓人覺得基本流暢了。
除了顯卡性能的不穩(wěn)定導(dǎo)致上面這種情況出現(xiàn),就是穩(wěn)定性能的顯卡,也會出現(xiàn)FPS不變幀間隔時間長短不一,因為每一秒里面的畫面有很多幀,每一幀的畫面復(fù)雜程度都不一樣。而且不管是PC還是主機(jī),除非顯卡性能大大超越游戲硬件需求,否則FPS都不可能穩(wěn)定在某一數(shù)值,游戲評測里都會有平均FPS和最低FPS,最要最低FPS低于了某一數(shù)值,游戲自然會在某一時間頓卡。例如最近的大作仙劍6,顯卡吧有人測試過用四路泰坦X,依然會在某一時刻FPS跌到0,這種游戲體驗無疑是毀滅性的。
大家都知道,游戲的卡頓分很多原因。RTS游戲中單位出現(xiàn)過多,CPU計算能力不夠,會卡,游戲特效變好,顯卡算不過來,會卡,切換地圖讀硬盤,會卡,場景太大內(nèi)存放不下,會卡。如果我們把FPS(每秒幀數(shù)),換成每分鐘幀數(shù),可能會發(fā)現(xiàn),一個游戲每一分鐘的幀數(shù)都會大于3600,也就是每秒都大于60,那這樣就不卡了?可能前面30秒每秒有100幀畫面,后面30秒每秒只有20幀畫面,那后面30秒無疑很卡了。這樣來看完全就是耍流氓呀,回過頭再來看每秒幀數(shù)難道不也是在耍流氓嗎?我們只看一秒鐘總共有多少幀,而不去看更小的單位,每100毫秒有多少幀,這也是在耍流氓,在一秒鐘內(nèi)整體似乎是流暢的,可是分割到百毫秒十毫秒的時候,并不是每百毫秒十毫秒都是流暢的。所以光看一秒鐘有60幀就認(rèn)為不卡,是錯誤的,就像我們不能說一分鐘有3600幀就不卡了一樣,“卡”是發(fā)生在更短的時間內(nèi),而不是一秒。
所以,60FPS的游戲會卡。
如果大家玩過2D游戲就會感受到,2D游戲的FPS不高,但是不卡,因為2D游戲的人物動作大都是播片,實際上就是播放一段簡單的動畫,哪怕只有20多FPS,甚至十幾FPS,一樣“不卡”,有些無良游戲商制作的2D游戲,人物動作一秒就幾幀畫面,雖然看起來卡卡的,也不是3D游戲的那種卡頓感,因為動作是穩(wěn)定播放的,不是即時生成的,既不會出現(xiàn)原因一中動作過快“看不清”的情況,也不會出現(xiàn)原因二中FPS不穩(wěn)定的情況。當(dāng)然有些2D游戲里面也有即時生成的光影,當(dāng)硬件機(jī)能不夠的時候,連播片都播不動的時候,依然會“卡”。