此前有報(bào)道稱,哥倫比亞大學(xué)的研究人員表示他們已經(jīng)找到解決了暈動(dòng)癥的技術(shù),但文章中并沒有就此種技術(shù)進(jìn)行剖析,今天就讓我們具體討論下關(guān)于如何解決暈動(dòng)癥的問題。
先獻(xiàn)上VR大牛對(duì)于這個(gè)問題的思考:
Michael Abrash是首屈一指的圖形程序員,他于2014年加入Oculus公司擔(dān)任首席科學(xué)家,致力于頭戴式可視設(shè)備(Head Mount Display簡(jiǎn)稱HMD)研究。提到VR大家就必不可少的會(huì)想到暈動(dòng)癥(Motion Sickness)一詞??梢哉f這個(gè)問題是VR發(fā)展中最大的一塊絆腳石,具體來說HMD有許多偽影現(xiàn)象(artifacts),例如:色彩邊緣(color fringing)、抖動(dòng)(judder也稱視角震顫)、頻閃(strobing)、拖影(smearing)等偽影問題會(huì)帶來眼腦協(xié)調(diào)不適,從而引發(fā)暈動(dòng)癥。所以說虛擬現(xiàn)實(shí)技術(shù)不是簡(jiǎn)單的把兩塊顯示器放在眼前然后放映圖片那么簡(jiǎn)單。這篇文章是在Michael Abrash的三篇關(guān)于余暉(persistence)博文的基礎(chǔ)上創(chuàng)作的,深入探討低余暉如何降低暈眩感和低余暉技術(shù)所帶來的其他負(fù)面問題。
首先什么是余暉效應(yīng)呢?
換個(gè)詞來說余暉效應(yīng)就是視覺暫留現(xiàn)象,是指人眼在觀察事物時(shí),光信號(hào)傳入大腦神經(jīng)需要一段短暫的時(shí)間,光信號(hào)消失后,視覺形象并沒有立刻消失。這種殘留的視覺影像成為“后像”。舉一個(gè)簡(jiǎn)單的例子,中國(guó)古代的走馬燈就是利用了這種現(xiàn)象。我們生活中也有余暉效應(yīng),比如觀察一個(gè)白熾燈,當(dāng)我們猛的轉(zhuǎn)頭后,白熾燈的燈光依然會(huì)映在我們眼前。
那么余暉與顯示器有什么關(guān)系呢?
我們稱顯示器上的像素點(diǎn)被點(diǎn)亮的時(shí)間為余暉時(shí)間(persistence time)。我們現(xiàn)在用的液晶顯示器就是全余暉顯示器,因?yàn)橄袼攸c(diǎn)在每一幀都被點(diǎn)亮。那為什么在HMD中我們要選擇低余暉呢?這個(gè)問題我們就要從人眼和顯示器上的虛擬圖像間的相對(duì)運(yùn)動(dòng)說起了。
色像差(color fringing)也稱為彩色邊紋或者色散現(xiàn)象。在解釋低余暉之前,我們先來看一個(gè)簡(jiǎn)單的問題:色像差。這是一個(gè)很好修復(fù)的問題,也可以很好地幫助我們了解人眼和顯示器上的虛擬圖像間的相對(duì)運(yùn)動(dòng)。
下圖是一個(gè)很好的例子,我們可以清楚地看到圖片有紅綠藍(lán)三種基色邊緣,圖片質(zhì)量大幅下降。那么什么情況下這種問題會(huì)發(fā)生呢?
我們可以認(rèn)為來自顯示器的光子是一個(gè)三維信號(hào),我們把這個(gè)三維信號(hào)量化為一個(gè)表達(dá)式:pixel_color = f(display_x, display_y, time)。這個(gè)表達(dá)式表示顯示器上的光子的位置和它的余暉時(shí)間。
我們將用時(shí)間——空間圖來幫助大家了解HMD頭戴顯示器與真實(shí)世界有什么不同(在這里我們忽略垂直分量y)。
真實(shí)世界中的物體:
LCOS色序顯示器上的虛擬物品:(色序顯示器經(jīng)常被用來當(dāng)做HMD的顯示器)
如果你看不懂以上的解釋也沒有關(guān)系,簡(jiǎn)單來講,由于色序顯示器三種色彩分量不能被同時(shí)點(diǎn)亮,那么當(dāng)人眼相對(duì)于顯示器上的虛擬物品移動(dòng)時(shí),我們就會(huì)看到色散現(xiàn)象。這種現(xiàn)象是一個(gè)很好解決的問題,因?yàn)橹灰_保色彩分量同時(shí)點(diǎn)亮就可以了,所以我們選擇更換顯示器,Oculus使用的就是OLED有機(jī)電激光顯示器。
我們之所以把色散問題放在開頭解釋,是為了讓大家更好地了解人眼和顯示器的虛擬物品間的相對(duì)運(yùn)動(dòng)。這種相對(duì)運(yùn)動(dòng)還會(huì)帶來抖動(dòng)(視角震顫)、頻閃、拖尾等偽影問題(頻閃和拖尾的混合現(xiàn)象我們稱為抖動(dòng))。
首先什么是拖尾呢?根據(jù)維基百科的解釋,拖尾是在vr中對(duì)于動(dòng)感模糊的視覺感知,它降低了圖像銳度和細(xì)節(jié)。拖尾發(fā)生是因?yàn)橄袼攸c(diǎn)在被點(diǎn)亮?xí)r間內(nèi)在視網(wǎng)膜上滑動(dòng)了一段距離,點(diǎn)亮?xí)r間越長(zhǎng),滑動(dòng)的距離就越長(zhǎng)。換言之,當(dāng)人眼與像素點(diǎn)有相對(duì)運(yùn)動(dòng)時(shí),余暉時(shí)間越長(zhǎng),拖尾現(xiàn)象越明顯。
其次什么是頻閃呢?根據(jù)維基百科定義,頻閃是指在VR中同一時(shí)間視覺感知到多張?zhí)摂M圖像副本。當(dāng)人眼觀察虛擬圖片位置從一幀到下一幀的位置超過5-10角分時(shí),我們會(huì)感覺圖像明顯跳動(dòng),這種跳動(dòng)就是頻閃。注意頻閃不是閃爍(flicker),閃爍是一種一亮一滅的現(xiàn)象,頻閃是同一時(shí)間看到多張相同的圖像。我們不會(huì)詳細(xì)介紹閃爍,因?yàn)殚W爍不涉及視覺暫留。
而這兩種現(xiàn)象的組合,我們稱之為抖動(dòng)。在HMD上,拖尾現(xiàn)象嚴(yán)重就會(huì)掩蓋住頻閃現(xiàn)象。下圖是一張渲染的游戲場(chǎng)景,和這個(gè)場(chǎng)景拖尾2度的對(duì)比圖。(把手伸直,豎起大拇指,大拇指的寬度大概就是2度。)
如果你還是對(duì)頻閃和拖影的產(chǎn)生抱有疑問,那我們還是來看看時(shí)間——空間圖來幫助我們了解。
真實(shí)世界中的物體:
HMD上的虛擬圖像:
因?yàn)橛鄷熜?yīng),人眼可以保存上一幀,這一幀,甚至下一幀的圖像,對(duì)于物體相對(duì)于眼睛從左到右移動(dòng)(眼睛注視前方不動(dòng))這種情況,我們不會(huì)看到拖影現(xiàn)象,但是由于實(shí)際的刷新率,我們可能會(huì)看到頻閃。對(duì)于眼睛追蹤物體從左到右移動(dòng)這種情況,因?yàn)槊繋袼攸c(diǎn)都有滑動(dòng),所以我們看到了拖影現(xiàn)象,這時(shí),如果我們?nèi)搜圩粉櫜痪珳?zhǔn),虛擬圖像沒有落在視網(wǎng)膜相同位置上(也就是說x軸有位移),我們也會(huì)看到頻閃,這就造成了抖動(dòng)這種混合現(xiàn)象。
了解了這些偽影現(xiàn)象之后,我們想做的就是如何解決它。第一個(gè)方法當(dāng)然就是提高刷新率,讓虛擬物品運(yùn)動(dòng)更加接近真實(shí)世界。請(qǐng)看下圖:
那么問題來了,多大的刷新率才足夠呢?
沒有一個(gè)答案可以回答這個(gè)問題,因?yàn)檫@個(gè)值依靠于場(chǎng)景內(nèi)容、分辨率、視場(chǎng)FOV、像素點(diǎn)填充、顯示器類型、人眼移動(dòng)速度、人眼特征。我可以告訴你,這個(gè)值大概接近于100Hz。
200Hz是一個(gè)很大的提升,但是還不夠。如果是一個(gè)1080p且有用90度FOV的顯示器可能需要300到1000Hz的刷新率,但是高頻率要求更高的分辨率。一個(gè)1000Hz的顯示頻看起來足夠好了,基本可以確定可以減少或者消除一些HMD的問題,也許包括暈眩,因?yàn)樗咏咏F(xiàn)實(shí)世界。我不能百分之百肯定我的結(jié)論,因?yàn)槲覐膩頉]見過一個(gè)1000Hz的頭戴顯示器,我也不認(rèn)為目前技術(shù)可以達(dá)到這個(gè)要求。
那么除了提高刷新率,還有沒有其他方法可以消除抖動(dòng)?那就是降低余暉時(shí)間。我們?cè)賮砜磶讖垖?duì)比圖:
解決了拖影,又引發(fā)了新的問題。之前我們也提到了,在抖動(dòng)的情況下,拖影隱藏了頻閃效果。不看拖影,低余暉的顯示器會(huì)造成頻閃。然而低余暉的頻閃看起來不是一個(gè)嚴(yán)重的問題,因?yàn)檠劬υ谕昝栏櫴裁磮D像時(shí)不會(huì)頻閃,虛擬圖像上的像素點(diǎn)會(huì)在每一幀落在視網(wǎng)膜的相同位置,所以沒有幀到幀之間的圖像位置相隔問題(造成頻閃的原因)。但是眼睛不可能追蹤場(chǎng)景里的所有虛擬物品。舉一個(gè)例子,如果你在一個(gè)賽車場(chǎng)景里,周圍有舞動(dòng)的人群,但你的視線一直在追蹤場(chǎng)景中的賽車,因?yàn)槿搜圩粉欃愜?,所以我們?nèi)搜酆鸵苿?dòng)的賽車間沒有相對(duì)運(yùn)動(dòng),我們看不到頻閃,但是場(chǎng)景中的其他部分,可能會(huì)出現(xiàn)頻閃現(xiàn)象。再比如,如果你在玩一個(gè)游戲,讓你在一個(gè)喧鬧的街市場(chǎng)景中掃視尋找一個(gè)圖標(biāo)或者標(biāo)志,這時(shí)場(chǎng)景中的物體會(huì)相對(duì)人眼產(chǎn)生距離,這個(gè)距離間隔大于5-10角分,我們就會(huì)看到頻閃。
頻閃現(xiàn)象并沒有被人們好好研究過,我們關(guān)于這個(gè)現(xiàn)象引發(fā)的問題現(xiàn)在還沒有解決。 其中涉及了很多人體眼腦的合作機(jī)理。目前看來,Michael Abrash發(fā)現(xiàn)了兩個(gè)因素影響著這種視覺不穩(wěn)定問題。一個(gè)是掃視遮蔽(Saccadic masking),也稱掃視抑制);另一個(gè)是參照系(frame of reference)。在這里我可以粗略的向大家介紹一下什么是掃視抑制,什么是參照系。但是更具體深入的研究還是需要大家自己去慢慢了解。
對(duì)于人類來說,如何在頻繁的快速掃視眼動(dòng)中保持視知覺穩(wěn)定是一個(gè)重要的課題。研究表明,伴隨快速掃視發(fā)生的視覺敏感性降低的現(xiàn)象,即掃視抑制,對(duì)于形成穩(wěn)定的視知覺具有重要作用。在我們掃視時(shí),真實(shí)世界的圖像在我們的視網(wǎng)膜上滑動(dòng)。但是低余暉使我們喪失了掃視抑制的功能,因?yàn)榈陀鄷煂?dǎo)致了虛擬圖像在掃視過程中始終保持清晰,失去了滑動(dòng),這時(shí)頻閃現(xiàn)象就會(huì)發(fā)生。
另一個(gè)因素是參照系,為了把視網(wǎng)膜接收到的信息轉(zhuǎn)化為我們熟知世界的模型,無論什么時(shí)候眼腦都需要一個(gè)參照系(人腦預(yù)測(cè)被掃視的物品應(yīng)該處于什么位置)。但是低余暉消除了拖尾,圖像移動(dòng)變的不連貫,所以人腦認(rèn)為虛擬圖像沒有處在正確位置上。這時(shí),我們就會(huì)感到視覺不穩(wěn)定。
頻閃帶來的視覺不穩(wěn)定性在游戲中不是一個(gè)很大的問題,也很少被檢測(cè)出來,人腦在發(fā)展中,也有可能在未來的十幾年慢慢適應(yīng)這種問題,就像人配了一個(gè)新眼鏡一樣。HMD研究已經(jīng)有了突破性的發(fā)展,但是還有很多未知的問題等待我們?nèi)ヌ接?。希望這篇文章可以讓大家對(duì)暈動(dòng)癥有一定的了解,并且知道了低余暉顯示器的益處和缺陷。如果文章中有哪些不精準(zhǔn),不明確的解釋歡迎大家積極討論。謝謝
參考文獻(xiàn):My Steam Developers Day Talk