20
本文作者: 臺伯河 | 2015-08-23 10:25 |
【編者按】本文作者@臺伯河,VR行業(yè)從業(yè)者。
隨著虛擬現(xiàn)實漸漸興起,國內(nèi)現(xiàn)在做虛擬現(xiàn)實的廠商也增多了起來。但是我經(jīng)常聽到有體驗者向我表示:他戴上國外大廠諸如Oculus、Sony和Valve的VR頭顯的時候,體驗十分出色,但是戴上國產(chǎn)的VR頭顯,不動的時候還好,一動起來就會讓人極度眩暈,這是為什么?按照一般的看法,VR頭顯無非是戴在頭上的顯示器,暈動(Motion Sickness)到底是怎么回事?
實際上人對于VR的眩暈很大程度上,與暈船暈車沒啥區(qū)別:人耳朵里的前庭系統(tǒng)所感受到的運動狀態(tài)和視覺系統(tǒng)不一致,就會在大腦里“打架”——人就會覺得暈乎乎的??偟膩碚f,暈動癥分為三種:
你看到動了,感覺沒有動:比方說打FPS游戲就是這種情況;
你感覺動了,但是看到?jīng)]有動:比方說暈車暈船暈機就是這種情況;
感覺的運動情況與看到的運動情況不匹配:宇航員在做離心機訓(xùn)練的時候就會遇到這種情況。
對于VR,情況可能要更加復(fù)雜一些。用戶的全部視野都被VR頭顯所覆蓋,VR頭顯極力欺騙你已經(jīng)到了另一個世界,此時視覺系統(tǒng)所感受到的東西就不僅僅是視野中的一塊屏幕上顯示的畫面,而是整個視野,在這種情況下,VR導(dǎo)致的暈動癥就會有很多種因素。
第一個因素當然是你身體的運動和你的視野中所觀測到的運動不匹配。
比如說你在坐VR的過山車的時候,視覺上是在高速運動,但是前庭系統(tǒng)卻表示你并沒有在運動,這時就會導(dǎo)致頭暈。從邏輯上,這與打FPS游戲造成的頭暈沒有什么區(qū)別,每個人都會有不同的感受。
第二個很重要的原因,是頭部運動和視覺觀測到的頭部運動的不匹配。
這才是今天我們要說的重點,也是VR頭顯能夠從技術(shù)上加以改善的部分。其中這一點包括兩個部分:幀間延遲和幀內(nèi)延遲。
幀間延遲很好理解。人類對于頭部轉(zhuǎn)動和相對應(yīng)的視野的變化是極度敏感的。如果用戶的頭轉(zhuǎn)動了,而相對的,視野轉(zhuǎn)動有延遲,只要很微小的延遲就能感覺得到。有多微小呢?研究表明,頭動和視野的延遲不能超過20ms,不然就會非常明顯。
不要小看20ms:實際上人頭部運動的速度很容易就能夠達到每秒上百的度數(shù)。假設(shè)頭部轉(zhuǎn)動速度為100度/秒(其實隨便轉(zhuǎn)頭就能達到這個速度),20ms的延遲意味著視野中物體的轉(zhuǎn)動延遲為2度,把手伸直,豎起大拇指,大拇指的寬度大概就是2度。
20ms的延遲時間對于VR頭顯而言是一個非常大的挑戰(zhàn)。首先設(shè)備需要足夠精確的辦法來測定頭部轉(zhuǎn)動的速度、角度和距離,這可以使用慣性陀螺儀(反應(yīng)靈敏但是精度差)或者光學(xué)方法來實現(xiàn)。然后計算機需要及時渲染出畫面,顯示器也需要及時地顯示出畫面,這一切都需要在20ms以內(nèi)完成。相應(yīng)的,如果每一幀顯示的時間距離上一幀超過20ms,那么人眼同樣也會感到延遲。所以,VR頭顯的畫面刷新率應(yīng)該超過50FPS,目前來說60FPS是一個基準線。要在這么短的時間內(nèi)搞定這一切,本身就是巨大的挑戰(zhàn)。
那么是不是單純把幀率提高到60FPS以上,拼死將延遲做到20ms以內(nèi)就可以了呢?其實除了幀間延遲之外,VR所造成的眩暈還有更加復(fù)雜的成因。下面我用幾張示意圖演示。
我們可以看到,左邊這張圖是真實的世界中,一個物體從左往右移動時眼睛看到的情況:隨著時間的推移,物體的軌跡是一條線;而右邊的圖則是任何一種顯示器顯示出來的情況:物體的圖像在每一個點顯示一段時間之后,就跳到下一個點;它并非是連續(xù)的運動。
但是一旦當人的頭部運動,那么人眼也會相對于顯示的物體有相對的運動,這時物體在人眼中的軌跡就變了一個樣子:
右圖中頭部往左轉(zhuǎn)時,原來靜止不動的物體的軌跡就變成了右圖這個樣子,不再是一個點,而是在每一幀結(jié)束之時跳回到它“應(yīng)該”在的位置。然而人眼的視覺暫留現(xiàn)象則會保留上一幀和這一幀的圖像,于是圖像就會造成拖影,從而導(dǎo)致眩暈。
假如我們?nèi)匀患僭O(shè)60hz的刷新率,頭部轉(zhuǎn)動速度為120度/秒,那么一幀內(nèi)頭部轉(zhuǎn)動為2度,以DK2的分辨率,一幀內(nèi)的延遲為19像素,這個時候頭顯顯示的圖像將會是相當模糊的。而分辨率越高,這個問題就越嚴重。以人眼理論極限分辨率來計算,一幀內(nèi)延遲會達到600像素。
這個問題怎么解決呢?想要讓物體的圖像更加連續(xù)的移動,最好也是最簡單粗暴的辦法是提高刷新率。
從60到90,到120,到200……可能最后到1000hz,那時我們的視覺系統(tǒng)就徹底分辨不出真實或者是虛擬了。 但顯然我們現(xiàn)在無法將刷新率提高到1000hz,目前Oculus Rift CV1和HTC Vive采用了90hz刷新率,而Sony Project Morpheus采用的是120hz刷新率。
另外一個辦法,就是降低余暉(Persistence)。
余暉(Persistence)是一個在CRT顯示器時期的概念。CRT顯示器是電子束激發(fā)屏幕上的熒光粉發(fā)光,所以實際上CRT顯示每一幀之內(nèi)只有很短一段時間像素是發(fā)光的,其余時間像素是暗的,示意圖如下:
可以看到液晶顯示器,每一幀內(nèi)像素總是在發(fā)光,所以液晶顯示器就被稱之為“全余暉”(Full Persistence)顯示。
中間這張圖只有一半時間像素發(fā)光;而右邊這張圖是理想情況下只有非常短的時間內(nèi)屏幕在發(fā)光,也就是“零余暉”(Zero Persistence)。由于人眼的視覺暫留效應(yīng),刷新率足夠高就不會察覺到屏幕只有每一幀很短時間發(fā)光。但是為了彌補亮度的不足,每一幀內(nèi)像素發(fā)光的強度要大大提升。
低余暉顯示對VR頭顯的意義在于,頭動時物體的軌跡更加接近于物理世界的真實軌跡:
這時頭部運動帶來的拖影會大大降低。假設(shè)假設(shè)同樣頭部轉(zhuǎn)動為120度/秒,頭顯刷新率60hz,一幀內(nèi)屏幕發(fā)光2ms,以DK2分辨率和視角計,那么在發(fā)光2ms之內(nèi)頭部轉(zhuǎn)動人眼所觀察到的視覺延遲僅為2像素,眩暈感就隨之而去。
但是我們都知道LCD的基本顯示原理:通過讓液晶翻轉(zhuǎn)來選擇性透過光線。這意味著LCD很難使用低余暉顯示。
(TN-LCD的基本顯示原理)
液晶翻轉(zhuǎn)的響應(yīng)時間最快也有2-4ms,而背光原理也導(dǎo)致LCD不能做到全黑。相比之下傳統(tǒng)的CRT顯示器是天然的低余暉顯示。
想要解決這個問題,VR頭顯必須使用主動發(fā)光的顯示屏,比方說OLED。由于其每個像素都是主動發(fā)光的,所以O(shè)LED屏幕可以做到低余暉。
實際上,Oculus和Valve都使用了AMOLED的低余暉顯示屏,Sony則使用了自家的OLED顯示屏。目前國產(chǎn)的VR頭顯大多采用傳統(tǒng)的LCD顯示屏,所以其造成眩暈是很自然的。
但是低余暉也并不是什么都好。它也會帶來副作用:由于每一幀圖像顯示的時間都很短,所以移動的物體顯示出的軌跡是斷續(xù)的,視覺系統(tǒng)會認為其為不同的物體,而在顯示屏全亮的情況下,視覺系統(tǒng)則有足夠的時間將其界定為同一個物體。從這個意義來說,這是一個trade-off:在解決暈動和拖影的同時,低余暉顯示會導(dǎo)致頭動時物體閃爍和跳躍。
好了,說了這么多,我想大家也都明白了:虛擬現(xiàn)實并不是在眼睛前面放兩塊顯示屏加一個陀螺儀就能搞定的。在此也希望國內(nèi)的廠商能夠沉下心做好產(chǎn)品,把虛擬現(xiàn)實的基本體驗做好,我們才能夠像智能手機那樣從蘋果谷歌到小米華為。
聲明:本文在技術(shù)描述中參考了現(xiàn)Oculus首席科學(xué)家Michael Abrash的工作,部分圖片來自于他在Valve的博客,原文地址。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。