1. 程式人生 > >SteamVR外掛使用

SteamVR外掛使用

  • SteamVR Plugin外掛使用。

  • 可能出現錯誤:

問題1

Failed to load IVRRenderModels interface version IVRRenderModels_005

目前解決方法
  • SteamVR Plugin指令碼分析

  • Assets/Plugins/openvr_api.cs 

這直接封裝了steamvr SDK的支援。
是必須的指令碼。它提供的所有功能steamvr暴露。不建議你做
更改此檔案。應與相關的openvr_api DLL同步。

  • Assets/SteamVR/Scripts/SteamVR.cs 

系統的初始化和關閉。使用SteamVR.instance 訪問。由於任何原因,如果初始化失敗,則可能返回null。

  • Assets/ SteamVR / Scripts / SteamVR_Camera.cs VR攝像機,主要功能是將Unity攝像機的畫面進行變化,形成Vive中的成像畫面

 為了對抗畸變校正引起的拉伸,以更高的解析度渲染場景。 由於Unity中的所有相機都是順序渲染的,所以在每個 眼睛相機之間共享一個靜態渲染紋理。

SteamVR提供了一個特定的渲染目標大小,以減輕失真, 然而,渲染到更高的解析度會在相關 費用下提供額外的多采樣優勢。這可以通過SteamVR_Camera.sceneResolutionScale控制。

注意:GUILayer和FlareLayer與SteamVR_Camera不相容,因為它們在螢幕空間而不是世界空間中渲染。

這些將自動移動SteamVR_GameView物件,該物件本身將自動 新增到SteamVR_Camera的父'head'物件。AudioListener也被轉移到頭部,以便 音訊被適當的空間化。

  • Assets/ SteamVR / Scripts / SteamVR_Overlay.cs - 此元件用於協助在VR中呈現2D內容。

使用特殊的渲染路徑將指定的texture合成到虛擬曲面上的場景中,以 提高保真度。

  • Assets/ SteamVR / Scripts / SteamVR_TrackedObject.cs - 將其新增到要使用跟蹤的任何物件。

該 HMD有一個設定為自動。對於控制器,選擇要對映到的物件的索引。一般來說, 您應該將這些物件載入到相機的“origin”物件,以便它們在相同的空間中跟蹤。但是,如果 不方便,您可以在TrackedObject本身中指定“origin”。

  • Assets/ SteamVR /指令碼/ SteamVR_RenderModel.cs -該元件用於渲染手柄的模型,並且跟蹤手柄的位置。
  • Assets/ SteamVR / Scripts / SteamVR_Utils.cs - 用於在Unity中使用SteamVR API的各種位,包括一個 簡單的事件系統,用於處理向量/四元數對的RigidTransform類,矩陣轉換和 其他有用的功能。
  • SteamVR_PlayArea 

    用於顯示玩家可遊玩區域。使用方法,在Origin物體上新增該指令碼即可

  • SteamVR_ControllerManager和SteamVR_TrackedObject

控制器,主要用於設定和檢測Vive控制器。

Vive控制器由選單鍵(ApplicationMenu),觸控板(Touchpad),系統鍵/電源鍵(System),扳機鍵(Trigger),側柄鍵(Grip),組成

使用方法:

在Origin物體上新增2個子物體代表Vive的2個手柄,增加SteamVR_TrackedObject,Index設定為None

在Origin物體上新增SteamVR_ControllerManager,設定左右手柄

在origin上再加一個子物件主相機作為head如圖,加上steam vr_tracked object

  • SteamVR_Controller  控制器的相關資訊

 關於控制器的相關資訊都包含在SteamVR_Controller這個指令碼之中。注意:SteamVR_Controller是非Monobehavior的指令碼,並沒有掛在場景下,其執行是通過SteamVR_Render指令碼對於其中Update()函式的呼叫從而一直迴圈獲取手柄相關資訊。

而SteamVR_Render指令碼是在程式執行時自動載入至場景。

ButtonMask類:手柄各按鍵的名稱。

Device類:最重要的類,封裝了跟蹤裝置的全部資訊。

Update()函式:被SteamVR_Render指令碼呼叫,更新各跟蹤裝置的資訊。

Input()函式:根據Index初始化Device[]陣列,並例項化所有16個Device。