Unity3D SteamVR Plugin學習筆記(1)


  • SteamVR Plugin插件使用。

在資源商店中下載最新的steamVR插件(https://kharma.unity3d.com/en/#!/content/32647)導入項目中。

  • 可能出現錯誤:

問題1

Failed to load IVRRenderModels interface version IVRRenderModels_005

目前解決方法

Steam官方論壇的中有討論到這個問題,請仔細看。https://steamcommunity.com/app/358720/discussions/0/357286663674402763/

  • 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。

詳細SteamVR_Controller類內容可以參考博客:Unity SteamVR插件詳解一:SteamVR_Controller腳本分析+Vive控制器功能開發

 


免責聲明!

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



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