6

SteamVR_TrackedObjectが Vive コントローラーであり、Vive トラッカーであるかどうかを判断する最良の方法は何ですか?


0 コントローラーと 1 タッカーがペアリングされている場合:

トラッカーは の時点Controller (right)で取得されCameraRigます。

コントローラー 1 台とタッカー 1 台をペアリングした場合:

トラッカーはデバイス 2 に設定されています。

2 台のコントローラーと 1 台のタッカーがペアリングされている場合:

3 分の 1 を作成し、SteamVR_TrackedObjectそれをCameraRigobjects配列に配置します。また、コントローラーがトラッキングを失うと、トラッカーも同様です。


各シナリオで、トラッカーは最終的に異なるSteamVR_TrackedObject.index. SteamVR_TrackedObjectaがトラッカーかどうかを確認する、またはトラッカーがどれであるかを確認する最良の方法は何indexですか?

4

2 に答える 2

10

SteamVR_TrackedObject私がまだ見つけたをチェックする唯一の方法は、をチェックすることですETrackedDevicePoperty.Prop_RenderModelName_String

uint index = 0;
var error = ETrackedPropertyError.TrackedProp_Success;
for (uint i = 0; i < 16; i++)
{
    var result = new System.Text.StringBuilder((int)64);
    OpenVR.System.GetStringTrackedDeviceProperty(i, ETrackedDeviceProperty.Prop_RenderModelName_String, result, 64, ref error);
    if (result.ToString().Contains("tracker"))
    {
        index = i;
        break;
    }
}

次にSteamVR_TrackedObject.index、インデックスに設定できます:

GetComponent<SteamVR_TrackedObject>().index = (SteamVR_TrackedObject.EIndex)index;

これに関するドキュメントを見つけるのはこれまでかなり困難でしたが、いくつかのソースを次に示します。

于 2017-04-03T12:24:04.287 に答える