Gvr SDK for Unity 分析(一)


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

image

 

場景中的GameObject不能被選中?

答:1. 給Main Camera添加 Physics Raycaster

       2. 在Physics RaycasterEvent Mask 選擇要接收事件的 Layer

image

 

如何讓某個GameObject可以被選中?

答:1. 給該GameObject添加 Collider (可以是BoxCollider,SpereCollider等等)

       2. 再給該GameObject添加 Event Trigger (事件觸發器)

       3. 給該GameObject 綁定事件處理腳本,該腳本中包含以下函數 Enter ,Trigger ,Exit ,具體請實現

image

 

如何讓UI元素顯示在3D場景中?

答:1. 以UGUI為例,創建一個簡單的UI

       2. 修改Cavas 的Render ModeWord 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 ,具體請實現

 

如何取消左右兩屏顯示成普通的顯示

答: 在GrvMainGvrViewer 組件中,不勾選 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

中文翻譯:http://www.tairan.com/archives/10636/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM