關於如何消除VR設備的給用戶帶來的眩暈感?

虛擬現實頭戴設備能讓你體驗一個身臨其境的奇妙世界,然而當你使用幾分鐘後,你可能會感覺噁心和頭暈,這將導致整個體驗的魅力消失。計算機成像專家對此的解釋是,當前的虛擬現實頭戴設備模擬的不是自然的真實場景3D圖像,從而導致用戶會出現前面說的感覺。然而斯坦福大學計算成像專家們最近研製出了一款可以解決此問題的技術並應用到頭戴設備。它主要利用光場立體視覺的技術(The Light Field Stereoscope)。通過兩個透明的LCD屏幕層疊,並且兩者之間具有空隙,使得用戶兩眼看到的場景具有深度信息,更加貼近真實場景。並且這種技術由於具有深度信息,用戶可以看到前後的不同場景畫面,可以實現自然地線性對焦,形成類似全息的效果。

關於怎麼減輕甚至消除眩暈感,你有什麼想法?


轉自: 克服VR眩暈之幀數:提升UE4內容實時渲染效率 |VR第一資訊 VR013

VR已經成為了當今最火熱的一個話題,帶上頭盔之後,從此進入一個奇妙的世界,在這裡你不再是觀眾,你參與這個世界發生的每一件事件。整個世界從此與眾不同。在賽道上飛馳,在戰場上縱橫。

但是生理機制讓我們的大腦在身體並沒有移動,而視覺在不斷告訴我正在飛速前行的迷惑中產生了暈眩。如何解決因為VR而產生的眩暈,就成為每一位設計師需要面對的問題。

引起VR眩暈有很多原因啦,比如設計上的,技術上的。渲染的幀數高低必定是其中一個最主要的原因之一。關於UE4里對VR內容的優化方法和思路大部分是和傳統的3D遊戲優化是一致的,有部分是VR尤其相關的。接下來就以oculus為平台和大家一起分享一下在UE4里常見內容的一些設置和優化的思路和方法.

首先我們來看一個優化過程的實例,先有個大概的了解。打開一個UE4下載的項目,particle cave, VR preview,帶上眼鏡就能體驗了,對,就這麼簡單,雖然說這個並不是一個針對VR的項目。

這裡做了一些簡單的設置

1、發現攝像機是以預設軌道在飛,而且明顯感覺幀率不高,哦,好暈。為了比較方便衡量接下來優化,我做了一些攝像機的設置,讓攝像機開始遊戲後固定在一個我認為幀數最低的畫面。

2、確保幀數沒有被限制住,關閉垂直同步,把最高幀數限制上限提高好了,再run一下,固定住了,轉轉頭可以,hmm。。真的挺卡的

再接個命令證實一下,最直接和GPU渲染效率有關的就是解析度嘍

HMD SP 100 54FPS

幀數立馬提高不少,果然是GPU渲染瓶頸

降低渲染品質

Adjust scalability to medium 72FPS

成功了? 還沒有哦,這個太暴力了

這個肯定不是最優的優化結果了。因為肯定有些可以進一步做大量的優化,有些和視覺相關比較大的調整可以提高質量。而非粗暴的都調低了,那接下來就得找原因了

打開GPUprofiling: (Ctrl+Shift+,)

看下最大的GPU開銷在哪裡

  1. Base pass: Deferred Decals
  2. Lighting: ReflectionEnvironment:
  3. Translucency: Postprocessing:

從最大開銷的幾個點入手

BASEPASS: 敲入幾個渲染選項命令行:

r.Earlyzpass 1:增加draw calls和一部分GPU的消耗,但大大降低base pass的消耗

關閉了一些不需要的PP效果

一套最優POP設置組合:

  1. Postprocessing setting:
  2. Scene color;
  3. Fringe intensity 0
  4. Grain intensity 0
  5. Color grading intensity 0
  6. Bloom setting
  7. LPV 0
  8. Ambient occlusion 0
  9. DOF Method Gaussian, 其他參數 全部 0
  10. Motion blur all 0
  11. AA FXAA
  12. SSR 0 MAX roughness 0.01
  13. Ambient cubemap 0

再VR preview,

嗯,還是75,當然了,DK2上頂格是75,再優化看不出效果

13.39ms 75FPS

把品質調高成high Scalability high,還是75,哈哈,沒問題!

現在算優化完了吧? 其實還可以再優化,這時候的優化就是以盡量提升畫質但不降低幀數為目標。

看看哪些還可以優化的? 當然有 !之前的Translucency花費好高

Viewmode: shade complexity 好紅, 一堆overdraw

Decal的花費也很高, Stat scenerendering, decals in view

環境反射的花費很高: 選中sphere reflection capture, 看一下總共有幾個,觀察他們影響範圍是否重疊嚴重

Vertex intensity: 好密啊。高密度的三角面幾乎看上去就像一個實體了, 一個三角面的大小在屏幕上的面積小於2*2個像素就會極大的增加開銷

還有Particle 。

現在基本上已經定位到可執行層面的原因了,一些原因也已經通過可接受的渲染參數調整解決了;另外一些就必須要artist來優化Assets本身了。

哪些工作最快,質量損失最小,能夠換其他更能提升品質的選項。

啟示他們並不需要這麼多面,assets的優化需要更多的時間。把scaleability有些選項提升到EPIC,當然他們並不是全部

一些引起DRAW CALL數量多的原因

  1. 同屏看到的Actor太多,如果材質複雜這個因素還會加成。 合併Actor,尤其是中遠處
  2. 材質ID太多(or Section; Mesh elements)。重用材質貼圖,盡量把同一材質物體合成為一個物體
  3. 每個actor上的feature太多。主要是增加投影的屬性,增加custom depth的屬性
  4. 太多燈光投影(這裡投影的消費來自於需要計算哪些物體需要被投影)

MESH DRAW CALL往往是個大頭,MESH ID 的數量可以在STATISTICS統計可以很方便的查看,從經驗判斷哪些資源製作不合理

關於ACTOR設置feature會增加DRAW CALL數的是投影和custom depth,可以通過一些工具來檢查這些設置。使用property matrix來過濾,檢查,並修改

另外一個經常使用的查找原因的方法排除法

通過隱藏各種元素,尋找哪個是導致DRAW CALL數量的大頭

記得隱藏HUD,有的時候HUD也是個大頭之一

Showflag.slate 1

如果是GPU瓶頸,最快速的驗證方式就是改變解析度,降低解析度可以極大提高幀數。為了抵消畸變糾正而產生的圖像模糊,或者解析度的丟失,在渲染的的buff里往往是實際屏幕尺寸的120-130%,這樣增加了圖像的銳利度,但降低了渲染的速度。

HMD SP全稱是HMD 的screen percentage, 這個參數就是來修改渲染buff的尺寸的,HMD SP 120是默認值,改成100看看。

如果像剛才例子看到的,幀數有大幅度的提高,那就是GPU負擔太大的問題了,如果解析度的改變對於幀數影響不大,很有可能是因為面太多了。

對這些內容重點做檢查,看看有沒有超標的現象出現

  1. 解析度
  2. HMD SP
  3. 投影貼圖
  4. 面數/點數(燈光的多少,陰影的設置,多少物體)
  5. LOD,關閉shadow,燈光屏幕面積
  6. 面數密度太高,高到一個三角面小於2*2的像素,這個往往發生在遠處物體
  7. 點處理,點太多
  8. 點動畫的shader太複雜
  9. tessellation太複雜
  10. 太多UV,太多SG
  11. 查看staticmesh editor里點和面數的差別是否大
  12. 點沒有合併等
  13. view cost(HZB occlusion culling)
  14. Precumputed visibility volume
  15. Scene cost GPU particle simulation
  16. 材質複雜度
  17. quality switch,sin, pow, cos, divide, Noise很費
  18. 由於Texture 太多,太大 Texture caching反覆的page in and out of 顯存
  19. 遮擋的culling計算
  20. Precumputed visibility volume
  21. 延遲燈光

當使用lighting function,IES,接受投影,區域光,複雜shading modes的時候會變得更貴

反射ssr有問題,關掉。 後期, AO,很費

知道哪裡有問題了,接下來就可以著手行動了,但之前做個目標規劃還是可以事半功倍的。

最小化圖像質量妥協,是一種有的放矢的妥協策略。比如高質量的陰影對於高品質的抗鋸齒而言對於最終項目實際的表達效果次要。減小陰影品質來換取高品質AA就是一種有的放矢的妥協策略。因此盡量大的減小不是非常關心的渲染品質部分,增加更可見的渲染品質部分。

從容易做起,從開關一些渲染選項,品質參數調整,到直接刪東西,優化一個用到幾百次的物件,這些都是立竿見影的方式,這樣可以做允許的時間計劃內完成目標,如果有更多時間和預算可以對相對低性價比的。

目標75幀是必須的,不要說68,70,都不行,必須75,做實際體驗中有很大區別。

最常見的問題所在

  1. 測試環境不合適,燈光沒有build
  2. Actor或者材質ID太多
  3. 面太多,沒有任何的LOD設置
  4. 燈光使用沒有節制: 各種動態投影,燈光類型隨意
  5. 沒有合理的設置CULL的條件
  6. 透明太多
  7. Postprocess太高級了

這些原因又互相影響,一方面的增加也會增加另外方面的開銷

其他一些VR的特有行為

  1. VR 需要畸變色差糾正
  2. VR需要雙屏
  3. VR需要更大的渲染解析度
  4. VR需要傳遞感測器信息

比如對於oculus部分是在驅動層級做掉了,比如如何糾正畸變,如何雙屏,如何傳遞感測器信息。

對於感測器信息和視頻匹配的準確性,以及渲染的屏幕覆蓋率,在UE4里是可以根據需要來修改的,除了這些,其他就和以往的優化思路一致了。

創建測試環境。找原因

  1. Testing in a stable enviroment
  2. run Standalone game
  3. use pause or slomo 0.001 to prevent random numbers
  4. Measuring few times
  5. 確保幀數不封頂
  6. s.Vsync 0
  7. s.MaxFPS
  8. 了解瓶頸
  9. GPU瓶頸
  10. profileGPU(ctol+shift+,)
  11. 解析度
  12. HMD SP
  13. 投影貼圖
  14. 面數/點數(燈光的多少,陰影的設置,多少物體)
  15. LOD,關閉shadow,燈光屏幕面積
  16. 面數密度太高,高到一個三角面小於2*2的像素,這個往往發生在遠處物體
  17. 點處理,點太多
  18. 點動畫的shader太複雜
  19. tessellation太複雜
  20. 太多UV,太多SG
  21. 查看staticmesh editor里點和面數的差別是否大
  22. 點沒有合併等
  23. view cost(HZB occlusion culling)
  24. Precumputed visibility volume
  25. Scene cost GPU particle simulation
  26. 材質複雜度
  27. quality switch,sin, pow, cos, divide, Noise很費
  28. 遮擋的culling計算
  29. Precumputed visibility volume
  30. 延遲燈光
  31. 當使用lighting function,IES,接受投影,區域光,複雜shading modes的時候會變得更貴
  32. 反射ssr有問題,關掉,後期AO,很費
  33. cup瓶頸,CUP GAME瓶頸
  34. stat game
  35. AI複雜度
  36. BP
  37. raycast
  38. 物理
  39. 內存分配
  40. CUP RENDER瓶頸
  41. stat scenerendering
  42. 材質ID太多
  43. 重用材質貼圖,盡量把同一材質物體合成為一個物體
  44. actor太多,如果材質複雜這個因素還會加成
  45. 合物體,尤其是中遠處
  46. 每個actor上的feature太多,比如增加投影的屬性,增加custom depth的屬性
  47. 太多燈光投影(這裡投影的消費來自於需要計算哪些物體需要被投影)

找到瓶頸的方法

  1. stat unit
  2. disable一些stuff,然後看效率上的區別
  3. 一些可調的show flag
  4. 開關屏幕反射
  5. 開關AO
  6. 開關AA
  7. 開關bloom
  8. 開關延遲燈光
  9. 開關燈光類型
  10. 開關動態陰影
  11. 開關GI
  12. 開關後期
  13. 開關環境反射
  14. 開關折射
  15. 開關貼畫
  16. 開關半透明
  17. 開關tessellation
  18. viemode
  19. ProfileGPU
  20. ProfileCPU
  21. stat game
  22. stat scenerendering
  23. Profiler

後期優化首選項:

  1. Scene color fringe;
  2. ambient cubemap,
  3. image based lens flares;
  4. LPV off;
  5. Grain intensity,
  6. DOF off,
  7. ssr off,
  8. or roughness 0.01;
  9. Motion blur off

最後選擇的參數需要應用到DEVICE PROFILES里或者BP里

減小 shader的 instruction的數量

減少Texture sample的數量:把經常使用到同一個物體上的Pattern合在一張貼圖上;去掉對質量影響很小的貼圖,比如Specular,AO在實際情況中平衡來使用

使用quality switch,sin, pow, cos, divide, Noise,多向量的計算總是大於單向量的計算

UE4里由於使用了延遲燈光,所以燈光的優化比前向渲染方便的多。最快速最有效的方法:使用靜態光源。

如果使用的事動態光減小 Lighting cull,半徑,衰減,Z INTERSSECTION, cone大小角度。總之盡量減少重疊

投影的開銷最大往往不是來自於pixel shader,而是來自於被投影的mesh面數太多,還會被燈光數量,投影物體數量放大

關閉投影的燈光;減小範圍或張角;減面,加LOD

r.Shadow.MaxResolution

創造性作假:

  1. 三角面:
  2. 遠處mattinpaiting
  3. 投影面片,畫在貼圖上

一個作品的優化不是一朝一夕的事情,需要確定目標配置:確定最低配置,配置範圍小,這樣的優化才更有針對性,並且學會在開闊的視野在設計時需要巧妙的避免不必要的內容,學會如何制定Budget:質量優先驅動;快速原型製作;分析制定

對內容製作者前期的培訓花費是值得的,完成這些工作之後,一個高品質的VR作品就會誕生。


VR眩暈

暈動症是由於你的眼睛不能夠明確同一個對照物的運動和身體運動在內耳形成平衡的之間的關係。中樞神經系統對這種壓力產生的應答是大腦中的噁心中樞活動,所以會有想吐的衝動。

我們大多是坐著或站著玩VR遊戲的,所以,凡是帶有運動機制的VR遊戲均符合暈動症發生的條件,這也就是為什麼很多場景體驗式的VR遊戲不會讓人感覺到頭暈了,因為場景體驗式的VR遊戲一般不會運動。

VR遊戲感到的眩暈、噁心感,根本原因在於當畫面刷新率不夠的時候,畫面的變化速度與身體感受到的加速度不一致,即觸發了暈動症。

所以,我們明確了VR會使人頭暈的根本原因:即人體視覺與體感的不協調。

這也就意味著,如果你想要做一款不會使玩家頭暈噁心的VR遊戲,以下三點是絕對不能出現在遊戲中的:

(1)盡量不要通過滑鼠或者手柄控制玩家所面對的方向,即盡量不用滑鼠或者手柄來代替玩家的脖子來進行轉頭這一動作

(2)不要讓遊戲內玩家視角的坐標運動加速度過大,即在玩家所處位置的每個方向上都不能有瞬間的加速或減速運動

(3)不要試圖營造那些本來在現實生活中就容易導致頭暈的場景。


一、對於硬體和技術提供者

因為視覺系統和前庭系統之間的聯繫是『同步的』,幾乎到了0ms的程度。

當你傾斜你的頭部、旋轉你的頭部,就會看見傾斜頭部、旋轉頭部後相應的畫面。

當你轉身,你會看到轉身的畫面。

這時,前庭感到你身體的運動,而視覺系統一毫秒不差地看到了與之對應的畫面。

下圖為:現實世界中,從你身體運動到眼睛看到畫面,延遲是0ms

而在VR中,你從你身體運動到你看到

當你轉動頭部時,IMU等感測器感到你的運動要20ms;

感測器將數據發給CPU要5ms;

CPU計算和模擬、GPU渲染共30ms;

顯示器顯示出來讓眼睛眼看要30ms;

……20+5+30+30=75ms

所以就有延遲了。

所以,從你『前庭感到運動』到『眼睛看到相應圖像』的時間差就是延遲。

最後的要求是延遲低於20ms;

—————————————————————————————————————

二、對於內容開發者

一個永遠保持穩定靜止的參考系——skybox

相關問題:為什麼VR遊戲玩完後會頭暈、噁心?


虛擬現實暈動症與你平時經歷的暈動症不同,這是一種由視覺誘發的暈動症。暈動症帶來的主要不適感是由於在沒有發生實際運動的情況下,虛擬環境給出了移動的視覺信息造成的,而大家所熟悉的一般暈動症是由真實的運動帶來的(如搖晃的船
舶帶來的暈船)。在這兩類情況下,都存在著視覺和前庭感覺間的衝突。此外,虛擬
現實暈動症還會產生在虛擬現實環境下特有的癥狀,如眼緊張/疲勞。有的使用者會在使用頭戴式顯示器短時間內產生虛擬現實暈動症,而有的人卻從不會產生這類症
狀。

虛擬現實暈動症給使用者和開發者帶來了嚴重的問題;不管你的軟體內容從根本上有著多好的吸引力,或是使用者有多麼急切的想體驗它,沒人願意因此去忍受虛擬現實暈動症。因此,理解這一問題的成因並採取策略最大程度的降低其發生幾率顯得尤為重要。不幸的是,虛擬現實暈動症的確切成因仍在研究之中(其他任何形式
的暈動症也一樣)。虛擬現實暈動症有著複雜的病理成因,這些原因都是產生不適感的充分條件但不必要條件,而要真正實現虛擬現實暈動症的「治療」卻要把這些問題全部解決。

虛擬現實暈動症有一系列癥狀,但主要特徵有:

迷失方向(包括共濟失調,一種平
衡喪失感)

噁心(應該是來自於視錯覺,對自身運動的虛幻知覺)

動眼神經不適(例如,動眼神經為糾正視覺錯誤而連續運轉,帶來眼部疲勞)。

虛擬現實暈動症的理論

感覺衝突理論是虛擬現實暈動症理論中最被廣泛接受的,這一理論認為視覺和身體
(前庭感受和本體感受)運動知覺間的不匹配導致了不適感。換句話說,就是視覺告訴你在移動,但身體感覺仍在原地。這是當前VR的基本現狀,例如我們想扮演
走路的感覺,我們只能從視覺上實現,而使用者不用真的去走。有的廠商積極嘗試著通過運動平台和跑步機的方式給使用者帶來適當的運動感,雖然這些產品可能會帶來更複雜的情況和新的問題。

此外還有兩個截然不同的理論,給出了虛擬現實暈動症成因的其他解釋。

第一種為毒理論,認定是由於攝取了毒素所以前庭感覺系統和視覺系統才會產生衝突。該理論認為,噁心和嘔吐是一種感官衝突,是為了讓動物吐出胃內的毒物或是避免攝入任何有可能包含毒素的食物而進化出的適應行為。而暈動症的形式被理論解釋為:
由於使用者身體感受到感官衝突與中毒時的感覺一致,使用者的身體便認為自己中毒了,因此就會做出噁心和嘔吐的反應。

第二種為姿勢不穩理論,認為持續性的姿態失控導致了虛擬現實暈動症及其他類型
暈動症,因為使用者主體接受到了矛盾的信息導致人體常規的姿態控制策略失效。雖然這套理論無法說明為何不穩定狀態會導致暈動症,但這套理論在預知何時會發
生什麼程度的虛擬現實暈動症及其他類型暈動症上卻是有效的。

增加虛擬現實暈動症的因素

我們很難找到某個導致虛擬現實暈動症的特定原因;不同的使用者會有不同的體驗, 而癥狀可能需要一段時間(從幾分鐘到幾小時)才能顯現出來。作為一個VR設計師, 你會花上大量時間沉浸在VR世界裡,而長時間暴露在虛擬環境中會讓你的大腦對虛擬現實的暈動效益變得不那麼敏感。因此我們預計那些專註的VR設計師和使用者會 沒有其他使用者那麼敏感。從另一方面來說,在判斷所設計內容會否產生不適感時, 不考慮那些未曾習慣於虛擬環境的使用者的反饋意見,則會產生問題。

暈動症敏感度因人而已,並與發生虛擬現實暈動症的敏感性是相關的。這意味著那 些知道自己容易暈車、暈船或有其他暈動情況的使用者就應該小心使用VR設備。

運動的速度和加速度的大小

運動的速度與虛擬現實暈動症的發病快慢成正比,但不一定與後續癥狀的強度和惡化相關 。較慢的移動速度一般情況下會讓人舒服,而真正值得我們警惕的是我們內耳前庭系統所感知到的加速度。由視覺而不是前庭器官傳達的加速度(無論是任 何方向上的線性加速度或是角加速度)會構成感官衝突,從而帶來不適感。非正式的研究表明,為達到同樣的移動速度,瞬時加速度會比持續性、漸進性的加速度感覺更舒適。

不適感與加速度的頻率、大小及持續時間構成函數關係。因為任何一個階段的加速度都意味著一個階段的感官衝突,我們最好盡量避免這樣的情況。

控制的程度

將鏡頭的控制權從使用者手中拿走或是讓鏡頭的運動與使用者控制的不一致,會帶 來虛擬現實暈動症。一些理論認為,可預知和可受控的運動在防止暈動症中起到作用,而這一原則似乎同樣適用於虛擬現實暈動症。因此,不為使用者所控制的鏡 頭移動(或急停動作)將會帶來不適。

如果你設置了一個重大事件讓使用者觀看(比如一個過場動畫或關鍵環境事件),避免代他們將目光移過去,而是嘗試提示他們自己將目光轉移過去,比如讓電腦控制 的非用戶角色(NPC)看向這些事件,或是以音效提示使用者,又或是將一些任務 相關的目標放置在事件周圍(例如敵人或是可拾取物)。如前所述,不要將使用者視角鏡頭和使用者的運動分離開。

時長

你在虛擬環境里待的時間越長,越容易產生虛擬現實暈動症。盡量讓使用者可以在任何時間點停下休息,然後從剛才停下的地方再繼續。適當的在遊戲存儲點提醒使用者休息下,這樣能避免使用者在你的遊戲沉浸太長時間了。

高度

使用者的高度,也就是他視線的高度,也會是虛擬現實暈動症的成因之一。如果使用者的視線比較低,地面會佔據他的很大一部分視野,而且地面會在一直動。這在視覺上會產生比較劇烈的感覺。這樣的話,會讓使用者不適。同樣的道理,走長段的台階也會讓人有這種強烈的視覺感受而感覺不適。

雙目視覺顯示

在一定的情況下,立體畫面會讓使用者的眼睛聚焦到一定距離的點,但眼睛的晶狀體又沒有聚焦到那個點。正因為這個原因,我們不建議強制使用者去長時間的看一個近距離的物體。有些人覺得看立體畫面很不舒服,而且有的研究還表示平面顯示可能比立體畫面讓人更看了更舒適。然而從早期的Oculus Rift的反應來看,還是立體畫面要比平面畫面更舒適。現在關於到底怎麼使用平面畫面內容比較好還沒有定論,需要更多的研究。這個問題也因為頭部轉動的問題變得更複雜了,因為左右眼在轉動的時候接收的信息不一樣。安全起見,現在不建議使用平面顯示的內容。

視場

大的視場更容易產生虛擬顯示暈動症,原因有二。第一,運動的感覺在頭盔這種硬體里讓人感覺更強烈,讓人對器件光學瑕疵和閃爍很敏感。第二,一個大的視場也意味著更多的視覺信息。這麼多的視覺信息告訴使用者他在運動,身體感官和視覺的衝突就更強烈了。降低視場可以減低虛擬現實暈動症,但也降低了沉浸感。所以應該給使用者一個方式來根據他自身的情況來調節。HUD之類的直接列印在視場上的信息應該不被影響, 完全可以顯示在dFOV外。用一個駕駛艙來限制使用者的視場而讓他覺得自己在一個封閉空間里坐著,也能達到同樣的降低暈動症的效果。不過還是需要更多的研究來證明駕駛艙到底有沒有用。

不正常的虛擬場景內的頭部轉動也會讓人不適,比如使用者轉了5度,但在虛擬場景 里的視覺轉動了10度。這種不一致會影響前庭眼動反射的正常工作。人的眼睛和前庭一起工作來決定在你頭轉動的時候眼睛要跟著怎麼轉動,這樣來保證視線的穩定。如果虛擬場景里這種補償機制失調了,就會讓人不適,甚至在不用Oculus Rift後還會有覺得不適。

延遲

以前的研究對於延遲和暈動症的關係是有爭論的。很多專家建議最小化延遲,因為 頭轉動和視覺的延遲會產生感官衝突,並影響前庭眼動反射機制。不過也有一些研究說,只要延遲是恆定的,那不管是48毫秒還是300毫秒都一樣。在駕駛艙里,因 為變數太多,就算是恆定的延遲,時間越長也會越暈。雖然做為內容開發者,很多延遲是控制不了的,比如顯示刷新率,硬體延遲等。不過一定要保證你開發的內容在推薦配置下不會產生額外的掉幀和延遲。很多遊戲在畫面渲染物件太多太複雜的情況下就會掉幀。這在現在看來問題不大,但在虛擬現實里就會讓人很不舒服。

變形復原

Oculus Rift里的鏡片會把圖像變形,而SDK會在渲染管線里把它補償復原掉。這種復原很重要,一定要完全按照SDK和demo里提供的方法去做。我們的研究對於變化 很敏感。有些變形看上去對了,但也會產生方向迷失和不舒適的感覺,所以關注細 節很重要。所有跟變形復原相關的參數一定要跟硬體匹配,不能讓使用者去自己調。 SDK的demo里讓你去調只是為了讓你看下調整後會是什麼樣子。

我們一直在調節這些參數來匹配Oculus Rift的鏡片,而且將來也將繼續去完善它。 所有的開發者都用該用這些官方參數來做圖像變形復原。

閃爍

閃爍在刷新率低於60赫茲的CRT和OLED顯示屏上最常見。Oculus Rift開發版1是 LCD屏,而且刷新率達到了60赫茲,所以不會有閃爍問題。不過這裡還是要強調, 閃爍是造成虛擬現實暈動症很主要的一個因素,而且會讓人很不舒服。這種情況在 大視場和高亮度下就更明顯了。雖然適應一段時間後,閃爍造成的問題會減弱,但 還是會讓人頭痛和視疲勞。這個問題對於內容開發者基本上做不了什麼,這裡只是 跟大家說明下。千萬不要開發很閃的東西給使用者去看。高對比度,在1-20赫茲下 的閃爍可能會引發癲癇。

年齡和暈動症的關係

暈動症(暈船暈車)對於越年紀小的人越明顯,但現在還不知道同類的理論是否也適 用於虛擬現實暈動症。如果是一個模擬現實中已有操作的虛擬現實體驗,現在的研究反而表明年長的人會比沒有經驗的小孩子更受虛擬現實暈動症影響。從DK1使用者的個人傳聞來看,年輕人也確實比成年人對虛擬現實暈動症更有抵抗力也更容易恢復。如果是這樣,那說明暈動症的年齡相關因素和虛擬現實暈動症不一致。但這些傳聞和研究裡面,也沒有排除其他的可能,比如年長的人更容易決定不玩Oculus Rift,也有可能是小孩子對於感官衝突的感受沒那麼明顯。

在一個基於1000名15-53歲的人的實驗中,表明一個人對於暈動症和虛擬現實暈動症的耐受程度成正比,但年紀因素沒有結論。這隻能說明,我們可以根據一個人暈動症的情況來預測他可能的對於虛擬現實暈動症的耐受程度。

經驗和虛擬現實暈動症的關係

一個人體驗虛擬現實的時間越多,越不可能產生虛擬現實暈動症。現有理論是,因為人自身(無意中)學習了一套機制來體驗虛擬場景和內容。比如,我們的大腦掌握了怎麼去重新解讀視覺誤差的機制來使運動更穩定。這樣說來,好消息是開發者可以為已經習慣了虛擬現實體驗的用戶開發更激烈的體驗。但壞消息是,對於大部分用戶,需要時間來習慣Oculus Rift和你的遊戲,才能很好的體驗這些內容。

這裡同時引出了幾個矛盾。首先,那些一直在測試自己做的內容的開發者會比新用 戶更接受虛擬現實體驗。這樣的話,就需要找一批對虛擬現實暈動症耐受程度不一 樣的新用戶,來測試你開發的內容到底有多舒適。第二點,不要把新用戶一上來就 扔到很激烈的虛擬現實體驗中。你應該先讓他們做點微弱,節奏慢的互動來習慣下。 如果能把這個指南里提到的那些應該給使用者去控制的參數讓他們自己去調節就更 好了。第三點,如果你的遊戲里有比較激烈的內容,那你應該事先提出警告,讓使 用者自己去選擇最能接受的方式去體驗。

以上內容來自 https://developer.oculus.com/documentation/intro-vr/latest/concepts/bp_intro/

VR-China 中文社區 (VR China 中文社區 遊戲下載) 翻譯


參看我去年的提問:製作3D遊戲時如何避免或減輕玩家的暈3D現象? - 遊戲設計


最近在跟進一款VR項目的遊戲測試,也查閱了相關資料覺得這篇文章對大家應該有幫助:VR很爽,可是暈眩問題怎麼破?

技術上提供不了什麼幫助,只能從自身體驗角度來談談自己對於降低眩暈的想法:

1.用戶視野一定要寬闊,不能在狹小的空間,不然很容易造成一種壓迫感;

2.視野中的場景物件不宜偏多,擺放不宜密集,因為用戶在360度全方位觀看時由於頭部轉動速度相對較快,一下子視野內出現大量物品,大腦接收不過來,這時我會覺得胸悶,堵得慌;

3.降低操作靈敏度,使用戶移動、操作速度處在一個接近真實環境,從視覺、聽覺上減少偏差;

4.最好能夠結合體感設備進行VR遊戲,跟隨視野內場景進行轉動、移動;

5.提升遊戲運行幀率,降低延遲……

暫時總結這麼多~這一段時間下來也逐步適應了,測試過程沒有很明顯的眩暈感覺(免疫了吧?哈哈)


沒有試過 VR 設備,來個紙上談兵,以當前一些有對焦機制的 3D 遊戲來舉例,遊戲中的焦點在屏幕中心,雖然人眼的焦點也在視野中心,但是人眼會轉啊,不可能總盯著屏幕中心,而且遊戲的對焦時間也不可控,於是就產生了對焦不同步,於是就暈了。

私以為合理的做法應該是眼球追蹤,查了下確實有打算這麼做的。

但,對焦的依舊是各種圖形演算法,並不是眼球,實際焦距並未變過,先不論 VR 體驗會不會造成一些諸如壓抑感之類的感覺,就健康而言,長此以往下去,可能會造成近視,或是近乎喪失在現實世界對焦的功能。

於是我覺得最好的方案應該是設計一種能真正模擬自然光壞境的屏幕。

但,成本肯定巨昂貴,我覺得還是以現在的「偽 VR 設備」(我姑且這麼稱呼)作為平台大力發展 3D 技術,然後同步發展對人腦神經信號的研究(目前已有低像素的人工眼睛),最後一合併成「真 VR 設備」,某個叫桐谷和人的傢伙應該就快出生了:)


感覺大部分人並沒有評價題主里說的技術。

這裡用的光場技術,我認為能解決很大一部分問題。

大部分人對眩暈的原理的分析是基於遊戲,也就是基於同一深度平面渲染得來的。因為畢竟我們看的電腦屏幕,手機屏幕等等都是平的。

我個人不負責任的猜測是,暈眩主要來自於長時間對焦在近處,而同時看到圖像與大腦接受的場景反差較大,所以造成了眩暈。

利用光場的顯示技術,能夠達到靜態圖像,動態對焦的效果。即顯示一個靜態的物體是,當你眼睛對焦在遠處則物體的遠處清晰,其他部分模糊,眼睛對焦在近處則近處清晰,其他部分模糊。

很大程度上減小了眼睛接受的信息量,同時眼睛能夠自由的對焦,不存在一直緊盯近處屏幕的弊端。

這個技術也並不新,2014年nvida的工程師已經做出了一個prototype,之後就跳槽去oculus了。

這篇paper是利用他們之前的屏幕技術,做了一個vr顯示的應用。


雖然說專業在這方面 但是從現在的學識來看 我還是個外行吧。

從一個外行的角度,我覺得要是五分鐘會讓人眩暈,那如果這五分鐘能讓玩家感覺過去了一個小時,兩個小時乃至一天不就好了嗎。就像神話劇裡面的天上一天,地下一年的感覺。


看到的畫面與身體無法同步,就容易暈。舉個栗子,畫面中你在奔跑,實際上沒有,那就會暈。如果畫面中你在開車,實際上開車的時候身體是可以不動的,只是踩油門剎車,這樣就不容易暈。在現階段VR設備只實現欺騙眼睛,目前的外設做不到欺騙大腦(身體動作無法同步)的情況下,還是很難做到所有類型的遊戲不暈炫的。


推薦閱讀:

虛擬世界會不會代替現實世界?
HTC VIVE有沒有必要配高配電腦?
在未來,當VR,AR技術發展到一定程度時,旅遊業會陷入衰退嗎?
HTC Vive該怎麼念?HTC Vive的讀音是什麼?
在Gis、VR的浪潮下,當今年輕人該如何逐浪並自保?

TAG:互聯網 | 人機交互 | 增強現實AR | 虛擬現實VR | HTCVive |