【乾貨】為什麼玩VR會頭暈?

作者:雲圖圖

本文原載於知乎專欄「科技蜘蛛」和同名公眾號

警告:長文,理解需要一定腦力(沒腦力腦洞也行)

無論是 Facebook (Oculus),Microsoft (Hololens) 還是 Google (Google Glass 以及 Cardboard ),都在 VR/AR 領域投入了大量資金。但是理想很豐滿,現實很骨感。現階段,虛擬現實設備還有很多局限,比如價格居高不下,應用大多為遊戲,還有重要一點就是VR外設的使用舒適度。不少人長時間使用後都會表示頭暈,有不適感。那麼,為什麼使用者會頭暈呢?未來有可能克服這些困難嗎?

其實,頭暈是一個非常複雜和綜合的癥狀,很難分析每個人的準確情況,我們也只能在這裡列出一些可能的原因。

3D眩暈症

絕大多數人的頭暈癥狀,是和3D暈眩症類似的。3D眩暈症是指在電腦上玩3D遊戲,尤其是射擊類遊戲的時候,畫面的快速變換超過了大腦日常處理的速度而感到的一種不適感。耳朵里的前庭(相當於生理的加速度儀)告訴大腦說身體沒有在運動,而視網膜傳入大腦的信號卻好似身體正在運動,這樣的反差就造成了大腦信息的不統一,進而產生了不適感。

而VR體驗的核心之一就是浸入感。相對電腦屏幕,VR設備的屏幕等效覆蓋了視野中更大的比例,其帶來的浸入感遠比在電腦屏幕前來的強烈,更容易引發3D眩暈症的癥狀,更有不少人會失去平衡身體的能力。

在YouTube上搜索「VR fail」,可以搜到各類搞笑視頻。

坐標系同步

影響VR體驗的一個重要因素是同步問題。VR里的虛擬世界中雖然內容可以是虛構的,但物理定律卻和現實世界中一致。在使用 Oculus 之類的 VR 頭盔時,用戶頭部的空間運動信息往往會被採集以用於下一幀圖像的計算。這時就要求用戶身體的運動和圖像里場景的運動必須同步。比如你的頭轉動的時候,圖像應該讓你感覺到虛擬世界中的主角也在同步轉頭。

理想情況下,虛擬世界的坐標系應該和使用者所在物理空間的坐標系完全同步,兩者中視線的角度和視點的位置需要保持一致。而現實情況中這很難保證,出於種種原因,很容易出現虛擬世界內坐標系的運動軌跡比用戶身體的運動軌跡慢幾十毫秒甚至接近一百毫秒的情況。這樣的延遲在用戶的物理方位保持穩定的時候,並不會有大的影響,但是在用戶進行第一人稱遊戲等需要快速轉動視角的體驗時,按照人頭平均可以達到每秒轉動200度來計算,20毫秒的延遲就可能達到可怕的4度的偏差(相當於伸直手臂拿一個紙杯兩側的夾角)。這個延遲和偏差是再怎麼提高幀數也無法解決的!

問題的主要原因在於,從運動的發生到反饋在VR的屏幕上,是需要時間的。設備的運動感知是通過微機電陀螺儀(Gyroscope)達到的,而陀螺儀內是有物理結構的,高速振子在設備運動時因為科里奧利力產生偏移,電容的改變被捕獲成電壓信號,產生的模擬信號轉變成數字信號,再傳輸到電腦上,電腦的程序從輸入埠讀取到這些數據,再去調用邏輯計算的程序計算下一步的內容,建好的模型最後再交給GPU渲染,渲染出來的圖像因為流量過大(一段未壓縮的1440p 90hz視頻流的數據量高達8Gb每秒),必須要再經過壓縮之後才能串流傳送到VR設備上。VR設備接收後,需要解碼,才能最終傳給顯示單元,用戶才能看到最終的圖像。雖然如今電腦的處理速度已經非常驚人了,但是這些數模轉換,編碼解碼和埠的讀寫,還是需要一定的時間。

如何縮短處理過程造成的延時,也一直是多方研究的方向。不同廠家的具體研究方向我們不得而知,但是可以想像隨著VR的走熱,會有越來越多的財力人力投入到這些問題的研究中,其中就包括利用5G網路直接無線傳輸無壓縮的圖像到設備上,頭戴設備獨立進行計算和渲染等等。我們可以大膽預料,在可以想像的未來,坐標系同步問題將大大減小。

左右眼差異與3D

人們往往把 VR 和3D聯繫在一起,其實這是兩個完全不同的概念。VR 致力於使用戶在虛擬世界裡獲得逼真的體驗,也需要360度全景視頻和視角追蹤。而能錦上添花的,就是3D。

目前不少 VR 體驗其實只是把同樣的圖像顯示在左右眼上罷了。比如實景拍攝的360度全景視頻,由於顯而易見的原因(兩個全景攝像機無法在同一場景同時以兩個視點拍攝視頻而不出現在對方的圖像中),現階段能做的只是讓虛擬世界視角隨著用戶視角改變,並沒有3D效果。

但3D是VR體驗里最重要的部分之一。簡單地說,左右眼屏幕顯示的內容稍有不同,畫面中前景和後景中物體透視投影的細微差別被大腦翻譯成物體的遠近,也就形成了3D的感覺 (原理下文中有解釋)。總之,要實現3D,也就要求左右眼對應屏幕所顯示的內容不能簡單複製,而是需要單獨計算。

左右眼圖像中細小的差異,是需要和真實世界中的體驗一直的。而合理設置左右眼圖像的偏差,是遊戲引擎設計者和遊戲設計者決定的,差別太大會難以聚焦造成不適,差別太少又不夠真實。

另一方面,左右眼的圖像需要同步。比如你在玩開車的遊戲,每秒60幀,每幀的1/60秒中車都在前進,路邊的景色,比如樹木的位置和角度也就會有相應的變化。而如果這時候左右眼的同步沒有做好,左眼的樹木還在原地而右眼卻開始往前有了位移,這是兩眼圖像的差別已經遠遠超過大腦處理的極限,很多物體會產生重影,給大腦的處理帶來極大的煩惱,和現實中的體驗完全不符,進而造成眩暈感。

幀數

影響用戶體驗的還有幀數 FPS(Frames per second),意思是每秒鐘顯示器刷新了多少次,渲染了多少次畫面。

真實世界的幀數是無窮大的(當然人眼的接受頻率是有限的),而遊戲畫面的幀數也是玩家追求的一大指標。在傳統的電腦屏幕上,正常使用要求 FPS 保持在30以上。而要追求流暢,則一般要 求 FPS 至少達到 60。相關的研究顯示VR設備內屏幕的刷新率一般要達到 90FPS 才能得到比較自然的體驗。而更高的FPS則自然需要更多的計算能力。雖然 Oculus Rift 最高支持到 90FPS,但實際上,大部分軟體想要達到 60FPS 都比較困難。

影響幀數最直接的因素就是計算能力,而攜帶型設備的計算能力目前還不足夠(除去 Hololens 這種直接在AR設備內部計算的黑科技!),大部分的 VR 設備都是通過設備與電腦串流,利用電腦的顯卡進行渲染再傳輸到設備上現實的。而如果按照 VR 設備 2K 的解析度,60Hz 的刷新速度的標準來看,是非常巨大的一筆運算!而人們在這方面能做的,除了優化 VR 專用遊戲引擎之外,就只能等硬體性能的提升了。

視角

人類的一隻眼睛的等效焦距相當於135膠片的50mm左右的鏡頭。但是這個焦距值只能決定遠近物體間透視的關係,比如距離你50厘米遠的一個杯子和5米遠的一個杯子在圖像上的大小和位置關係。這對於當下先進的遊戲引擎來說不難解決,難以解決的,是視角問題。

人單眼的視角範圍最高可以達到156度,一般為120度。也就是說,一個理想的VR,最好可以覆蓋120度的範圍(主要是水平,垂直不到120度)。但是這顯然是不現實的,因為120度的覆蓋意味著屏幕需要從鼻樑開始彎曲到眼前再彎曲到外眼角。截至目前的VR設備,基本都是一塊相當於等效於3米外的一個1000寸屏幕的效果罷了,可以想像,1000寸的屏幕放在3米外雖然很大,但是很難和真實世界中肉眼的所能捕獲的視角相媲美。

其實這個問題在3D遊戲中也有,而解決辦法就是在電腦屏幕上顯示廣角鏡頭下的虛擬世界。在玩遊戲時,玩家的視野更像是從類似 GoPro 的廣角攝像機中拍攝得到的,和裸眼相比,畫面的邊緣往往存在畸變。這種焦距變換也是導致不適的一個原因。

具體來說,在VR設備中,除了屏幕之外的視域是全黑的,人眼只在小範圍內接收到原本屬於更大範圍的信息。對於沒有太多3D遊戲經驗的人來說,這種與日常生活中物理世界中的不匹配就很容易導致頭暈。

為了模擬人眼的橢圓形視角,有些情況下屏幕上的圖像並不會充滿屏幕,而是一個變形的正方形,這樣在經過 VR 設備的透鏡之後,3米遠的等效屏幕上的圖案更接近人眼的真實視角。

高級別 VR 設備的透鏡也不是簡單的凸透鏡。屏幕中每個像素點距離人眼的距離並不一樣,靠近角落的像素和中心處的像素需要不同的焦距來同時匯聚在視網膜上。

對焦偏差

我們常說的人眼的對焦其實有兩個部分,一個是單眼的對焦,一個是雙眼的重合。

學過初中物理的人也許還能記得,像距是由透鏡的焦距和物距決定的。而對於人眼來說,顯然透鏡和像之間的距離是固定的,能調整的,就是透鏡的焦距。連接晶狀體的肌肉群通過伸縮,使得人眼和相機一樣可以改變透鏡的焦距而在視網膜上成像。

而雙眼聚焦後,還有重要的一部就是雙眼的圖像要盡量重合,這就需要控制眼球轉動的肌肉了。當視網膜上最敏感的黃點所對應的視線重合在物體上時,我們的大腦才能夠通過對比兩個圖像的極其細微偏差來產生立體感。可以簡單的想像你像超人雙眼可以發出激光,你視覺的對焦點就是兩束激光重合的地方。

現階段 VR 設備效果大致等同於一塊距離用戶3米遠1000寸的屏幕,也就是說晶狀體的焦距永遠是確定的(對應3米之外)。而在這個距離3米的屏幕上,需要通過兩眼圖像的偏差來模擬立體感,就是需要在圖像中引入不同物體的細小偏差。簡單的說,距離視點近的物體的雙眼偏差比較大,而距離視點越遠的物體的雙眼偏差越小。這些偏差會誘導人眼中控制眼球轉動的部分來操作,使圖像重合,而這個過程加上重合圖像的偏差,就會給人一個立體的感覺。

換句話說,在現實生活中,眼睛的對焦和視線重合的控制是完全同步的,晶狀體焦距在50厘米外,你的雙眼視線也就重合在50厘米外。而你在玩VR的時候,眼睛的對焦距離是一樣的都是3米,而雙眼視線的交點與你的距離是不停在變的!這種非自然的設定也會導致使用者的不適。

那麼3D電影呢?的確,3D電影的原理是等效的,通過偏振濾鏡使得雙眼看到投影到同一屏幕上不同的圖像,然後通過雙眼圖像的差別來表現3D,但在3D電影中,首先屏幕的距離很遠,一般至少有20米,其次3D電影中因為物體的距離一般不會太近,而VR中用戶經常以第一人稱的廣角視角出現,很多物品距離很近,焦點在遠近景物之間切換時調節的幅度也就更大。

上圖為3D原理示意圖,注意觀察左右兩眼中,最前面白瓶的位置差別較大,最後的綠瓶位置差別的很小。

解析度

在談論跨設備屏幕效果的問題上,解析度和 PPI(Pixels per inch,像素密度)其實並不能完全表示視覺效果的好壞,因為這還和用戶的眼睛和屏幕的距離有關。

舉個栗子,一個55寸的4K電視解析度很高,但是PPI很低(因為面積大,PPI=解析度長寬乘積/顯示面積),距離近時還是會看得到像素點,但是這並不影響體驗,因為正常使用時屏幕放置在牆邊而用戶坐在數米外的沙發上。

而一個1280×768解析度的14寸筆記本電腦,解析度和PPI都不高,但是正常操作時你離的距離中等,也不會覺得什麼不對勁。相比之下早期同樣級別解析度的iPad1,相對電腦來說屏幕小PPI更高,但是因為操作距離也更近,相比之下反而會覺得更不清楚。

所以這裡需要引入一個新的概念來表示單位視角內像素點的數量,我們姑且稱為單位視角像素數,PPVA(Pixels per view angle)。指在正常使用距離時,肉眼單位視角(開口1度的圓錐)在屏幕上投影內的像素數。這顯然不是一個嚴謹的概念,因為「正常使用距離」顯然是一個範圍而不是確定的值。但是這並不影響我們接下來的的論述。

這才是決定一個屏幕是否清楚的有效數據!

現階段VR外設的屏幕解析度普遍在2K(2048 × 1080)級別,屏幕大小在數厘米左右,按理說設備的PPI非常之高應該很清楚才對,其實不然。在如此近的使用距離下,透鏡又把屏幕內容拉至120度左右,單位視角像素數已經很低了。

簡單的近似計算一下,我手邊的 Nexus 6 手機水平放置屏幕部分寬度為13厘米,我平時使用距離為30厘米,視角為2*arc tan(6.5/30)約為24度。Nexus 6 手機的解析度為 2560x1440。

而 VR 設備如果想覆蓋120度的視角(24的5倍)並且達到和 Nexus 6 相同的清晰度(單位視角像素數),長寬解析度需要達到 Nexus 6 的5倍,達到驚人的 12800×7200,而目前 Oculus 的單眼解析度只有 1080×1200 而已。

換個方法算,就是相當於 Nexus 6 這個6寸大號手機的屏幕解析度從 2560x1440 降至 512×288這個解析度的手機拿在手上什麼樣的感受大家自己腦補吧。

總之,低解析度帶來的,就是低真實度,而真實度越低,和真實世界相差越遠,也就越容易擾亂大腦機制。

後話

除了上述討論的方面之外,還有一些原因導致會使用不適,比如屏幕是長方形而不是和視野更接近的橢圓形,頭戴設備的重量,對比度/亮度等等。現階段的 VR 設備著實不能用舒適,逼真這些詞來形容,更多的是為了體驗和嘗鮮。而上面的問題中有些容易解決,比如解析度和計算能力;有些則更為複雜,比如對焦問題和從運動到圖像反饋的延遲。究竟眾 VR 廠商可以給我們帶來什麼樣的驚喜?VR/AR 之戰又將如何發展?讓我們拭目以待吧。

——END——

文中圖片均來自網路,侵刪。

如需轉載請聯繫科技蜘蛛微信公眾號後台

WeChat ID:techspider

推薦閱讀:

要讓人工智慧有「靈氣」?得賦予它一雙聰慧的「眼睛」
【機器視覺】張氏法相機標定
機器視覺、圖像處理、機器學習領域相關代碼和工程項目和數據集 集合
ADAS領域中,雷達和機器視覺各有什麼優劣,未來的趨勢是共存還是某個徹底勝出?
海康威視研究院在計算機視覺、模式識別這方面的技術水平如何?

TAG:虚拟现实VR | 增强现实AR | 机器视觉 |