Gvr SDK概述
通過谷歌VR SDK for unity 為Android和iOS 構建虛擬現實應用程序
unity SDK在Android上支持構建應用程序for daydream 和 cardboard。對於iOS你只能為cardboard構建應用程序。
google VR SDK要求unity5.2.1或更高版本。
本文更新於:2016-06-20
Gvr 核心功能
- 頭部追蹤
- 並排立體呈現(模擬人的左右眼)
- 空間音頻rendering
- 檢測用戶與系統的交互(通過觸發或控制器)
- 自動化配置 vr 設備參數,或提供特殊配置
- 立體圖像失真校正
- 當你的手機插入到VR 設備時,准星自動聚焦在幫助中心
- 自動陀螺漂移校正
英文原版:https://developers.google.com/vr/unity/#features
Gvr 附加功能
- 在Unity編輯器中模擬頭部運動,按Alt或Ctrl 進行運動
- 對不同的VR設備,提供相似的視野(Control the approximate field of view regardless of differences in VR viewer configurations)
- 遵守相機變焦效果VR-safe的方式,即兼容頭跟蹤
- 恰當地支持畫中畫窗口,所以在調整屏幕的位置,失真校正后仍可見
- 動態調整 stereo level(立體水平) 以減少眼疲勞
- 很容易地確定用戶注視的方向,例如,射線檢測
- 與Canvas UI 元素交互,可以通過目光和觸發器
- 使用同一個代碼函數,處理觸發和界面點擊檢測
- 支持Image Effects(圖像效果)和 Deferred Rendering(延遲渲染),或繞過這以增加支持FPS。
英文原版:https://developers.google.com/vr/unity/#features
准備工作
GVR SDK for Unity 下載: https://github.com/googlevr/gvr-unity-sdk
GVR 在線文檔: https://developers.google.com/vr/unity/#features
Google APIs for Unity: https://developers.google.com/unity/
本文環境:Unity 5.3.1 x64 + gvr 0.8
搭建環境
1、如果你只需要SDK文件(GoogleVRForUnity.unitypackage) 可以參考:Github 下載單個文件 。當然你也可以clone整個項目
2、創建新工程,導入gvr package
Demo分析
sdk中有兩個Demo,在GoogleVR\DemoScenes\HeadsetDemo ,GoogleVR\DemoScenes\ControllerDemo
HeadDemo
這個demo是gvr模擬的頭部運動的Demo,操作方法:在PC上 按住Alt+移動鼠標 模擬頭部轉動,按住 Ctrl+移動鼠標 模擬頭部傾斜
上述兩種運動都是 GvrMain\Head 的transform屬性在發生改變
當准星選中某個GameObject時,會有一個准星放大縮小的動畫,實現代碼請看 HeadDemo\Teleport.cs
ControllerDemo
此demo大概是通過連接手機來控制,實現代碼請看ControllerDemo\ControllerDemoManager.cs
答疑
條件:我是直接使用GvrMain.prefab,文中的Main Camera是指:GrvMain\Head\Main Camera
場景中沒有准星?
答:把GoogleVr\Prefabs\UI\GvrReticle.prefab 拖動到 GrvMain\Head\Main Camera下
場景中的GameObject不能被選中?
答:1. 給Main Camera添加 Physics Raycaster
2. 在Physics Raycaster 的Event Mask 選擇要接收事件的 Layer
如何讓某個GameObject可以被選中?
答:1. 給該GameObject添加 Collider (可以是BoxCollider,SpereCollider等等)
2. 再給該GameObject添加 Event Trigger (事件觸發器)
3. 給該GameObject 綁定事件處理腳本,該腳本中包含以下函數 Enter ,Trigger ,Exit ,具體請實現
如何讓UI元素顯示在3D場景中?
答:1. 以UGUI為例,創建一個簡單的UI
2. 修改Cavas 的Render Mode為 Word Space,這樣它就可以渲染在世界空間中,而不是渲染在最頂層的屏幕上
3. 調整UI的位置到 Main Camera 視野內
如何接收場景中UI按鈕的點擊事件?
答:1. 創建好UI之后,在Hierarchy視圖中找到 EventSystem
2. 給 EventSystem 添加 GazeInputModule
3. 把EventSystem 上的 Standalone Input Module 禁用或 把順序調整到 GazeInputModule下,或者 Remove它
4. 給UI按鈕 綁定事件處理腳本,該腳本中包含以下函數 Enter ,Trigger ,Exit ,具體請實現
如何取消左右兩屏顯示成普通的顯示
答: 在GrvMain 的GvrViewer 組件中,不勾選 VR Mode Enable
參考資料
How to Make a VR Game With Unity and Google Cardboard
英文原版:https://www.raywenderlich.com/116805/make-vr-game-unity-google-cardboard