Unity
VR
SteamVR
OpenVR

EasyOpenVRUtil (UnityでのOpenVR直叩き支援ライブラリ)

EasyOpenVRUtil

かゆいところに微妙に手が届かないSteam VR Pluginの仕様を見て、
補助ライブラリを作りたくなりました。

OpenVRに直接アクセスして、
Steam VR 2.0で色々おもしろいことになった入力システムを無視して
コントローラやトラッカーの座標を取得したり、
識別しにくいトラッカーをシリアル番号で識別できたり、
バッテリー残量を取得できたり、
VR内スクリーンショットを勝手に撮影したり、
デバイス一覧を取得したり、
非VRアプリケーションだけどトラッカーやコントローラーの姿勢を取得したりできます。

3時間で作ったのでデバッグ不足なところがあるかも知れません。不具合報告お願いします。

↓ダウンロード
EasyOpenVRUtil
https://github.com/gpsnmeajp/EasyOpenVRUtil

CC0ライセンスです。
バグ報告などは、コメント、メール、もしくはDiscord:https://discord.gg/QSrDhE8まで

使い方

詳細はこちらをご参照ください。
https://github.com/gpsnmeajp/EasyOpenVRUtil/wiki

例えば特定のシリアル番号を持つVIVEトラッカーの位置を
装着位置や角度をリセットした上でGameObjectに反映する処理は以下のように書けます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using EasyLazyLibrary;

public class VRTracker : MonoBehaviour {
    public GameObject Tracker;
    public string serialNumber;
    EasyOpenVRUtil eou;
    EasyOpenVRUtil.Transform offset;

    void Start () {
        eou = new EasyOpenVRUtil();
    }

    void Update () {
        eou.Init(); //初期化処理(初期化後は特に何もしない)
        eou.AutoExitOnQuit(); //VRシステムの終了を検知して自動終了する

        //シリアル番号を指定して、姿勢情報を取得
        var t = eou.GetTransformBySerialNumber(serialNumber);
        if (offset == null)
        {
            //一番最初に取得された位置情報を、初期姿勢とする
            offset = t;
        }
        //初期姿勢からの変化を、GameObjectに反映する
        eou.SetGameObjectLocalTransformWithOffset(ref Tracker, t, offset);
    }
}