本文由知乎作者「王寒」授權VR陀螺發布。
如今,隨著第一代消費級移動VR產品Samsung Gear VR正式推向市場,而三大核心主力設備也將悉數於2016年Q1和Q2粉墨登場,一向與時俱進的Unity再也坐不住了。
不久前,Unity官方在推出5.3版本的同時也推出了首個官方的VR開發教程。雖然不是很詳細,但是對於苦逼了很久的開發者來說,簡直就是仙音佛樂。
廢話少說,讓我們來一起看看吧。
PART I UNITY VR簡介
Unity內置對若干VR設備的支持,至於具體是哪些設備,不妨看看VRDeviceType這個枚舉變量。
本教程主要針對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/cn/get-unity/download )。
在項目中啟用對VR的支持廢除簡單,只需要在Unity菜單中選擇Edit > Project Settings> Player > Other Settings > Rendering
然後在Inspector中勾選」Virtual Reality Supported「。
在runtime時,可以通過在代碼中使用UnityEngine.VR.VRSettings.enabled屬性來進行設置。
PART III 在Unity中預覽VR場景
當我們在Unity Editor中已經啟用VR Support,而且連接上了DK2設備時,進入Play 模式就可以在DK2上顯示遊戲的場景。這樣可以大大提高開發測試和迭代的效率。和之前不同,開發者無需編譯生成一個可執行的項目才能看到VR應用或遊戲的調整。當然,老司機們會發現此前的雙眼視圖已經被單一視圖替代了。
需要提醒大家的是,我們沒必要為每隻眼睛都創建一個camera,所有的camera都會在VR中進行渲染,除了那些分配了Render Texture(渲染紋理)的攝像機。關於Render Textures,請參考這裡(Unity - Manual: Render Texture )。Unity會自動對攝像機的渲染進行優化,比如culling(剔除)和陰影渲染,從而減少性能消耗。
關於VR的相關主題還可以在Unity Manual(http://docs.unity3d.com/Manual/class-RenderTexture.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和1920*1080。不過如果你想給Oculus Rift CV1開發應用,那麼就必須實現90hz和2160*1200的解析度,這將是個巨大的挑戰。
如果你在使用DK2,那麼需要確保硬體設備可以用所需的解析度以所需的刷新率輸出圖像。很多筆記本電腦採用獨立顯卡和集成顯卡切換的方式,但這些顯卡基本上都無法滿足以上要求,甚至連1920*1080和75hz都實現不了,這樣將嚴重影響用戶體驗。關於這部分內容,請參考Oculus的相關文檔(Oculus Rift Development Kit 2 FAQ : 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/ )。
個人建議是:自己配一個高性能的PC,價格估計在1W2左右。
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或更高版本
顯卡驅動:請確保你的顯卡驅動是最新的。可以使用Oculus Configuration Utility來檢查顯卡驅動是否夠用。
Oculus Runtime:為了在Unity 5.3中進行VR開發,請使用Oculus Runtime 0.8或更高版本。
PART V VR示例項目
作為本教程的一部分,我們在Asset Store上免費提供了一個VR示例項目。該項目可以同時支持DK2和Gear VR,我們將根據Oculus硬體的迭代不斷更新該示例項目,同時也會在將來考慮支持其它頭戴設備。
該示例項目的下載連結如下:Asset Store ( 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)Object pooling(不知道咋翻譯好)
除了提供這些概念之外,為了方便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開發。
【VR陀螺】是「遊戲陀螺」旗下專注VR領域的公眾號,如果您有不錯的VR遊戲,或者您對於VR有自己的見解或想法,歡迎投稿或者分享交流。
分享交流請加微信:shimotsuki_jun(案山子)
媒體合作請加QQ:1394720173(文靜)
投稿請發送郵件至:tougao@youxituoluo.com