ViveトラッカーでインサイドアウトのHMDをベースステーションに対応させる"OpenVR Tracking Overrides"
これは何?
HMDやコントローラーをViveトラッカーでトラッキングしたり、HMDを被らないでVRができるTracking Overridesのやり方を説明します。
トラッキングオーバーライド
Tracking OverridesはSteamVR上のデバイスのトラッキングデータを別のデバイスのトラッキングデータで上書きすることができる機能です。トリガーやタッチパッドなどのインプット、バイブレーションなどは上書きされません。
この機能を用いるとこんなことができます。
・インサイドアウトのHMDにトラッカーを取り付けてベースステーションでトラッキングする。
・VMTと併用してオリジナルのトラッキングシステムで既存のVR機器をトラッキングする
・頭にトラッカーをつけて、HMDを外した状態でVRゲームをプレイする。
公式のWikiはこちら
やり方
Tracking OverridesはSteamVRのconfigファイルにTracking Overridesセクションを追加して行います。
また上書きには上書き元のデバイスパスが必要なため、デバイスパスの調べ方を解説します。ViveトラッカーでQuestをトラッキングしようと思ったらViveトラッカーのパスを調べる必要があります。(>_<)
デバイスパス
SteamVR上のデバイス全てにあるデバイス固有のパスです。
確認はシステムレポートを作成から行います。
/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
}
}
セクション、セクションの中身が複数ある場合は","でつなぎます。
オフセット?
ViveトラッカーでHMDをトラッキングをする場合、写真のように前方にトラッカーを付けることである程度正しくトラッキングするようになります。さらに正確にトラッキングしたい場合はViveトラッカーの位置をオフセットすることをおすすめします。
ファームウェアを編集してオフセットする方法
個人的にはVMTとSteamVR Pluginを用いてオフセットするためのUnityアプリを作るのがおすすめです。
最後に
Tracking Overridesをわかりやすく(そのつもり)説明しました。configファイルを変にいじるとSteamVRが壊れちゃうのでほどほどにしようね!