Unity3D SteamVR Plugin學習筆記(1)

  • SteamVR Plugin插件使用。

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

  • 可能出現錯誤:

問題1

Failed to load IVRRenderModels interface version IVRRenderModels_005數組

目前解決方法

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

  • SteamVR Plugin腳本分析

  •  

  • Assets/Plugins/openvr_api.cs 函數

 

這直接封裝了steamvr SDK的支持。
是必須的腳本。它提供的全部功能steamvr暴露。不建議你作
更改此文件。應與相關的openvr_api DLL同步。spa

 

 

  • Assets/SteamVR/Scripts/SteamVR.cs 

 

系統的初始化和關閉。使用SteamVR.instance 訪問。因爲任何緣由,若是初始化失敗,則可能返回null。.net

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

 

 爲了對抗畸變校訂引發的拉伸,以更高的分辨率渲染場景。 因爲Unity中的全部相機都是順序渲染的,因此在每一個 眼睛相機之間共享一個靜態渲染紋理3d

SteamVR提供了一個特定的渲染目標大小,以減輕失真, 然而,渲染到更高的分辨率會在相關 費用下提供額外的多采樣優點這能夠經過SteamVR_Camera.sceneResolutionScale控制。orm

注意: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控制器功能開發

相關文章
相關標籤/搜索