SteamVR2.0基本思路及快速入門

SteamVR2.0(我這裏用v2.5版本)的動作捕捉與MFC中的變量綁定很相像,大致分三步

(1).在SteamVR Input中定義量A

變量類型決定可綁定哪個動作。比如要檢測手柄扣板機動作,可以檢測是否扣了扳機(對應bool變量),也可以檢測扣了多大幅度(對應single或Vector1變量)。

(2).將變量A與某個動作綁定

(3).在代碼中使用變量A

經過上面三步,實現了代碼與硬件的通信,變量A是中間媒介。當變量A綁定了新的按鍵動作時,代碼不用修改就可適配,解耦了硬件與代碼。

下面開始進行實際操作,以HTC VIVE作爲VR設備進行測試。部分細節忽略,只寫主要部分。

1.在SteamVR Input中定義量A

在Unity編輯器中,使用 Window > SteamVR Input 命令,打開SteamVR Input 窗口。

初次導入SteamVR 2.0並運行程序時,會彈出一個對話框,提示沒有actions.json文件,並詢問是否要使用默認值,選擇Yes。

新增變量MyGripSingle,變量類型爲Vector1,完成後點擊【Save and generate】按鈕。

2.將變量A與某個動作綁定

點擊【Open binding UI】,開始將變量與動作綁定。

3.在代碼中使用變量A即可

(1).新建場景,將Assets\SteamVR\Prefabs下的[SteamVR].prefab、[CameraRig].prefab拖入場景,有了這兩個組件,就可以在頭顯中看到VR場景了。

(2).創建空物體MyTest,創建腳本MyTest.cs並掛載到MyTest物體上,在MyTest.cs輸入如下代碼:

using UnityEngine;
using Valve.VR;

public class MyTest : MonoBehaviour {
	void Update () {
        if (SteamVR_Actions.default_MyGripSingle.changed)
        {
            Debug.Log("檢測到:"+SteamVR_Actions.default_MyGripSingle.axis);
        }

         if (SteamVR_Actions.default_MyGripSingle[SteamVR_Input_Sources.LeftHand].changed)
        {
            Debug.Log("檢測到左手柄:"+SteamVR_Actions.default_MyGripSingle[SteamVR_Input_Sources.LeftHand].axis);
        }

        if (SteamVR_Actions.default_MyGripSingle[SteamVR_Input_Sources.RightHand].changed)
        {
            Debug.Log("檢測到右手柄:" + SteamVR_Actions.default_MyGripSingle[SteamVR_Input_Sources.RightHand].axis);
        }
    }
}

(3).運行程序,扣動扳機,就可以看到輸出結果了。大功告成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章