Hypereal Pano VR頭顯試用記
前不久收到了一個Hypereal出的Pano VR頭顯和控制器。驚喜之餘,打算從圖形從業人員和開發者的角度,分享一下Pano的使用體驗。另外,最近Pano正在大促,原價3299,現在全套2699,2699,2699,走過路過不要錯過!

開箱
主要設備是一個頭顯,一個追蹤攝像頭,和一個遊戲手柄。額外設備是兩個稱為Sens的手持控制器,以及它的追蹤攝像頭。大部分遊戲都是設計為通過Sens來操作的,所以整個套餐一起使用,效果更佳。

下面開始開箱了。包裝很精緻,各種線都仔細捆好收納。手柄的接收器在電池倉里。

拿出來是這樣的,頭顯、攝像頭、手柄、控制器。

組成
頭顯的部分,頭帶是硬質的環,按下按鈕可以拉開,戴上後自動收緊。還可以通過旋鈕微調。戴上Pano後,更像是放在頭上的感覺。沒有Oculus DK1和Vive那樣軟質鬆緊帶產生的束縛感,也不需要那條從頭頂經過的鬆緊帶。

頭顯底部的按鈕可以調節屏幕到眼睛的距離,不同視力的人可以通過這個調整顯示焦距。默認情況下,感覺重心靠後,或者說靠臉的位置。不會覺得設備在往下墜。往外拉出一些的話,中心會略微前移。頭顯周圍一圈橡膠的部分會盡量保證封閉,減少漏光的現象。

頭顯正面比較平滑,應該是隱藏了一些紅外追蹤點。沒有前置攝像頭,安全區域是在設置的時候通過追蹤攝像頭劃分出來。後面會提到。

頭顯和主機通過HDMI和USB 2.0連接。主機的視頻和音頻通過HDMI輸出給頭顯,USB把頭顯的感應器信息傳給主機。

頭顯上還有一個耳機插口,可以從這裡把音頻信號接到耳機。別忘了HDMI是視頻音頻都傳的。

手柄的結構類似Xbox的,表面是半透明材料,可以看到內部的電路。

Sens上雖然沒有標左右手,但扳機的位置決定了,如果拿錯的話第一時間就能知道。即便帶著頭顯,靠觸覺也能摸出來。

追蹤攝像頭是USB 3.0的。所以要求主機能提供兩個USB 3。

從硬體規格看,Pano也做到了2160x1200,刷新率90Hz。對主機的硬體要求略低於其他家,只要i3 + NV GTX 960。
使用
Hypereal有自己的應用商店,裡面提供了一些支持VR的遊戲和軟體。因為這個頭顯也支持標準的Steam VR,在設置上打開就能用Steam里有的VR遊戲。

設備設置和其他有追蹤攝像頭的系統一樣,對位置和角度有一定要求的。首先,兩個追蹤攝像頭需要擺在間隔一米的地方;其次,它們需要能看到整個安全區域。設置中最重要的一步是把控制器放在耳朵的部位,追蹤到以後再伸直手臂對著屏幕的方向,再次追蹤。如果這步中任何一點失敗了,就得再做一次。所以最容易避免這個麻煩的布局是,攝像頭放在電腦桌上,電腦桌前方留出一片空地作為安全區域。



完成定位之後,需要用控制器畫出安全區域。能連成完整的輪廓之後,就算框出安全區域了。帶上頭顯後,可以看到一個虛擬的線框牆,圍繞著安全區域。平常看不到,但接近的話就會立刻顯示出來。

設置都完成之後,就可以在系統里看到每一個組件是否連接正常。

在帶上頭顯的時候,我發現在頭顯內有個感應器會開啟,檢測你是否帶著。

經過了這些設置之後,終於可以開始玩遊戲了!總的來說,VR的體驗符合預期。我之前用過Oculus DK1和HTC Vive。Oculus DK1的解析度只有1280x800,單屏。有效像素其實挺少的,可以很明顯看到像素之間的間隔。60Hz的刷新率,決定了在快速運動頭部的時候,有感覺得到的滯後感。再加上DK1是用普通的凸透鏡聚焦。對於不同近視鏡度數,得換不同的鏡片。戴著眼鏡用又會很擠。Pano在這方面和Vive相同,2K的解析度,看不到像素點。雖然我的顯卡只有GTX 960,剛好趕上最低要求,90Hz的刷新率還是可以做到的。在運動中不會出現明顯的延遲,戴了半小時也沒出現眩暈的感覺。再加上用菲涅爾透鏡聚焦,重量和厚度都大幅度降低了。最贊的是那個一鍵距離調節的機制,讓我戴著眼鏡也不妨礙使用。
菲涅爾透鏡 VS 凸透鏡
我今天玩的是從Hypereal的應用商店能下到的一些免費遊戲。首先是TowerVR,一個塔防遊戲。用控制器建防禦,操縱英雄。

CastBox是個3D創作工具。通過控制器在空間內建模、選擇材質、選擇顏色。還有很多的預製的模板,讓用戶直接擺放。

Fist of Physics,和機器人拳擊。

就在這時候,慘劇發生了。我的一個直拳打到了顯示器的一角。當時就裂了一塊。幾個小時後壞塊就擴散到整個顯示屏了。所以大家玩VR要小心,在安全區域之外也要留出足夠的空間。

除了運行VR程序之外,還可以用一個叫Skybox的播放器播放全景視頻、立體視頻、在家看IMAX等。本來我還打算自己寫一個用頭顯播放立體視頻的程序,結果果然已經有人做了。

還有一個有意思的程序叫Hyper/Scope,可以把桌面投射到虛擬的超級大屏幕。這麼一來,傳統程序也可以在VR頭顯里用了。

開發
Pano用的是OpenVR作為API,所以只要程序用了OpenVR SDK,就能無縫接入。KlayGE也在這個版本里加入了一個支持OpenVR的任務。原先KlayGE已經可以通過Oculus SDK支持Rift。同樣的VR機制,接入OpenVR就能在更多的設備上使用。
在引擎層,也有不少事情可以針對VR做出優化。最主要的三項有:
1. 時間插值。
一般來說,遊戲喜歡關掉垂直同步,用盡量快的速度進行渲染。在每次渲染開始的時候,設置好攝像機位置、視角等參數,作為那一幀的視點。而對於VR來說,垂直同步應該開啟。而且渲染開始和顯示之間那一點點的時間間隔,也可能造成攝像機參數的不同。這裡可能需要根據用戶運動做一個預測,也可能需要用image wrap的方法把渲染開始時候的攝像機參數wrap到顯示的時刻。這對減少眩暈感很有幫助。
2. 多解析度渲染。
人眼敏感的解析度不是均勻的,中間高周圍低。所以如果到處都用一樣的解析度,對周圍來說是種浪費。如果能把整個圖像劃分成九宮格,周邊區域降低解析度,就能提高渲染效率。比如下圖這種方式,來自於NVIDIA的VRWorks。單眼1080x1200的解析度,可以縮小成810x900。也就是像素數量減少了44%。

3. 單遍左右眼渲染。
VR需要左右眼兩幀數據。如果刷新率是90Hz,就會相當於需要180Hz的渲染速度。這是普通渲染的60Hz的3倍。對引擎來說壓力不小。有個可以做的優化是在GS裡面把每個三角形拆成兩個,分別用左眼和右眼的矩陣進行變換,再分別輸出到texture
array的兩個slice里。這樣只要一遍,就能同時得到左眼和右眼的渲染結果。速度幾乎提升一倍。推薦閱讀:

