華文網

從技術原理到測試簡介,VR專案研發必看乾貨

一、什麼是VR

虛擬實境技術是一種可以創建和體驗虛擬世界的電腦模擬系統,它利用電腦生成一種類比環境,是一種多源資訊融合的、互動式的三維動態視景和實體行為的系統模擬使使用者沉浸到該環境中。

這裡我不會對概念做過多的介紹,而是簡單介紹一些目前VR的一些實現,以及一些主流廠商的支持,更多的是對VR的展現形式做介紹。不管廠商做了什麼設備,目的都是“使使用者沉浸到該環境中”。

廣義的VR還包括一些其他對話模式,如語音辨識、手勢識別,如微軟xbox kinect,不過其精准程度目前還遠不如VR手柄。Kinect適用一些如攀岩、保齡球等對延遲和精准度要求不高的休閒類遊戲,

並不適合如CF等精度要求較高的操作體驗,並且xbox目前沒有頭盔,無法提供360度的全方位視覺沉浸體驗。這裡主要介紹一下攝像頭、頭盔、手柄這三種常見設備。

目前提供VR設備的主流廠商有oculusVR、HTC vive、索尼的PS VR,這些都是比較高品質的PC端硬體產品,

價格在幾千元RMB左右;還有一些主流設備如三星Gear VR、穀歌的、Daydream,則是簡易的移動端VR設備,一般在幾百元RMB左右。

移動VR設備成本價格相對低一個數量級,通常高端一點的VR設備也只是多提供了一些手機操作介面而已,在手機放入頭盔中不方便操作時用於通過頭盔按鍵操作手機。穀歌的Cardboard長成下面這樣,其他的移動VR設備也只是做的漂亮一點,加了一些控制功能,雖然不是全沉浸,

但成本低了很多。

二、VR設備的技術原理

1、顯示原理

參考下列四張圖:

(1)首先人的眼睛根據光線平行的角度判斷物體遠近,比如無限遠的物體反射光線接近平行

(2)近處的物體光線成一定角度,需要晶狀體調節曲率警醒對焦,如果物體太近,晶狀體調節幅度限制,

則不能對焦

(3)頭盔中的眼鏡,或者說光源距離眼睛非常近,為了解決對焦問題,就需要在光源和眼睛中間加一層透鏡,改變光線彙聚角度,來確保視網膜對焦

(4)為了將透鏡做的輕薄,減輕頭盔重量,可以將透鏡做成下面螺紋形狀

(5)該透鏡成像會有一定損失,因為螺紋邊緣的光線傳播路徑與想要達到的效果不一致,會有部分光線沒有沿著我們想要的軌道傳播

2、3D成像原理

這塊難度不大,相信大家都瞭解,不過還是簡單講一下。

如果你對自己的視覺好奇過,你應該嘗試過單睜左眼、然後再單睜右眼,頭部保持不動,不停的對比兩隻眼睛看到物體的角度和視野範圍。

3D電影就是這個原理。通過技術手段,讓兩隻眼睛看到的圖像,在角度和視野範圍符合人眼自然觀看的結果,那麼圖像就有了立體感。早起的3D是通過紅藍光鏡片,將左右眼看到的圖像分離,螢幕上顯示的是兩個顏色疊加的圖像,如上圖所示。這種技術會使影響有色差。現在普遍的電影院才用的是偏振技術,使用偏振原理將左右眼影響進行過濾,偏振技術的3D效果是目前常見3D技術中效果最好的,唯一的缺點是偏振鏡片會濾掉一半的光線,使影片看起來偏暗。

目前裸眼3D技術也有比較成熟的運用(不是全息投影),主流技術有柱狀透鏡技術、MLD技術、指向光源技術。

其實原理本身就是就是將左眼和右眼看到的圖像分開,當然真3D拍攝的時候也要求兩台攝像機同時拍攝才行,然後在播放的時候將兩種圖像混合(可以通過偏振或者紅藍片過濾使其分開)或者交替播放,如每秒24幀的影片,做成3D就要左眼影像24幀,右眼影像24幀交替播放。

不過對於VR頭盔或者說眼睛來講,實現起來要方便一些,因為VR頭盔本身就有兩個“顯示器”可以將左眼圖像和右眼圖像直接分開顯示在不同的“顯示器”上。仔細看,可以看出下圖中兩隻眼睛看到的影像的區別。

3、渲染流程

由於以上3D成像原理需要渲染兩張不同角度方位的圖像,這在渲染流程上也增加了一些處理環節。如下圖所示:

在以上渲染流程圖中,與傳統渲染流程有差異的主要是在“剪裁投影”環節,這個環節做了以下幾件事情:

(1)剪裁掉螢幕上不顯示的元素;

(2)將三維世界的景象投影到二維平面,為渲染到螢幕做準備;

(3)這時要在攝像機的位置前方確定一個矩形區域,叫做“視口”,用於觀察三維世界。

由於傳統渲染流程中螢幕只有一個,或者說顯示視窗只有一個,所以只需要確定一個視口,但是VR頭盔中需要顯示兩張不同角度的圖,那麼在VR渲染流程中就需要兩個攝像機和兩個視口。也就是同一個三維世界中的場景,要在兩個平面上以稍有差別的角度進行投影,就如同兩部相機同時在兩個位置進行拍照。

那麼以上的三個流程中步驟(3)將要做出一些改變,就是本來需要確定“一個”視口,那麼渲染到VR設備時,需要確定“兩個”視口,以及攝像機。在一開始的開發過程中,需要人為的設置兩個攝像機和視口,隨著開發引擎版本的更新,這個過程將不再需要開發者來考慮。但是對於設備的資料而言,針對每一個相機無論是頂點shader程式的處理、變換矩陣、3D剪裁都需要做兩次,柵格化之後的片元shader、光照\霧化處理、範本處理、緩衝區處理也都是雙倍的資料量。

柵格化之後兩個視口的片元將合成一張矩形的片元矩陣(混合處理之前的圖元稱作片元),渲染到VR設備的柵格化圖像將變成類似以下圖像的樣子

實際渲染圖元要高於螢幕形狀裁剪之後顯示的有效圖元值,因為設備內只能渲染方形的資料矩陣。而傳統的圖元矩陣,看上去是這個樣子

那麼在後續渲染流程中,直到顯示到螢幕中,始終是雙眼的圖像作為一張圖像盡心處理的,但是資料量卻是雙倍的。另外再加上對為防止眩暈,減少兩幀渲染時間間隔,VR遊戲幀率的最低值為90幀,而不是PC遊戲的最低值60幀。解析度最低為1080p,而不像PC可以隨意一點。因為頭盔鏡片的畸變、螺紋、中心圖元的放大、螢幕與眼睛的距離等綜合因素,VR設備實際的視覺體驗與PC的1080p還是有區別的。

4、定位原理

定位技術其實沒有看上去那麼簡單,並不是簡單的紅外感測器位置捕捉,而是多重感測器同時發回作用,使動作的撲捉和處理精度達到“亞毫米級”。

位置感測器

為了顯示精確的畫面,當你環顧周圍時,頭盔必須以亞毫米級的精度跟蹤你的頭部運動。這是通過各種內置感測器來實現的。有了這些感測器提供的各種資料,頭盔就可以實現真正的“六自由度”,跟蹤頭盔可以跟隨頭部做出的任何運動。(注:物體在空間具有六個自由度,即沿x、y、z三個直角坐標軸方向的移動自由度和繞這三個坐標軸的轉動自由度。)

磁力計可以測量地球的磁場,因此總是知道“磁北”在哪個方向。這樣就可以確保它指向的是正確的方向,防止出現“偏移”錯誤——即頭盔以為自己朝著某一個方向時,其實朝著的卻是另一個方向。

加速度計有幾個用途,一個是檢測重力,讓頭盔知道上方是哪個方向。智慧手機自動轉換橫豎屏,靠的就是加速度計。而且正如它的名字所說,它可以測量沿著一個軸的加速度,因此它能提供有用的資料,讓頭盔知道一個物件運動的速度。

陀螺儀可以跟蹤沿著一條軸的微小偏移(例如你稍微傾斜頭部或點頭的時候),來提供更精確的物體旋轉資訊。

三星Gear VR沒有採用更先進的紅外跟蹤方法,而是使用了慣性測量單元(IMU),它是集磁力計、加速度計和陀螺儀為一體的“多合一”設備。與大多數智慧手機不同的是,這個IMU是專門用來減少滯後現象和改善頭部跟蹤性能的。

紅外跟蹤

Oculus Rift和HTC Vive都使用紅外鐳射來跟蹤頭盔的移動,但各有各的方法。

Oculus使用的是放在辦公桌上的“星座”(ConstellaTIon)紅外攝像頭,跟蹤Oculus Rift頭盔前後都有的紅外發射器。如果使用Oculus Touch控制器,你還需要另外再配一個攝像頭,以避免在跟蹤頭盔和控制器上的紅外燈時出現混淆。每個感測器都是單獨跟蹤的,電腦收集所有資訊來渲染畫面,讓你在任何時候從任何角度看的圖像都是正確的。所有這一切幾乎都需要立即完成,這意味著每個紅外感測器的座標被立即捕獲和處理,圖像也就馬上顯示出來,幾乎沒有滯後。

HTC Vive使用的是“燈塔”(Lighthouse)紅外發射器,它被放置在遊戲空間的角落裡,可以快速發射鐳射,掃過房間。Vive上的紅外感測器捕捉到它,並對其在一個空間內的位置進行測量。這個系統的工作原理類似於Oculus,但本質上它是把“燈塔”作為了發射器,把頭盔作為了攝像頭,角色剛好反了過來。

伴侶系統

Vive頭盔除了有“燈塔”紅外跟蹤系統之外,還有一個前置攝像頭,它可以使用“伴侶”系統,來説明檢測你是否離開了遊戲空間的邊界。因此,如果你快要撞上牆壁或傢俱了,Vive就可以巧妙地給你發送視覺提示,讓你知道自己已經到達了VR空間的邊緣。

控制器

Rift和Vive都有無線運動控制器,讓你與3D空間中的物體進行充分交互,從而增強沉浸感。

像頭盔一樣,每個控制器都配備了磁力計、加速度計和陀螺儀以及紅外感測器,對運動進行亞毫米級的精度跟蹤。

定位\控制系統最大的敵人是延遲,可能出現的延遲如下:

1、感測器反應延遲;

2、控制信號傳輸延遲;

3、設備驅動信號處理延遲;

4、遊戲渲染延遲(該部分硬體依賴於顯卡);

5、圖像顯示延遲。

5、其他

音訊

很多頭盔內置了耳機,可以產生3D音訊。這樣遊戲就可以添加相對於你的位置的音訊提示,讓你可以聽到好像是來自後面、上面,甚至下面的聲音。

隱藏的麥克風可以給遊戲開發者提供更多的選擇,在遊戲中添加更多的沉浸式功能。使用麥克風,遊戲可以檢測你在隱形遊戲中產生的噪音量,或者把它作為在VR中進行語音交流的方法。

線材

Vive和Rift都需要用線材將頭盔連接到電腦上,以便傳輸資料和電能,讓顯示幕以90幀/秒的速度顯示高清圖像。如果你是坐著使用頭盔和遊戲手柄,那沒有什麼問題,但當你在室內走動時,線材確實可能會變得礙手礙腳。不過Vive有消息稱下一代頭盔將採用無線技術。

三、給測試帶來的挑戰

對於PC端VR設備來講,我們開發的遊戲產品所使用的輸入輸出設備發生了變化。那麼對於測試而言,功能測試、專項測試的方法和測試目標也發生了一些變化。

1、功能測試

首先VR設備本身採購價比較貴,以Oculus Rift和HTC Vive為例,採購價在分別為599$和799$,按照些文章當前人民幣對美元匯率6.87計算,人民幣價格分別為4115人民幣和5473人民幣。再加上運行VR設備的機器要求配置也比較高,通常能流暢體驗VR遊戲的顯卡要求為英偉達1080系列,市價5k人民幣左右,能帶的動該顯卡的CPU、記憶體、主機板以及主機殼製冷系統通常加在一起大約在12k以上(含顯卡),不考慮顯示器和其他設備的情況下。那麼一套全效測試設備的市場採購價為17k左右。目前項目組也只有兩套可以全效體驗的環境,而且還是開發和策劃共用。

所以測試設備數量是最大的限制,按照傳統的RPG遊戲的內容充實度和反覆運算速度,就算增加測試人力,也無法完成測試。那麼有一種方法,就是設置PC模式進行測試?但是基於以下幾個原因,VR遊戲在PC上進行測試並不可行:

(1)PC與VR的部分操作方式實現不同:比如VR的拾取動作、VR的甩手換彈夾動作,PC與VR的實現並不相同;

(2)PC預設的移動模式與PC預設的移動模式不同:VR可以通過頭盔和手柄的定位識別進行移動(移動受玩家真實的遊戲空間限制),而PC只能通過鍵盤操作移動(無法設定由於玩家真實遊戲空間帶來的限制)。

基於以下三個原因,測試暫時不會面臨設備、內容與測試人力不匹配的問題:

(1)系統少

VR遊戲無論是玩法還是市場目前都處於探索階段,遊戲內容通常以展現VR玩法為主,例如滑翔傘等極限運動、FPS等,只有關卡、成績,沒有成長系統、裝備系統、技能系統、角色系統、背包系統等,甚至有些遊戲沒有排行榜系統。所以,以VR遊戲單一的體驗式玩法,測試並不耗費太多人力。

但如果VR市場成熟起來,多系統的加入是不可避免的。不過隨著時間的推移VR成本的降低或者向移動端的轉移,可能會平衡給測試帶來的問題,即可以採購大量的設備,不會使設備數量成為測試和開發的瓶頸。

(2)單機性

主機VR呈現很高的平臺型,各個VR廠商幾乎都有自己的或者合作的遊戲平臺。例如Oculus有自己的遊戲商城,HTC Vive則是與Steam合作,PS VR就更不用說了。單機遊戲的複雜性,從業務邏輯的實現並不複雜啊,所以不會出現一些前後臺同步,多玩家交互同步以及狀態轉換帶來的一些奇葩問題。且端遊為了適應大眾玩家的配置,通常不會把用戶端做的很重。

端遊的難點通常在於美術、動畫、渲染、特效、物理,而這些雖然是技術開發的難點,但對於測試而言反而更加直觀,所以VR遊戲的單機特性,即降低了業務邏輯實現的複雜性,也給功能測試減輕了一些壓力。但是同上一種情況相同,隨著VR市場和技術的成熟,業務重心向後端的偏移也是也是必不可少的。

(3)UI差異

由於VR的視覺特性(所有UI都投射到3D空間中)、操作特性(無鍵盤滑鼠)、移動特性(UI跟隨視線移動)等原因,VR產品的UI設計與傳統完全不同。VR的UI分為兩種,一種是視角固定的UI,就是始終在眼前,跟隨視角移動的;一種是場景內的3D UI,與場景相對位置固定不變,和場景融合。

a)視覺特性。對於固定視角的UI,由於所有UI都投射到3D空間中,所以不能像PC一樣,玩家可以隨意調節眼睛到螢幕UI之間的距離。所以一旦UI的視野範圍和距離出現問題,玩家無法使用,開發調試也比較耗時。而且功能性UI操作方位只能放在螢幕中心(如暫停之後的恢復按鈕),才便於操作,不能在邊角放置按鈕,限制性很大,遊戲內很少使用,更多的是位置固定在場景中的UI。

b)操作特性。VR遊戲中的操作使用的是射線模式,通過手柄在視野中投射的射線,選中UI操作,由於UI是投射到3D空間中,所以如果UI與玩家頭盔所在位置中間如果有阻擋,可能會導致UI不可見。比如攀爬過程中玩家前方視野是山體,並且距離玩家的眼睛很近,如果此時不做處理一些系統的UI(如暫停之後的恢復按鈕)很有可能會出現在山體內部,導致視覺上的不可見而無法操作。所以通常出現結算之類的重要UI一般需要對3D場景做特殊處理,或者切換到一個空曠的3D空間。

c)移動特性。這裡所說的移動特性是指頭部移動時,可能會有部分功能UI隨著頭盔的旋轉在視野中一起移動。那麼這種隨視野移動功能UI不能太多,也不能太緊湊。第一,該類型UI不符合移動規律,就是頭在移動的時候視野本來應該轉換,但UI還是在固定的視角沒有移動,容易造成暈眩;第二,該固定視角類型的UI只能小面積的放在中間,不能放在角落或者大面積鋪開,因為UI隨視野移動,角落的UI非常不好選擇。

(4)角色移動方式

同PC和移動端遊戲不同,VR重視的是沉浸感,所以移動這種最基礎的功能卻變成了比較難處理的部分。如果移動處理不當會造成沉浸感的破壞,或者移動時視覺眩暈,所以目前《獵影計畫》目前採用的是定點傳送,而不是自由移動。定點傳送不會有很多的地圖和碰撞問題,但是會出現傳送點相關問題,如傳送點被阻擋、失效、出現時機、特效問題等。當然很多VR遊戲也在嘗試自由移動和依賴感測器的移動方式,體驗都在逐步提高。

基於以上幾個VR遊戲當前的狀態的特性,VR一些特性的不成熟、還處於摸索階段,其內容還處於核心玩法體驗過程,很多系統沒有同事建立起來。另外還有一個因素,就是目前VR的市場同PC和移動端比較起來設備門檻要求高,玩家比較小眾,廠商大規模開發系統會導致成本的升高,投入回報率不高,所以大部分開發商還是以核心玩法體驗為主。所以目前測試設備和測試人力相對於PC和移動端還不需要太多投入。

但是,隨著重度VR設備和市場的成熟和低成本化,加上移動VR的起步和低成本,以上各種輕度化的部分:如系統、UI、伺服器、移動等,都會逐步完善和重度化起來,與此同時設備成本、市場也都會有所變化。

2、用戶端性能

PC端的性能測試已經很成熟了,工具也比較豐富,但是VR和PC端遊戲還是有一定區別。

首先,基於上述對渲染流程的講解,可知VR遊戲對性能要求非常高,又是運行新生的平臺和高端設備,所以基本採用64位元應用程式開發,而大眾型網游、端遊,尤其是考慮騰訊遊戲的用戶量級別,為保證相容性,通常採用32位元應用程式開發,這就導致我們之前在端遊時代經典的性能採集工具Bench3D注入進程時失敗,無法使用。同時64位元應用程式並未在公司普及,工具維護團隊也不會把升級64位的優先順序排在前面,所以只能採取其他方案。

其次,獵影遊戲才用Unreal引擎進行開發,目前現有的相對比較成熟的基於Unity引擎的性能測試方案也無法採用。

性能測試資料獲取可以根據資料類型分為兩類:一類是渲染資料,如:渲染三角形數、drawcall數、模型數量、貼圖數量等;一類是硬體參數,如CPU使用率、記憶體佔用、I\O操作次數和資料量等。

(1)主機硬體參數:包括CPU、記憶體、IO等各種資料獲取可以使用windows作業系統原生工具進行採集。

(2)渲染資料獲取:目前沒有現有的持續採集工具和方案。Unreal自身提供stat命令列,可以在遊戲視圖中列印渲染資訊到螢幕。但是沒有辦法將資料持續保存到文檔,僅支持單幀資料獲取,無法對對特有場景渲染資料進行長時間採集和分析。Stat命令列印結果類似如下:

Stat命令提供很多參數,可以列印很多不同種類的資訊

也可以通過GPA進行單幀分析。但是單幀分析無法取代持續資料獲取,單幀分析適合開發和美術同學在開發和場景優化時進行詳細的分析;而持續採集可以找出整個遊戲全部場景和管卡的性能瓶頸。比較適合的流程是測試通過性能指標持續採集工具找到場景和管卡的性能瓶頸,提交給美術和開發,美術和開發通過單幀分析定位並解決性能問題。

(3)GPU資料獲取工具:目前可用的工具有微軟的GPUView和英偉達的Nsight。

3、適配測試

(1)適配實驗室

由於VR產品的外接設備限制,外加對主機配置要求特別高,所以目前的PC相容實驗室無法提供高端機型適配。目前PC相容實驗室最高配的顯卡型號為英偉達N960,而獵影產品推薦的最低配置為英偉達N970,推薦的標準配置為英偉達N1080。

雖然公司的相容實驗室顯卡配置無法滿足測試要求,但是可以提供PC操作版進行作業系統版本、DX版本、Framework版本以及A卡相容性做測試。

(2)顯卡廠商合作

所以高端顯卡適配和部分顯卡和渲染資料的採集可以交由英偉達公司合作部門,他們可以提供適配和性能報告,對於市場定位為高端玩家的產品,英偉達公司還可以對顯卡新特性的相容性進行適配,如:4k解析度、超寬解析度、surround(多台顯示器)、DSR(動態超級解析度)、SLI(多顯卡協同)等特性。

四、發佈流程

1、基本要求

(1)禁止內容:

a)色☆禁☆情

b)過多的暴力內容

c)仇恨、欺淩、騷擾

d)貨幣賭博

(2)舒適度

舒適度評級比較主觀,因人而異。但根據以下幾種情況可以將舒適度等級分為三級:舒適、適中、激烈。舒適體驗的遊戲:通常玩法上會儘量避免視野變化、角色移動、頻繁轉向等操作,儘量才用固定視角;中度體驗的遊戲:通常會包含適當的攝像機移動和角色移動;激烈體驗的遊戲:通常為第一人稱視角,除了攝像機和角色的移動,還包含轉向、加速等操作體驗。遊戲提交時需要根據以上情況對舒適度進行評級。官方通常建議開發者提供舒適的遊戲體驗。

(3)視頻應用

通常不接受純2D場景或播放畫面。也不接受單個的3D視頻。即不接受單獨的3D視頻或者CG動畫以應用形式上傳,需要有玩法交互和操作。

(4)資料獲取

如果使用使用者許可權(如移動設備許可權)或者採集玩家資料,需要告知使用者

(5)平臺限制

不允許發佈平臺類應用,如應用商城之類的應用。如果遊戲或者英雄有內購,需要使用Platform SDK(即平臺支付介面)進行支付。

(6)其他

其他的認證以及平臺商標使用

2、技術要求

(1)硬體參數

NVIDIA GTX 970或AMD R9 290相當。

Intel i5-6400等效

8GB RAM。

(2)系統以及驅動

Windows 7 SP1 64位及更高版本加上DirectX平臺更新。

最新版本的NVIDIA和AMD驅動程式。

(3)Oculus PC SDK和遊戲引擎版本

Oculus PC SDK 1.8或更高版本。

Unity遊戲引擎4必須是版本4.7.0f1。

Unity遊戲引擎5.3必須是5.3.7p2或更高版本。

Unity遊戲引擎5.4必須是版本5.4.3p3或更高版本。

Un ity遊戲引擎5.5必須是版本5.5.0p1或更高版本。

虛幻遊戲引擎必須是Epic GitHub存儲庫版本4.14或更高版本,或從OculusVR GitHub存儲庫版本4.12或更高版本。

Audiokinetic Wwise必須是版本2017.1或更高版本,或任何2015版本與重定向補丁。

(需要時時關注官網更新)

(4)其他性能需求

通過大部分應用維護90 FPS。

沒有系統的顫抖。

沒有明顯的渲染問題

不會崩潰,凍結或進入延遲無回應狀態

沒有資料丟失。

(5)其他與平臺或者商城相關的體驗

3、發佈操作

通過發佈頁面手動上傳或者使用命令列工具上傳,使用命令列工具需要配置一些參數。通常由項目組完成。測試需要有測試帳號,測試平臺發佈到灰度管道上架的應用程式,和非測試帳號啟動本地已安裝遊戲是否可以正常啟動和進入。

在角度和視野範圍符合人眼自然觀看的結果,那麼圖像就有了立體感。早起的3D是通過紅藍光鏡片,將左右眼看到的圖像分離,螢幕上顯示的是兩個顏色疊加的圖像,如上圖所示。這種技術會使影響有色差。現在普遍的電影院才用的是偏振技術,使用偏振原理將左右眼影響進行過濾,偏振技術的3D效果是目前常見3D技術中效果最好的,唯一的缺點是偏振鏡片會濾掉一半的光線,使影片看起來偏暗。

目前裸眼3D技術也有比較成熟的運用(不是全息投影),主流技術有柱狀透鏡技術、MLD技術、指向光源技術。

其實原理本身就是就是將左眼和右眼看到的圖像分開,當然真3D拍攝的時候也要求兩台攝像機同時拍攝才行,然後在播放的時候將兩種圖像混合(可以通過偏振或者紅藍片過濾使其分開)或者交替播放,如每秒24幀的影片,做成3D就要左眼影像24幀,右眼影像24幀交替播放。

不過對於VR頭盔或者說眼睛來講,實現起來要方便一些,因為VR頭盔本身就有兩個“顯示器”可以將左眼圖像和右眼圖像直接分開顯示在不同的“顯示器”上。仔細看,可以看出下圖中兩隻眼睛看到的影像的區別。

3、渲染流程

由於以上3D成像原理需要渲染兩張不同角度方位的圖像,這在渲染流程上也增加了一些處理環節。如下圖所示:

在以上渲染流程圖中,與傳統渲染流程有差異的主要是在“剪裁投影”環節,這個環節做了以下幾件事情:

(1)剪裁掉螢幕上不顯示的元素;

(2)將三維世界的景象投影到二維平面,為渲染到螢幕做準備;

(3)這時要在攝像機的位置前方確定一個矩形區域,叫做“視口”,用於觀察三維世界。

由於傳統渲染流程中螢幕只有一個,或者說顯示視窗只有一個,所以只需要確定一個視口,但是VR頭盔中需要顯示兩張不同角度的圖,那麼在VR渲染流程中就需要兩個攝像機和兩個視口。也就是同一個三維世界中的場景,要在兩個平面上以稍有差別的角度進行投影,就如同兩部相機同時在兩個位置進行拍照。

那麼以上的三個流程中步驟(3)將要做出一些改變,就是本來需要確定“一個”視口,那麼渲染到VR設備時,需要確定“兩個”視口,以及攝像機。在一開始的開發過程中,需要人為的設置兩個攝像機和視口,隨著開發引擎版本的更新,這個過程將不再需要開發者來考慮。但是對於設備的資料而言,針對每一個相機無論是頂點shader程式的處理、變換矩陣、3D剪裁都需要做兩次,柵格化之後的片元shader、光照\霧化處理、範本處理、緩衝區處理也都是雙倍的資料量。

柵格化之後兩個視口的片元將合成一張矩形的片元矩陣(混合處理之前的圖元稱作片元),渲染到VR設備的柵格化圖像將變成類似以下圖像的樣子

實際渲染圖元要高於螢幕形狀裁剪之後顯示的有效圖元值,因為設備內只能渲染方形的資料矩陣。而傳統的圖元矩陣,看上去是這個樣子

那麼在後續渲染流程中,直到顯示到螢幕中,始終是雙眼的圖像作為一張圖像盡心處理的,但是資料量卻是雙倍的。另外再加上對為防止眩暈,減少兩幀渲染時間間隔,VR遊戲幀率的最低值為90幀,而不是PC遊戲的最低值60幀。解析度最低為1080p,而不像PC可以隨意一點。因為頭盔鏡片的畸變、螺紋、中心圖元的放大、螢幕與眼睛的距離等綜合因素,VR設備實際的視覺體驗與PC的1080p還是有區別的。

4、定位原理

定位技術其實沒有看上去那麼簡單,並不是簡單的紅外感測器位置捕捉,而是多重感測器同時發回作用,使動作的撲捉和處理精度達到“亞毫米級”。

位置感測器

為了顯示精確的畫面,當你環顧周圍時,頭盔必須以亞毫米級的精度跟蹤你的頭部運動。這是通過各種內置感測器來實現的。有了這些感測器提供的各種資料,頭盔就可以實現真正的“六自由度”,跟蹤頭盔可以跟隨頭部做出的任何運動。(注:物體在空間具有六個自由度,即沿x、y、z三個直角坐標軸方向的移動自由度和繞這三個坐標軸的轉動自由度。)

磁力計可以測量地球的磁場,因此總是知道“磁北”在哪個方向。這樣就可以確保它指向的是正確的方向,防止出現“偏移”錯誤——即頭盔以為自己朝著某一個方向時,其實朝著的卻是另一個方向。

加速度計有幾個用途,一個是檢測重力,讓頭盔知道上方是哪個方向。智慧手機自動轉換橫豎屏,靠的就是加速度計。而且正如它的名字所說,它可以測量沿著一個軸的加速度,因此它能提供有用的資料,讓頭盔知道一個物件運動的速度。

陀螺儀可以跟蹤沿著一條軸的微小偏移(例如你稍微傾斜頭部或點頭的時候),來提供更精確的物體旋轉資訊。

三星Gear VR沒有採用更先進的紅外跟蹤方法,而是使用了慣性測量單元(IMU),它是集磁力計、加速度計和陀螺儀為一體的“多合一”設備。與大多數智慧手機不同的是,這個IMU是專門用來減少滯後現象和改善頭部跟蹤性能的。

紅外跟蹤

Oculus Rift和HTC Vive都使用紅外鐳射來跟蹤頭盔的移動,但各有各的方法。

Oculus使用的是放在辦公桌上的“星座”(ConstellaTIon)紅外攝像頭,跟蹤Oculus Rift頭盔前後都有的紅外發射器。如果使用Oculus Touch控制器,你還需要另外再配一個攝像頭,以避免在跟蹤頭盔和控制器上的紅外燈時出現混淆。每個感測器都是單獨跟蹤的,電腦收集所有資訊來渲染畫面,讓你在任何時候從任何角度看的圖像都是正確的。所有這一切幾乎都需要立即完成,這意味著每個紅外感測器的座標被立即捕獲和處理,圖像也就馬上顯示出來,幾乎沒有滯後。

HTC Vive使用的是“燈塔”(Lighthouse)紅外發射器,它被放置在遊戲空間的角落裡,可以快速發射鐳射,掃過房間。Vive上的紅外感測器捕捉到它,並對其在一個空間內的位置進行測量。這個系統的工作原理類似於Oculus,但本質上它是把“燈塔”作為了發射器,把頭盔作為了攝像頭,角色剛好反了過來。

伴侶系統

Vive頭盔除了有“燈塔”紅外跟蹤系統之外,還有一個前置攝像頭,它可以使用“伴侶”系統,來説明檢測你是否離開了遊戲空間的邊界。因此,如果你快要撞上牆壁或傢俱了,Vive就可以巧妙地給你發送視覺提示,讓你知道自己已經到達了VR空間的邊緣。

控制器

Rift和Vive都有無線運動控制器,讓你與3D空間中的物體進行充分交互,從而增強沉浸感。

像頭盔一樣,每個控制器都配備了磁力計、加速度計和陀螺儀以及紅外感測器,對運動進行亞毫米級的精度跟蹤。

定位\控制系統最大的敵人是延遲,可能出現的延遲如下:

1、感測器反應延遲;

2、控制信號傳輸延遲;

3、設備驅動信號處理延遲;

4、遊戲渲染延遲(該部分硬體依賴於顯卡);

5、圖像顯示延遲。

5、其他

音訊

很多頭盔內置了耳機,可以產生3D音訊。這樣遊戲就可以添加相對於你的位置的音訊提示,讓你可以聽到好像是來自後面、上面,甚至下面的聲音。

隱藏的麥克風可以給遊戲開發者提供更多的選擇,在遊戲中添加更多的沉浸式功能。使用麥克風,遊戲可以檢測你在隱形遊戲中產生的噪音量,或者把它作為在VR中進行語音交流的方法。

線材

Vive和Rift都需要用線材將頭盔連接到電腦上,以便傳輸資料和電能,讓顯示幕以90幀/秒的速度顯示高清圖像。如果你是坐著使用頭盔和遊戲手柄,那沒有什麼問題,但當你在室內走動時,線材確實可能會變得礙手礙腳。不過Vive有消息稱下一代頭盔將採用無線技術。

三、給測試帶來的挑戰

對於PC端VR設備來講,我們開發的遊戲產品所使用的輸入輸出設備發生了變化。那麼對於測試而言,功能測試、專項測試的方法和測試目標也發生了一些變化。

1、功能測試

首先VR設備本身採購價比較貴,以Oculus Rift和HTC Vive為例,採購價在分別為599$和799$,按照些文章當前人民幣對美元匯率6.87計算,人民幣價格分別為4115人民幣和5473人民幣。再加上運行VR設備的機器要求配置也比較高,通常能流暢體驗VR遊戲的顯卡要求為英偉達1080系列,市價5k人民幣左右,能帶的動該顯卡的CPU、記憶體、主機板以及主機殼製冷系統通常加在一起大約在12k以上(含顯卡),不考慮顯示器和其他設備的情況下。那麼一套全效測試設備的市場採購價為17k左右。目前項目組也只有兩套可以全效體驗的環境,而且還是開發和策劃共用。

所以測試設備數量是最大的限制,按照傳統的RPG遊戲的內容充實度和反覆運算速度,就算增加測試人力,也無法完成測試。那麼有一種方法,就是設置PC模式進行測試?但是基於以下幾個原因,VR遊戲在PC上進行測試並不可行:

(1)PC與VR的部分操作方式實現不同:比如VR的拾取動作、VR的甩手換彈夾動作,PC與VR的實現並不相同;

(2)PC預設的移動模式與PC預設的移動模式不同:VR可以通過頭盔和手柄的定位識別進行移動(移動受玩家真實的遊戲空間限制),而PC只能通過鍵盤操作移動(無法設定由於玩家真實遊戲空間帶來的限制)。

基於以下三個原因,測試暫時不會面臨設備、內容與測試人力不匹配的問題:

(1)系統少

VR遊戲無論是玩法還是市場目前都處於探索階段,遊戲內容通常以展現VR玩法為主,例如滑翔傘等極限運動、FPS等,只有關卡、成績,沒有成長系統、裝備系統、技能系統、角色系統、背包系統等,甚至有些遊戲沒有排行榜系統。所以,以VR遊戲單一的體驗式玩法,測試並不耗費太多人力。

但如果VR市場成熟起來,多系統的加入是不可避免的。不過隨著時間的推移VR成本的降低或者向移動端的轉移,可能會平衡給測試帶來的問題,即可以採購大量的設備,不會使設備數量成為測試和開發的瓶頸。

(2)單機性

主機VR呈現很高的平臺型,各個VR廠商幾乎都有自己的或者合作的遊戲平臺。例如Oculus有自己的遊戲商城,HTC Vive則是與Steam合作,PS VR就更不用說了。單機遊戲的複雜性,從業務邏輯的實現並不複雜啊,所以不會出現一些前後臺同步,多玩家交互同步以及狀態轉換帶來的一些奇葩問題。且端遊為了適應大眾玩家的配置,通常不會把用戶端做的很重。

端遊的難點通常在於美術、動畫、渲染、特效、物理,而這些雖然是技術開發的難點,但對於測試而言反而更加直觀,所以VR遊戲的單機特性,即降低了業務邏輯實現的複雜性,也給功能測試減輕了一些壓力。但是同上一種情況相同,隨著VR市場和技術的成熟,業務重心向後端的偏移也是也是必不可少的。

(3)UI差異

由於VR的視覺特性(所有UI都投射到3D空間中)、操作特性(無鍵盤滑鼠)、移動特性(UI跟隨視線移動)等原因,VR產品的UI設計與傳統完全不同。VR的UI分為兩種,一種是視角固定的UI,就是始終在眼前,跟隨視角移動的;一種是場景內的3D UI,與場景相對位置固定不變,和場景融合。

a)視覺特性。對於固定視角的UI,由於所有UI都投射到3D空間中,所以不能像PC一樣,玩家可以隨意調節眼睛到螢幕UI之間的距離。所以一旦UI的視野範圍和距離出現問題,玩家無法使用,開發調試也比較耗時。而且功能性UI操作方位只能放在螢幕中心(如暫停之後的恢復按鈕),才便於操作,不能在邊角放置按鈕,限制性很大,遊戲內很少使用,更多的是位置固定在場景中的UI。

b)操作特性。VR遊戲中的操作使用的是射線模式,通過手柄在視野中投射的射線,選中UI操作,由於UI是投射到3D空間中,所以如果UI與玩家頭盔所在位置中間如果有阻擋,可能會導致UI不可見。比如攀爬過程中玩家前方視野是山體,並且距離玩家的眼睛很近,如果此時不做處理一些系統的UI(如暫停之後的恢復按鈕)很有可能會出現在山體內部,導致視覺上的不可見而無法操作。所以通常出現結算之類的重要UI一般需要對3D場景做特殊處理,或者切換到一個空曠的3D空間。

c)移動特性。這裡所說的移動特性是指頭部移動時,可能會有部分功能UI隨著頭盔的旋轉在視野中一起移動。那麼這種隨視野移動功能UI不能太多,也不能太緊湊。第一,該類型UI不符合移動規律,就是頭在移動的時候視野本來應該轉換,但UI還是在固定的視角沒有移動,容易造成暈眩;第二,該固定視角類型的UI只能小面積的放在中間,不能放在角落或者大面積鋪開,因為UI隨視野移動,角落的UI非常不好選擇。

(4)角色移動方式

同PC和移動端遊戲不同,VR重視的是沉浸感,所以移動這種最基礎的功能卻變成了比較難處理的部分。如果移動處理不當會造成沉浸感的破壞,或者移動時視覺眩暈,所以目前《獵影計畫》目前採用的是定點傳送,而不是自由移動。定點傳送不會有很多的地圖和碰撞問題,但是會出現傳送點相關問題,如傳送點被阻擋、失效、出現時機、特效問題等。當然很多VR遊戲也在嘗試自由移動和依賴感測器的移動方式,體驗都在逐步提高。

基於以上幾個VR遊戲當前的狀態的特性,VR一些特性的不成熟、還處於摸索階段,其內容還處於核心玩法體驗過程,很多系統沒有同事建立起來。另外還有一個因素,就是目前VR的市場同PC和移動端比較起來設備門檻要求高,玩家比較小眾,廠商大規模開發系統會導致成本的升高,投入回報率不高,所以大部分開發商還是以核心玩法體驗為主。所以目前測試設備和測試人力相對於PC和移動端還不需要太多投入。

但是,隨著重度VR設備和市場的成熟和低成本化,加上移動VR的起步和低成本,以上各種輕度化的部分:如系統、UI、伺服器、移動等,都會逐步完善和重度化起來,與此同時設備成本、市場也都會有所變化。

2、用戶端性能

PC端的性能測試已經很成熟了,工具也比較豐富,但是VR和PC端遊戲還是有一定區別。

首先,基於上述對渲染流程的講解,可知VR遊戲對性能要求非常高,又是運行新生的平臺和高端設備,所以基本採用64位元應用程式開發,而大眾型網游、端遊,尤其是考慮騰訊遊戲的用戶量級別,為保證相容性,通常採用32位元應用程式開發,這就導致我們之前在端遊時代經典的性能採集工具Bench3D注入進程時失敗,無法使用。同時64位元應用程式並未在公司普及,工具維護團隊也不會把升級64位的優先順序排在前面,所以只能採取其他方案。

其次,獵影遊戲才用Unreal引擎進行開發,目前現有的相對比較成熟的基於Unity引擎的性能測試方案也無法採用。

性能測試資料獲取可以根據資料類型分為兩類:一類是渲染資料,如:渲染三角形數、drawcall數、模型數量、貼圖數量等;一類是硬體參數,如CPU使用率、記憶體佔用、I\O操作次數和資料量等。

(1)主機硬體參數:包括CPU、記憶體、IO等各種資料獲取可以使用windows作業系統原生工具進行採集。

(2)渲染資料獲取:目前沒有現有的持續採集工具和方案。Unreal自身提供stat命令列,可以在遊戲視圖中列印渲染資訊到螢幕。但是沒有辦法將資料持續保存到文檔,僅支持單幀資料獲取,無法對對特有場景渲染資料進行長時間採集和分析。Stat命令列印結果類似如下:

Stat命令提供很多參數,可以列印很多不同種類的資訊

也可以通過GPA進行單幀分析。但是單幀分析無法取代持續資料獲取,單幀分析適合開發和美術同學在開發和場景優化時進行詳細的分析;而持續採集可以找出整個遊戲全部場景和管卡的性能瓶頸。比較適合的流程是測試通過性能指標持續採集工具找到場景和管卡的性能瓶頸,提交給美術和開發,美術和開發通過單幀分析定位並解決性能問題。

(3)GPU資料獲取工具:目前可用的工具有微軟的GPUView和英偉達的Nsight。

3、適配測試

(1)適配實驗室

由於VR產品的外接設備限制,外加對主機配置要求特別高,所以目前的PC相容實驗室無法提供高端機型適配。目前PC相容實驗室最高配的顯卡型號為英偉達N960,而獵影產品推薦的最低配置為英偉達N970,推薦的標準配置為英偉達N1080。

雖然公司的相容實驗室顯卡配置無法滿足測試要求,但是可以提供PC操作版進行作業系統版本、DX版本、Framework版本以及A卡相容性做測試。

(2)顯卡廠商合作

所以高端顯卡適配和部分顯卡和渲染資料的採集可以交由英偉達公司合作部門,他們可以提供適配和性能報告,對於市場定位為高端玩家的產品,英偉達公司還可以對顯卡新特性的相容性進行適配,如:4k解析度、超寬解析度、surround(多台顯示器)、DSR(動態超級解析度)、SLI(多顯卡協同)等特性。

四、發佈流程

1、基本要求

(1)禁止內容:

a)色☆禁☆情

b)過多的暴力內容

c)仇恨、欺淩、騷擾

d)貨幣賭博

(2)舒適度

舒適度評級比較主觀,因人而異。但根據以下幾種情況可以將舒適度等級分為三級:舒適、適中、激烈。舒適體驗的遊戲:通常玩法上會儘量避免視野變化、角色移動、頻繁轉向等操作,儘量才用固定視角;中度體驗的遊戲:通常會包含適當的攝像機移動和角色移動;激烈體驗的遊戲:通常為第一人稱視角,除了攝像機和角色的移動,還包含轉向、加速等操作體驗。遊戲提交時需要根據以上情況對舒適度進行評級。官方通常建議開發者提供舒適的遊戲體驗。

(3)視頻應用

通常不接受純2D場景或播放畫面。也不接受單個的3D視頻。即不接受單獨的3D視頻或者CG動畫以應用形式上傳,需要有玩法交互和操作。

(4)資料獲取

如果使用使用者許可權(如移動設備許可權)或者採集玩家資料,需要告知使用者

(5)平臺限制

不允許發佈平臺類應用,如應用商城之類的應用。如果遊戲或者英雄有內購,需要使用Platform SDK(即平臺支付介面)進行支付。

(6)其他

其他的認證以及平臺商標使用

2、技術要求

(1)硬體參數

NVIDIA GTX 970或AMD R9 290相當。

Intel i5-6400等效

8GB RAM。

(2)系統以及驅動

Windows 7 SP1 64位及更高版本加上DirectX平臺更新。

最新版本的NVIDIA和AMD驅動程式。

(3)Oculus PC SDK和遊戲引擎版本

Oculus PC SDK 1.8或更高版本。

Unity遊戲引擎4必須是版本4.7.0f1。

Unity遊戲引擎5.3必須是5.3.7p2或更高版本。

Unity遊戲引擎5.4必須是版本5.4.3p3或更高版本。

Un ity遊戲引擎5.5必須是版本5.5.0p1或更高版本。

虛幻遊戲引擎必須是Epic GitHub存儲庫版本4.14或更高版本,或從OculusVR GitHub存儲庫版本4.12或更高版本。

Audiokinetic Wwise必須是版本2017.1或更高版本,或任何2015版本與重定向補丁。

(需要時時關注官網更新)

(4)其他性能需求

通過大部分應用維護90 FPS。

沒有系統的顫抖。

沒有明顯的渲染問題

不會崩潰,凍結或進入延遲無回應狀態

沒有資料丟失。

(5)其他與平臺或者商城相關的體驗

3、發佈操作

通過發佈頁面手動上傳或者使用命令列工具上傳,使用命令列工具需要配置一些參數。通常由項目組完成。測試需要有測試帳號,測試平臺發佈到灰度管道上架的應用程式,和非測試帳號啟動本地已安裝遊戲是否可以正常啟動和進入。