如果你不是VR游戲或應用的開發者,可以選擇無視下面的內容,這不是給普通用戶看的~
如果你之前曾經為Oculus Rift DK2或者Gear VR開發過,那么心里面一定曾經有千萬個草泥馬來回奔跑過。雖然Unity從5.1版本開始就支持VR應用和游戲開發,但是從Oculus和Unity雙方的開發者論壇討論情況看,大家都對雙方互相推諉責任感到不滿。
如今,隨著第一代消費級移動VR產品Samsung Gear VR正式推向市場,而三大核心主力設備也將悉數于2016年Q1和Q2粉墨登場,一向與時俱進的Unity再也坐不住了。
就在今天,Unity官方在推出5.3版本的同時也推出了首個官方的VR開發教程。雖然不是很詳細,但是對于苦逼了很久的開發者來說,簡直就是仙音佛樂。
廢話少說,讓我們來一起看看吧。
PART I UNITY VR簡介
Unity內置對若干VR設備的支持,至于具體是哪些設備,不妨看看VRDeviceType這個枚舉變量。
device
本教程主要針對Oculus系列的VR設備,特別是Oculus Rift Development Kit 2(DK2)和消費者版本的Samsung Gear VR(需要配合三星旗艦手機系列使用,如Galaxy S6, S6 Edge,S6 Edge+,Note 5)。對于配合第一代開拓者版本Gear VR的Note4,我們并不關心。因此雖然有些VR示例還是可以在這臺設備上運行,但是效果肯定沒那么好。哥,你就明說不要用note4和開拓者版本的gear vr好了。
當然,Unity也會在后續支持其它VR頭戴設備,比如HTC VIVE。因此當那一天到來的時刻,這篇官方的教程也會隨之更新的。老實說,Unity和Oculus真是一對好基友。
如果想了解VR頭戴設備的更多信息,建議去閱讀官方的手冊。
PART II 在Unity項目中設置VR
首先請下載最新的Oculus runtime 0.8或更高版本(https://developer.oculus.com/downloads/ ),以及最新的Unity5.3或更高版本(http://unity3d.com/get-unity/download )。
在項目中啟用對VR的支持廢除簡單,只需要在Unity菜單中選擇Edit > Project Settings> Player > Other Settings > Rendering
1_enable_vr
然后在Inspector中勾選”Virtual Reality Supported“。
2_enable_vr
在runtime時,可以通過在代碼中使用UnityEngine.VR.VRSettings.enabled屬性來進行設置。
[圖片上傳中。。。(5)]
PART III 在Unity中預覽VR場景
當我們在Unity Editor中已經啟用VR Support,而且連接上了DK2設備時,進入Play 模式就可以在DK2上顯示游戲的場景。這樣可以大大提高開發測試和迭代的效率。和之前不同,開發者無需編譯生成一個可執行的項目才能看到VR應用或游戲的調整。當然,老司機們會發現此前的雙眼視圖已經被單一視圖替代了。
3_enable_vr_cube
需要提醒大家的是,我們沒必要為每只眼睛都創建一個camera,所有的camera都會在VR中進行渲染,除了那些分配了Render Texture(渲染紋理)的攝像機。關于Render Textures,請參考這里(http://docs.unity3d.com/Manual/class-RenderTexture.html )。Unity會自動對攝像機的渲染進行優化,比如culling(剔除)和陰影渲染,從而減少性能消耗。
關于VR的相關主題還可以在Unity Manual(http://docs.unity3d.com/Manual/VROverview.html )和Unity Scripting API(http://docs.unity3d.com/ScriptReference/30_search.html?q=VR ) 和中找到更多信息。
PART IV 使用Unity進行VR開發的軟硬件推薦
因為VR是一個全新的媒介,所以在撰寫本教程的時候存在著軟硬件的限制,請參考以下內容。
1.硬件
為了讓用戶獲得好的VR游戲體驗,需要在頭戴設備上實現所需的幀速。在DK2上的最小幀速是75fps,而在Gear VR上的最小幀速是60fps。如果幀速小于以上數值,那么用戶會明顯感覺到體驗下降甚至導致暈眩。
除了保持游戲幀速在一定的數值之上,玩家電腦上的GPU還必須具備足夠的能力,可以按所需的分辨率以HMD頭戴設備面板的刷新率輸出。以DK2為例,就是需要做到75hz和19201080。不過如果你想給Oculus Rift CV1開發應用,那么就必須實現90hz和21601200的分辨率,這將是個巨大的挑戰。
如果你在使用DK2,那么需要確保硬件設備可以用所需的分辨率以所需的刷新率輸出圖像。很多筆記本電腦采用獨立顯卡和集成顯卡切換的方式,但這些顯卡基本上都無法滿足以上要求,甚至連1920*1080和75hz都實現不了,這樣將嚴重影響用戶體驗。關于這部分內容,請參考Oculus的相關文檔(https://support.oculus.com/hc/en-us/articles/201835987-Oculus-Rift-Development-Kit-2-FAQ ),以及Oculus PC配置指南(https://www.oculus.com/en-us/oculus-ready-pcs/ )。
2.軟件
蘋果OS X操作系統:目前來說我們還是可以使用OSX 10.9以上的操作系統配合Oculus 0.0.5 runtime進行開發。但因為Oculus官方暫停了對OS X系統的支持,因此建議果粉們不要拍磚,還是老老實實用Windows系統,并使用Unity的原生VR功能。
Windows: 支持Windows 7,8,8.1和windows 10.
Android: 推薦使用android OS Lollipop 5.1或更高版本
顯卡驅動:請確保你的顯卡驅動是最新的??梢允褂肙culus Configuration Utility來檢查顯卡驅動是否夠用。
Oculus Runtime:為了在Unity 5.3中進行VR開發,請使用Oculus Runtime 0.8或更高版本。
PART V VR示例項目
作為本教程的一部分,我們在Asset Store上免費提供了一個VR示例項目。該項目可以同時支持DK2和Gear VR,我們將根據Oculus硬件的迭代不斷更新該示例項目,同時也會在將來考慮支持其它頭戴設備。
該示例項目的下載鏈接如下:https://www.assetstore.unity3d.com/#!/content/51519
1.示例場景
主要的示例場景包括:
(1)Intro: 介紹場景,教用戶學習基本的交互
(2)Menu:菜單場景,可以選擇迷你游戲來玩
(3)Flyer:一個飛行小游戲
(4)Maze:一個桌面迷宮游戲
(5)Target Gallery:一個回廊射擊游戲
(6)Target Arena:一個360度射擊競技場游戲
怎么樣,Unity還是很厚道的吧?
除了這些完整的小游戲之外,還有一些示例場景涵蓋了本教程的一些重要概念:
(1)InteractiveItem:演示了如何VR中和物體進行交互
(2)RenderScale:演示了RenderScale將如何影響圖像質量
(3)Reticle: VR中 reticle的基本示例
(4)Rotation:演示了物體將如何隨頭部運動做出響應
(5)Touchpad:演示了如何使用Gear VR的觸摸板進行交互。
所涵蓋的重要概念:
(1)自頂向下的桌面游戲機制
(2)朝屏幕內的星際火狐風格的射擊游戲機制
(3)回廊射擊游戲機制
(4)360度回廊射擊游戲機制
(5)如何在VR中設計界面
(6)如何設計立體界面
(7)在VR中和物體進行交互的基本框架,包括如何處理視線焦點的切換
(8)reticle運動、縮放、陰影等
(9)基于頭部旋轉的運動
(10)如何使用Gear VR觸摸屏,包括輕擊、雙擊和滑動,或是在使用DK2時如何使用鍵盤鼠標進行交互。
(11)如何判斷設備時Gear VR還是DK2
(12)如何在圍繞中心點旋轉攝像機時避免暈眩效應
(13)如何實現攝像機的消隱
(14)攝像機消隱的過渡
(15)物體的池化
除了提供這些概念之外,為了方便VR開發者的重用,我們還提供了其它一些有用的示例:
(1)攝像機的消隱
(2)攝像機消隱的過渡
(3)在VR中和物體進行交互的框架
(4)Hold以確認交互
(5)reticle運動和縮放
(6)和平臺無關的文本
(7)指示特定方向的UI箭頭
(8)移動UI元素,使其始終面向攝像機
(9)交互時傾斜UI物體。
為了運行本項目,開發者需要使用Unity5.3.0或以上版本,擁有推薦配置以上的軟硬件,擁有一臺DK2或是搭配合適三星手機的Gear VR,同時要下載Oculus Runtime 0.8或以上版本。
PART VI Oculus Unity Utilities
作為補充,你也可以下載Oculus官方提供的Oculus Unity Utilities(https://developer.oculus.com/downloads/ )來實現一些特殊功能。其中包含了有用的腳本和預設,比如如何調整IPD(瞳間距)等等。
本教程只關注原生Unity VR開發,因此對Oculus Unity Utilities,請參考Oculus官方網站以獲取更多信息。(https://developer.oculus.com/downloads/game-engines/0.1.3.0-beta/Oculus_Utilities_for_Unity_5/)
好了,現在你已經知道自己需要哪些東西了。第一篇教程到此結束,在后續的時間里面我們將進一步學習如何開始VR開發。