ViveトラッカーでインサイドアウトのHMDをベースステーションに対応させる"OpenVR Tracking Overrides"

これは何?

HMDやコントローラーをViveトラッカーでトラッキングしたり、HMDを被らないでVRができるTracking Overridesのやり方を説明します。

ラッキングオーバーライド

Tracking OverridesはSteamVR上のデバイスのトラッキングデータを別のデバイスのトラッキングデータで上書きすることができる機能です。トリガーやタッチパッドなどのインプット、バイブレーションなどは上書きされません。

この機能を用いるとこんなことができます。

インサイドアウトHMDにトラッカーを取り付けてベースステーションでトラッキングする。

・VMTと併用してオリジナルのトラッキングシステムで既存のVR機器をトラッキングする

・頭にトラッカーをつけて、HMDを外した状態でVRゲームをプレイする。

f:id:marimotokunn:20220119081455j:plain

公式のWikiはこちら

やり方

Tracking OverridesはSteamVRのconfigファイルにTracking Overridesセクションを追加して行います。

また上書きには上書き元のデバイスパスが必要なため、デバイスパスの調べ方を解説します。ViveトラッカーでQuestをトラッキングしようと思ったらViveトラッカーのパスを調べる必要があります。(>_<)

バイスパス

SteamVR上のデバイス全てにあるデバイス固有のパスです。

確認はシステムレポートを作成から行います。

f:id:marimotokunn:20220118054432p:plain

f:id:marimotokunn:20220118054937j:plain

/devices/から始まる文字列がデバイスパスです。

configファイルの編集

configファイルは"C:\Program Files (x86)\Steam\config\steamvr.vrsettings"にあります。

※ファイルの編集はSteamVRを壊す可能性があります。configファイルのバックアップをおすすめします。また編集するときはSteamのタスクを落としましょう。

まずはsteamvrセクションにactivateMultipleDriversを追加します。


"steamvr" : {
      "activateMultipleDrivers" : true
   }

すでにある場合は値を変更してください。trueにすると複数ドライバーを認識できるようになります。(例、OculusとHTCなど)

次にTracking Overridesセクションを追加します。※例を参考にして、カンマの位置など正しいJSONの形式で記述してください。


"TrackingOverrides" : {
       "【デバイスパス(データ参照元)】" : "【デバイスorセマンティックパス(データ上書き先)】"
}

セマンティックパスとはデバイス固有ではなく、その時々によってパスに最適なデバイスが参照されます。

例 HMD“/user/head" 右手コントローラー“/user/hand/right” 左手コントローラー“/user/hand/left”

両方ともデバイスパスで指定することも可能です。

指定したデバイスがSteamVRに認識されると(トラッカーの電源が入ると)トラッキングデータの上書きが適用されます。


{
   "TrackingOverrides" : {
      "/devices/htc/vive_trackerLHR-01234567" : "/user/head"
   },
   "steamvr" : {
      "activateMultipleDrivers" : true,
      "installID" : "00000000000000000000",
      "lastVersionNotice" : "1.20.4",
      "lastVersionNoticeDate" : "0000000000",
      "showAdvancedSettings" : true
   }
}

セクション、セクションの中身が複数ある場合は","でつなぎます。

オフセット?

f:id:marimotokunn:20220118102011j:plain

ViveトラッカーでHMDをトラッキングをする場合、写真のように前方にトラッカーを付けることである程度正しくトラッキングするようになります。さらに正確にトラッキングしたい場合はViveトラッカーの位置をオフセットすることをおすすめします。

ファームウェアを編集してオフセットする方法

個人的にはVMTとSteamVR Pluginを用いてオフセットするためのUnityアプリを作るのがおすすめです。

最後に

Tracking Overridesをわかりやすく(そのつもり)説明しました。configファイルを変にいじるとSteamVRが壊れちゃうのでほどほどにしようね!