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。