前言:幀與幀率
衆所周知,視頻其實是多張靜態畫面在時間上連續所給人帶來的動態假象,這一張張畫面就是所謂的幀(Frame),它是視頻的基本單位。
幀(Frame)最早來源於對膠捲單格畫格的稱謂。
最緊張的一幀
將幀與時間進行綁定,就得到了我們熟悉的幀率(Frame rate),其單位是幀每秒(Frame per second,下文簡稱爲”X幀”),即每秒所呈現的畫面數量。
1895年12月28日於巴黎大咖啡館放映的,由盧米埃爾兄弟拍攝的10部影片被認爲是世界上最早的電影,這一天也被認爲是電影的誕生日,當時影片的幀率只有16幀。每段影片受膠捲長度限制,最長僅有一分鐘。
10部影片之一的《火車進站》
如今我們所接觸的大部分影像視頻幀率基本上都是24幀、29.97幀、30幀以及60幀等,其背後還有一段進化史,這裏不多贅述。
而遊戲的幀率,特別是3D遊戲,卻是一個十分特殊的存在,因爲它的每一幀畫面都是動態生成的。
遊戲幀率高的有兩三百幀,低的時候一二十幀,它與傳統影視頻的幀率有又有着什麼不同之處,背後的原理值得我們每個活在視頻與電子遊戲時代的人們對其有所瞭解。
從圖片靜像到視頻幻覺
在對比遊戲畫面與影視畫面之前,我們還需要回顧一下人是如何將不斷突變的圖片誤認爲承載運動的視頻的。
視覺暫留
視覺殘留(Persistance of vision),你只需在面前快速地揮動手掌,就能夠體會到視覺暫留所帶來的“殘影”,這對於任何相對你進行快速運動或變化的對象來說都是同理的。
這是由於光對視網膜所產生的圖像在光消失後並不會立刻消失,而是留下大約0.1秒-0.4秒的虛像。
類比攝像機的話,視覺暫留就是眼睛的曝光。
長曝光下的攝像奇觀
臨界閃爍融合
臨界閃爍融合(Critical flick fusion),指的是當進入眼睛的光以足夠的頻率(約50Hz,也稱臨界閃爍頻率)閃爍時,人眼就會將其視爲一束持續的光,而不是閃爍的光。
我國採用50Hz交流電,意味着每盞燈都會以每秒一百次的頻率達到亮度峯值,人眼基本無法察覺到如此高頻的閃爍。而高精度的攝影設備卻可以輕鬆地捕捉到“閃爍”的燈光,如何消除拍攝過程中的頻閃問題則是一門複雜的學問。
爲了能夠不間斷地放映每一幀膠片的同時達到臨界閃爍頻率,膠片電影放映機通過巧妙的三葉片設計,使得24幀的電影能夠以每秒72次的頻率閃爍放映,每一幀畫面都能夠快速的進行三次閃爍放映。來自油管"How a Film Projector Works":
膠片電影放映機的三葉片結構
似動現象
除了上述兩個生理層面的視覺機制,人類還需要兩個重要的心理機制實現從圖片變化到邏輯理解的轉化。
似動現象(Phi phenomenon),指當兩個相似對象以一定的空間和時間間隔相繼呈現在眼前時,我們就會接收到物體在運動的幻覺。
儘管你知道底層邏輯就是幾張不同圖片按照順序進行連續切換,但你任然難以擺脫似動現象給你帶來運動的幻覺。
似動現象
心理補償
心理補償(Compensation)是一個重要的心理學概念,在視頻的範疇下,概念就比較泛泛並不標準,這裏可以簡單的理解爲人在潛意識影像下,不自覺的聯想,這種聯想基於每個人的日常生活經驗有所差異,它使得觀衆能夠在觀看過程中,對視頻畫面之間的斷裂或是不完整信息作出某種補償。
補償內容可以是方方面面的,時間、環境或動作比較常見,聽覺、嗅覺或觸覺也都可以是補償的一部分。最普遍也是最容易被人忽視的其實是:二維圖像向三維空間與環境的補償。
2019年由拉斯·馮·提爾導演的《狗鎮》(Dogville)通過幾條白線與簡單的道具勾勒出了整個“狗鎮”,在一片空曠場地上完成所有的拍攝,觀衆需要自行腦補出大部分的環境與空間。
Dogville
遊戲與影像的成像區別
介紹完人類認知視頻的原理之後,我們來試圖解釋一個問題:爲什麼僅有24fps的電影給人自然和流暢的感覺,而30幀的遊戲卻會給人相當的卡頓感?爲了更好地回答這個問題,我們還需要簡單地理解兩者在成像原理上的區別。
遊戲成像原理
簡單來說,遊戲成像以遊戲圖形數據爲輸入,利用GPU的高速並行計算能力,進行快速地位圖(Bitmap)繪製與輸出。
位圖(Bitmap),也就是指以像素爲單位的點陣圖像。與之相對應的則是矢量圖(Vector Images),該類圖像在放大後也不會有任何的細節丟失。
位圖與矢量圖
這些作爲輸入的遊戲圖像數據包括當前幀下,遊戲場景中的所有的光源、攝像機、模型以及相對應的材質參數,它們將通過CPU送到GPU,並在一條渲染管線中進行逐像素繪製,將生成的位圖存儲在幀緩衝區(Frame Buffer)。
來自learnopengl:
簡易的GPU渲染管線
如果遊戲幀率固定,當下一幀到來時,幀緩衝區與屏幕緩衝區(前緩衝區與後緩衝區)進行交換,而屏幕緩衝區的內容就是我們所看到的由顯示屏顯示的畫面,它會按照顯示屏刷新率進行更新。
雙緩衝於緩衝區交換
計算機三維成像底層的圖形學原理要比我這裏講的要複雜得多,感興趣的話可以去看看相關的視頻和書籍。
有時,開發者還會對輸出前的圖像進行一定的後處理(Post Processing),通過特定的算法來達到不同的濾鏡效果,例如調色、景深效果、泛光以及抗鋸齒等都是後處理效果的一種。
《奧伯拉丁的迴歸》中,開發者Lucas Pope就實現了不同的後處理,爲玩家提供了多種復古像素風的畫面效果。
Return of the Obra Dinn
影像成像原理
如果說遊戲是靠數據與GPU繪圖,那麼影像就是依靠光線藉助小孔成像原理通過感光元件實現繪圖,無論是早期的膠捲還是如今的CMOS,其實都是光的畫板。
世界上第一幅可永久保存的照片被認爲是由法國人約瑟夫·尼埃福斯·尼埃普斯於1826年拍攝的《窗外的景色》。他將稀釋後的瀝青塗抹在一塊金屬板上,將其放入一個用於小孔成像的簡易暗箱中,在經歷長達8個小時的曝光後得到。
《View from the Window at Le Gras》
攝像機的光圈會控制光線的進入量,而快門控制光線照射在感光元件上的時長。人們常認爲攝影記錄的是瞬間,但對於一張照片來說,它承載了的是快門開啓時間範圍內所有光線的總和,它是一個“光的過程量”。
正因爲影像是光的過程量的特點,在曝光時長足夠的情況下,影像可以得到運動對象動態模糊(Motion blur)效果,這與視覺暫留影響下人眼所看到的動態模糊極其相似。
來自《憤怒的公牛》:
動態模糊
動與靜-影視幀率VS遊戲幀率
影像通過曝光成像,其結果爲光線在曝光時間內累計的過程量,看似靜實則動。
遊戲儘管也需要一定的時間用來計算圖像,但不同於曝光成像,實際圖像上承載的是固定輸入下通過計算得到的瞬間量,每一幀的畫面都是靜止的。
正是這微妙的差別使得低幀率下的遊戲表現要遠低於同等幀率下影視的表現。
遊戲中的每張圖片都是瞬間量
24幀的電影之所以看起來無比流暢,要歸功於適當快門下每一幀畫面的動態模糊,以及人本身無論是生理層面還是心理層面都極其強大的適應能力與想象力。
影視上,爲了使得拍攝的視頻看上去流暢自然,衍生出了“180度快門法則”,通常認爲當“快門速度=1/(幀率*2)”時,拍攝出每幀的動態模糊讓畫面看起來是自然流暢的。
有研究表明,在幾乎沒有動態模糊的情況下,視頻幀率大於60幀,人眼就會難以察覺出卡頓感。如今60幀也成了大量玩家對遊戲對幀率的最低要求。
24幀與60幀對比
對於影視而言,更高的幀率是否有實際意義一直是一個有爭議的話題。
李安導演實驗性的在《雙子殺手》中採用120幀進行拍攝,快門速度1/250,這使得每一幀的動態模糊效果極其有限,觀感上少了傳統24幀動態模糊下的電影感,打鬥過程流暢的像是電子遊戲。
《雙子殺手》
遊戲中的動態模糊
前文所涉及的遊戲畫面都是以沒有加動態模糊爲前提討論的,而如今大部分遊戲都有支持實時動態模糊技術。
前面提到過,後處理會發生在遊戲輸出畫面的最後階段,而動態模糊其實也是後處理效果的一種,文章的最後,我將簡單介紹一下游戲中的動態模糊。
爲什麼遊戲需要動態模糊
有不少遊戲玩家其實是十分討厭動態模糊的,究其原因大概率是由於這類玩家所遊玩的遊戲對攝像機控制精度有較高的要求,特別是FPS和TPS這類需要頻繁定位的遊戲,動態模糊會在定位過程很大程度地影響玩家的判斷與定位,這使得動態模糊在需要高速定位的競技類遊戲中顯得十分多餘。
VALORANT的圖形設置中完全不提供動態模糊的選項
如今大量遊戲都支持PC平臺,而大量基於鼠標的攝像機轉動與我們現實中的頭部轉動有很大差距,由於鼠標足夠輕,遊戲內攝像機的加速與減速過程都能夠以極快的速度實現。
只要靈敏度足夠高,你我都是大陀螺。
對面先開的
所以爲什麼還需要動態模糊?遊戲動態模糊技術的早期其實是爲了緩解由於幀率不足而導致的卡頓感,起到補幀的作用。
PS2時代《合金裝備2》的播片爲30幀,採用了早期的累積動態模糊,爲播片增添了一定電影感的同時使得低幀率顯得並不是特別卡。
Metal Gear Solid 2
而在幀數可以輕鬆達到60幀的今天,動態模糊又使得遊戲在高幀率運行的同時爲玩家提供了電影感,使得動態畫面符合現實邏輯,是許多單機敘事遊戲玩家以及低性能玩家的福音。
累積動態模糊
累積動態模糊(Accumulat motion blur),作爲早期的動態模糊,其實現原理簡單來說就是前後畫面的堆疊,需要使用到前面所提到的幀緩衝區的概念。
通過將最新渲染的畫面投入到一個先進後出的累積緩衝區(Accumulate buffer),該緩衝區會根據需要保存最新進入的三四張畫面,這些畫面會根據生成的先後順序以不同的透明度權重與最新渲染的畫面進行混合以得到最終效果。
由於累積動態模糊實際上只是畫面的堆疊,既不符合現實邏輯也經不起細看,除了能夠表現一些極端的暈眩感,基本上是被淘汰了。
用PS自制累積動態模糊
逐像素與逐對象動態模糊
逐像素動態模糊(Per-pixel motion blur),基於現實邏輯實現,該方法會利用渲染過程中的空間轉換矩陣以及深度圖計算渲染結果每一幀像素在上一幀的屏幕位置,基於像素前後幀位置的距離以得到該像素移動的速度值從而得到速度圖,最後根據速度圖得到模糊效果。
逐對象動態模糊(Per-object motion blur)的原理與逐像素類似不多贅述。
來自油管 Per Object Motion Blur:
速度圖下的逐像素動態模糊
總結
相信看到這裏,大家對影視幀率與遊戲幀率的作用原理和差別都有了基本的認識,核心圍繞在人腦強大的自適應能力與動態模糊上,希望本文能對大家理解視頻與遊戲幀率有所幫助。
第一次寫科普文,能力有限,有不對的地方還諒解指出,最後求電個。
更多遊戲資訊請關註:電玩幫遊戲資訊專區
電玩幫圖文攻略 www.vgover.com