背景介紹
2015年上半年,我們團隊結合之前積累的體感交互經驗, 開始進行VR遊戲的預研工作。結合之前積累的體感交互經驗,開始進行VR遊戲的預研工作。在這近一年的時間裡,一方面從外界感受到瞭一股虛擬現實快速發展的潮流,另一方面也體會到身邊很多人對VR遊戲的瞭解非常有限。現在我們自己的VR遊戲Demo已經完結,技術上驗證瞭在當前的硬件條件下,開發高畫質遊戲的可行性。當然,優質的VR遊戲需要大傢共同的努力,我們也希望更多的人參與進來。在此把我們在開發過程中學習到的,體會到的,以及所期望的進行一下總結,希望對大傢有所幫助。
圖片為我們的VRDemo:Comet
VR硬件原理及現狀
狹義上的”VR硬件”,特指具有沉浸感的頭戴顯示器。它有三個基本特征:
全3D的立體顯示:附合人眼觀看現實物體的習慣,能夠”以假亂真”
完全虛擬的畫面:需要屏蔽外界光線的幹擾,你所看到的都不是現實的東西。有些人可能覺得”增強現實(AR)”更高大上一些,但是對於遊戲,我認為還是更傾向於VR。玄幻,魔幻,科幻,一切皆為虛幻。
不受限制的視角方向:視角方向跟隨頭部轉動和移動,不同於之前的頭戴式顯示器,視野非常廣
當然,僅僅是這樣的體驗,並不能說是完美的”虛擬現實”,這也是很多人說硬件不成熟的理由。但是,在保證體驗良好的的情況,目前的硬件已經滿足做出高品質遊戲的條件。下面對當前的硬件做一些技術分析:
VR顯示的基本原理
首先,我們來一下滿足上面提到的三個基本條件的最廉價產品,Google的Cardboard:
插入手機做為顯示屏幕,通過分屏的方式處理雙眼的畫面,達成立體畫面顯示。
借助紙殼屏蔽外界光線幹擾,通過透鏡就可以觀看到手機渲染的虛擬畫面。
依賴手機內置的陀螺儀,可以模擬出頭部轉向時視角的變化。另外,凸透鏡在一定程度上增加瞭FOV(FieldOfView,視場角)。
Cardboad以低廉的價格,讓很多人提前感受到瞭VR的魅力,並衍生出瞭很多塑料殼的版本。不過從體驗上來說,Cardboard並不能算是一個合格的VR硬件,很多人在試玩過後,就自然而然地以為”VR就是那麼回事”,“目前硬件還差得遠”,“也就新鮮幾分鐘”等等,從一定程度上誤導瞭很多人對VR的認知。
那Cardboard存在哪些問題呢?
嚴重的畫面延遲:手機陀螺儀模擬的轉向精度和響應速度都不滿足VR的要求,造成渲染的畫面跟不上轉頭的速度,加重瞭暈動癥。
糟糕的畫面表現:手機性能不足以支撐高畫質高幀率的3D畫面渲染,隻能呈現出一些簡單的卡通風格畫面,達不到”以假亂真”的程度,影響瞭沉浸感。
缺乏自然的交互:由於手機的限制,目前沒有配套的頭部和手部的定位方案,從交互上很難做到讓人滿意的程度,隻能依賴藍牙手柄這樣的傳統輸入設備。
當然,還有一些其它的小問題,比如手機發熱,起霧,過重,畫面變形等等,這些雖然不是影響體驗的主要因素,但在使用上也是挺煩人的。接下來我們看看Oculus針對這些問題是怎麼解決的,或許這也能解釋兩者之間的價格差異為什麼這麼大。
不受限制的視野
如果需要達到逼真的視覺體驗,視野必需盡量接近真實。這需要滿足兩個條件:一是接近人眼的FOV,二是跟隨頭部運動的視角。
上圖左很直觀地說明瞭人眼的FOV特點:雙眼的覆蓋范圍是不同的,兩隻眼睛加起來可以超過180度。當然,在平面的液晶屏上很難做到這種效果,所以目前的主流VR硬件(不包括Cardboard)大多是用凸透鏡做到瞭100~110度左右的FOV,雖然沒有達到自然視野的程度,但相對於傳統FPS遊戲(FOV50~60度)來說,是個巨大的進步,直接影響到UI設計,交互,性能,場景設計,鏡頭等方面。為瞭解決近距離通過透鏡觀看畫面的變形問題,我們需要對畫面進行反向的變形校正:
下圖就是正常雙視口渲染的畫面,經過BarrelDistortion變形後的效果(在很多Cardboard遊戲上,這一步是省略掉瞭的):
圖片來我們的VRDemo:Comet
但是,FOV越大,光線的折射率也就越大,光線的散射現象也就越明顯,給人的感覺就是畫面邊緣的像素出現瞭重影。
所以,變形後還需要對色散問題進行校正,即ChromaticAberration。下圖中我們可以看出邊緣像素的RGB三基色位置是錯開的,這樣通過透鏡觀看時才不會出現色彩分離的奇怪現象:
圖片來自我們的VRDemo:Comet
空間定位能力
頭部的運動追蹤,Oculus增加瞭一個外置的紅外攝像頭用於頭顯的空間定位,它同時也可以用於雙手控制器(OculusTouch)的定位。
當然,這種定位方式也存在FOV的問題,隻適合桌前的小范圍運動。對於大范圍的移動,HTCVive的Lighthouse技術更有優勢,可以在5x5m的范圍內自由移動:
空間定位技術的引入,直接改變瞭遊戲的操作方式,從”指令式”操作逐漸變成類似”體感”操作的自然交互體驗,UI也就不再拘泥於2D,開始向3DUI轉變。
主流VR硬件參數
這裡有一張表格,可以大體上說明2016年的主流VR硬件的參數(DK2和GearVR是很多人都體驗過的,做為對比也加進來):
從中表格中提供的數據,結合一些現場體驗可以分析出一些關鍵信息:
三傢VR設備的FPS和FOV差異並不大,這方面在體驗上差距很小。PSVR的120FPS是60幀插值出來的,並不是實際的渲染幀數。
三傢VR的控制器都趨於一致:雙持手柄,有空間定位能力,可以模擬雙手操作。這就為我們進行VR遊戲的交互設計提供瞭很好的指引,引擎層面可以進行統一抽象,不用再為每個設備單獨設計。
分辨率相對於DK2都有改善,但受限於OLED屏幕技術和硬件性能限制,還達不到視網膜屏的程度,像素點肉眼仍然可見,但已經不會影響遊戲畫面的觀看。
PSVR由於受限於PS4的機能限制,無法在分辨率上占有優勢,但是可以通過像素排列和鏡片技術減少紗門效應(ScreenDoorEffect),即像素間空隙(OculusDK2上非常明顯)。
每傢的硬件都會依賴一個內容發行平臺,與主機遊戲的運作思路很像,這也決定瞭VR遊戲的設計思路。
另外值得關註的是GearVR,算是最早商業化的平臺硬件,提供瞭比Cardboard更好的體驗,但同樣受到機能的限制。預測手機VR方案幾年後會推動VR設備的普及,畢竟手機是人人都有,買個配件的成本還是可以被很多人接受的。
Motion-To-Photon延遲
有一個參數是表中沒有的,那就是延遲。我們先來給出定義:從用戶開始運動到看到屏幕上產生相應變化所需的時間:
從上圖可以看到,從傳感器采集,經過線纜傳輸,遊戲引擎處理,驅動硬件渲染畫面,液晶像素顏色切換,到人眼看到對應的畫面,中間經過的每一個步驟都會產生延遲。要想達到理想的狀況,需要硬件和軟件優化的緊密配合。目前公認的可以被多數人接受的VR延遲是20ms,很多VR硬件隻是傳感器和液晶屏的時間就已經超出范圍瞭。
對於VR硬件來說,低延遲才是核心競爭力。但目前延遲缺少一個測試和評估標準,所以很難通過公開的數據評估每個設備的體驗效果。如果以20ms為一個臨界值,可以說其它品牌的VR設備大部分都不合格。
VR體驗目前的主要問題
VR遊戲在當前的硬件條件下,仍然存在一些問題。我們做為開發者,必須搞清楚每個問題產生的原因,能夠解決的解決,不能解決的回避,在此基礎上才能做出良好的體驗。
暈動癥
“暈”可能是第一次體驗VR的多數人最直接的感受,就像暈車暈船般的感覺。很多人可能隻是因為這個原因就會放棄對VR遊戲的期待,掉入”VR目前不成熟”的圈子裡。那為什麼VR遊戲那麼容易暈?
1:你沒動,畫面動瞭:VR遊戲體驗者通常身體是靜止不動的,如果遊戲中看到的是各種加速/旋轉/震動等,正常人都會受不瞭,跟暈車暈船的原理是一樣的
2:你動瞭,畫面沒跟上:這就是上文提到的延遲,很多時候,硬件附合要求瞭,遊戲卻幀數不夠,同樣也會造成嚴重的延遲現象。
3:體質原因,比如有人有恐高癥,放到一個懸崖邊的虛擬場景裡,也會觸發心理和身體的反應。
原因1可以從遊戲設計上進行回避,但是目前來說很多需要跑步和跳躍的遊戲受限比較大。原因2的話,主流硬件在延遲上都是滿足要求的,做為開發者更多的是需要做好性能優化。原因3,從我們組的幾個人感受來看,隨著體驗次數的增加,癥狀會越來越輕,這表明人的身體是可以適應的。而且,適當地增加一些讓身體有所反應的遊戲場景,也不失為一種樂趣。
缺乏好的交互方式
VR頭戴顯示器看以看作是一個顯示輸出設備,那對於遊戲來說,還有另外一種重要的硬件:輸入設備。在VR遊戲中,鍵鼠的操作方式首先就可以放棄瞭,因為看不到,隻能盲操作。遊戲手柄的話算是一種折衷方式,但並不能發揮出VR的潛力。理想的輸入設備其實是雙手,這也是最自然的方式。遺憾的是,不管是Kinect,還是LeapMotion,都無法完美地支持雙手交互的精度。所以,目前主流的VR控制器還是以雙持手柄為主,預計要2016下半年才開始上市。在拿到OculusTouch之前,我們嘗試瞭基於Kinect體感的VR交互方式,雖然並不完美,但已經能夠看出未來的交互設計雛形瞭。
GPU性能不足
BarrelDistortion變形後帶來一個問題:中心區域像素分辨率的損失,也就是說中心區域的像素被放大瞭,邊緣區域的像素被壓縮瞭。但是人眼對於視野中心的像素清晰度非常敏感,為瞭保證清晰度,需要把原始渲染分辨率提高,以保證變形後的畫面能夠達到液晶屏的像素密度。
以OculusRift為例,屏幕分辨率為2160×1200,渲染分辨率需要長寬各提高到140%,即3024×1680,再加上90FPS的幀率要求,每秒需要渲染的像素達到瞭4。5億個,相當於當代主機(XboxOne,PS4)遊戲的7倍,與4k分辨率遊戲所需要的硬件差不多。為瞭保證體驗,他們規定瞭一個最低配置,叫做OculusReady的標準:CPUi54590,內存8G,顯卡GTX970。
雖然PS4的渲染性能遠遠達不到GTX970的程度,但是相對於PC來說,它可以提供一致的體驗,這對VR來說非常重要。畢竟就算你的遊戲畫面再好,如果一玩就暈得想吐,那也不會是一個好遊戲。不過好在離VR普及還有一段時間,足夠讓OculusReady的PC成為大眾配置瞭。
佩戴舒適度
很多近視玩傢會擔心不能使用,其實主流的顯示設備都可以戴眼鏡觀看。至於戴著舒不舒服,那需要在工業設計上進行迭代優化。就目前來看,SONY傢的頭顯最舒服,Oculus傢的手柄最舒服,HTC傢的功能最強。除瞭平臺獨占的VR遊戲,多數會同時兼容三傢的設備,所以從體驗上來說,差別不會太大。
VR遊戲與傳統3D遊戲的開發差異
VR遊戲在開發制作上的差異,遠遠沒有很多人想象的那麼大,更多的是設計上的思路轉變。所以,想要開發VR遊戲,前提是能夠開發一個3D遊戲,核心還是遊戲本身,VR隻是體驗上的增強。如果要寫一個”VR遊戲開發教程”,那麼其中90%的東西,與VR並沒有直接關系。但是,這10%的差異,卻是VR的核心競爭力,因為它可以帶給你”前所未有”的體驗,為我們進行遊戲玩法創新提供瞭非常大的發揮空間。
玩法
與主機遊戲類似,註重核心體驗,即Camera,Control,Character。可能很多人會覺得VR遊戲隻適合做FPS,其實並不是這樣。隻要保證沉浸感良好,什麼類型的都可以做,RTS,MOBA,AVG,MMOG等等都可以。需要關註的核心點是Camera和Control,這直接關系到玩起來暈不暈,能夠玩多長時間。隻有保證操作體驗和沉浸感過關,遊戲的玩法才有意義。
當然,VR給我們也提供瞭一些新的特性,可以用於玩法設計中:
由於頭部運動追蹤的存在,點頭和搖頭的操作是可以被識別的,這就意味著很多Yes/No的操作可以直接通過頭顯輸入。
頭部的朝向可以靈活變化,當你”盯”著某個物體看時,可以針對這個行為做出相應指令,具體可以參考GearVR上的Land’sEnd。
由於360度視角方向不受限制,我們可以在背後做一些場景改變,讓每次轉頭看到的場景都不一樣,既能做成驚喜,也能做成驚嚇。
頭部不僅僅可以轉動,還可以配合身體小范圍移動,比如SummerLesson中湊近NPC,NPC會害羞…Vive的一個上帝視角Demo可以蹲下看到地底下打地道的小兵。
VR渲染可以調整WorldScale,即世界單位縮放,相當於動態調整自身相對於場景的比例,既可以做成巨人的視角,也能做成蟻人的視角。
因為VR世界中的單位可以與現實不一樣,那麼一些類似”縮地術”的功能也變成現實,通過身體小范圍的移動,達到虛擬世界中的大范圍移動效果。
雙手控制器的存在可以模擬一些抓,扔,摸,打等的操作,撿起一個道具上下左右仔細看也是很有意思的一件事,可以把迷題設計在道具的隱藏角落裡。
VR中有瞭雙手的存在,很多解迷機關就不再是簡單的按一個鍵,各種零件組合,機械,繪畫等對於雙手控制器來說都是很棒的操作體驗。
控制器的握持感,非常接近於遊戲中的手持武器,比如槍械,比如刀劍,這比握著一個鼠標或者手柄的感覺強多瞭。得益於高精度的傳感器,做出具有競技性的操作玩法也不是不可能。
雙手具有天然的空間感,一些建造類的玩法也非常適合,比如MineCraft,比如Besiege等,UE4甚至嘗試瞭在VR中進行場景編輯。
由於3D音效的加強(下面會提到),“聽音辨位”就可以做得更真實,各種潛入類玩法非常適合。
另外,由於沉浸感的增強,恐怖遊戲和XX遊戲帶給人的感官刺激會放大,這就不用展開瞭,試過就知道。
圖形
如果以OculusReady的硬件標準,基本上可以預期的畫面表現力差不多相當於上代主機的畫面,即Xbox360和PS3後期的水平。我們試做的VR遊戲Demo,在項目啟動時的規格比較高,GTX970+OculusDK2的硬件下,經過優化可以流暢運行,下面是最終版的技術選型,給大傢做參考:
圖片來自我們的VRDemo:Comet
PhysicallyBasedMaterial:物理光照材質算是主流技術瞭,但是相應的性能開銷也會大一些。
SphereReflectionCapture:反射效果和各種高光材質就靠Cubemap瞭。
BakedStaticLighting+BakedAmbientOcclusion:即能用靜態光照就用靜態的。
GlobalDynamicShadowMaps:僅僅是主角和大件遮擋物。
InstancedStaticMesh:對於性能的提升非常明顯,大量的優化是基於Instanced技術。
Bloom+ColorGrading:多數的後期鏡頭效果在VR中並不適用,因為是通過雙眼直接觀看,並不像傳統遊戲那樣通過”攝像機鏡頭”觀看。而且,為瞭性能,能關的都關瞭…
FXAA:理論上來說TemporalAA更適合消除遠處的SpecularAliasing,但是會導致近處HUD的文字和紋路受到影響,解決之前先用FXAA代替。
當然,如果具有足夠的優化功力和場景設計技巧,也不排除GTX970+OculusRift流暢運行的可能,但這並不適合多數的團隊。
美術制作方面,有些資料會說NormalMapping和BillboardParticle不再適合VR渲染,其實並不是這樣的。這些效果隻是在近距離觀看時才會發現很假,遠處隨便用,不用擔心在制作上與傳統3D遊戲的差異。近距離的話,隻能使用ParallaxMapping和MeshParticle之類保證不穿幫,但是極少數情況需要這樣,跟場景和特效設計有關系。總體上來說,美術的制作與傳統3D遊戲差異並不大,除瞭UI。
圖片來自EIPC的ShowdownDemo
交互
由於目前主流的VR操作設備已經趨於統一,大傢都有這麼幾個特征:
可以模擬雙手的空間位置和旋轉;
通過手柄上的按鈕觸發指令型操作,如抓住,發射等;
仍然保留傳統的”搖桿”,但比較少用到;
這裡有一個OculusToyboxDemo的演示視頻,能夠很好地說明VR下的人機交互是什麼樣子的:
圖片來自Oculus的ToyboxDemo
可以預見到,基於雙手的物理交互會越來越多,也就意味著物理模擬在VR遊戲中的應用會更普遍一些。
同樣的,UI的設計已經不再推薦2D平面化,更加傾向於3D的效果,如科幻風格的全息投影,或者使用實體模型。或許,以後VR遊戲中的”UI”改由3D美術來制作瞭。
音效
傳統的3D遊戲音效,一般是通過音量變化判斷距離遠近,通過頻率變化判斷相對移動。以空間定位為例:
左右:通過左右聲道的音量差異區分;
前後:通過多聲道的衛星音箱或多聲道耳機區分(不適大多數人);
距離:通過音量的衰減判斷;
高低:冒似沒什麼好辦法…
在VR中立體聲耳機是可以隨著頭部轉動的,這就意味著,我們可以通過兩個聲道配合轉頭來判定上下左右前後
圖片來自OculusConnect_Introduction_to_Audio_in_VR.pdf
同樣的,頭部除瞭轉動之外,還可以小范圍移動,不用通過走動就能判定聲音的遠近。以前相當於背景音的環境音效,現在也能分辨出大概的方位。
圖片來自OculusConnect_Introduction_to_Audio_in_VR.pdf
因此,在VR遊戲中,3D音效會被越來越多的人重視起來,甚至發展出新的玩法,比如Pastoral這個遊戲。
有興趣的同學建議搜一下這篇文章: VR中的聲音聽起來體驗如何?和傳統音頻有什麼區別。
VR遊戲後續發展期望
主機平臺現在有一類遊戲,以高畫質劇情體驗為主,操作非常簡單,俗稱”遊戲電影化”。目前VR圈也有很大一部分人在嘗試VR電影的制作,但是基於360度視頻的拍攝手法在VR的沉浸感並不是很好,而且傳統的電影拍攝手法也不適合VR視頻制作。所以,電腦制作的3D動畫類電影在VR化方面具有先天優勢,再結合VR頭顯的一些輸入特性,甚至會產生”電影遊戲化”的產品。另一方面,以UE4為代表的遊戲引擎,實時渲染的畫面效果已經達到瞭CG級別,在技術上具備瞭制作實時渲染電影的能力。可以預見到,未來的VR互動電影與VR遊戲,它們之間的邊界會變得十分模糊。
下面這個是國外的VR主題公園THE VOID,相信不久的將來,這種體驗可以像電影院一樣普及。
隨著技術的進步和成本的下降,VR和AR會跟智能手機一樣進入我們生活的方方面面。對於VR遊戲來說,很多人也跟我有一樣的夢想,希望在有生之年,可以把它變成現實。
from:騰訊遊戲頻道 逍遙劍客