見出し画像

Vive Controller と余った HMD で全身トラッキングしよう。

Vive Controller で6点や8点、11点トラッキングする方法。


用意するもの

・ベースステーション 1.0
 1台、可能なら2台
・Vive Controller 1.0
 トラッキングしたい点数分 
・Micro-B な USB ケーブル
 USB 3.0 の山が2つあるようなものは不可

ドングル (以下のどれかがあればよい)
・Vive HMD (中古が非常に安い CE 推奨、Elite ではない Cosmos はたぶんだめ)
 トラッカー2つにつき1台必要
・Watchman Dongle (Vive Tracker 付属)
 トラッカーと同じ個数必要
 トラッカーとセットでしか買えないと思いきや、実は ifixit から 49.99 ドルで買えますが、中古の Vive CE の2倍の値段……
 HTC Vive Tracker Dongle 3.0 (ifixit.com)
・Tundra Super Wireless Dongle
 SW3 はトラッカー3つ、SW4はトラッカー4つにつき1個必要
・Steam Controller Wireless Receiver などによる自作 Watchman Dongle
 基本的にはトラッカーと同じ個数必要

手順

1, ベースステーションを設置する
2, コントローラーをトラッカー化する
3, ドングルをPCに接続
4, コントローラー(トラッカー)のペアリング
5, SteamVR での設定・調整

基本的には、頭に Vive HMD 使う場合はコントローラーのトラッカー化、頭に Quest を使う場合はコントローラーのトラッカー化と SteamVR での調整以外は操作は一般的な Vive Tracker を使う方法と同じです。
正直言って似たような内容の記事を量産する、そのために時間を使う価値が見いだせないので、他の記事を参照すれば何とかなりそうなところはざっくりとしか書きません。

1, ベースステーションを設置する

この辺りは Vive HMD のセットアップや Vive トラッカーの使い方で調べたほうが画像付きで分かりやすい記事多いです。

部屋の角などに、自分が動くエリア全体がベースステーションの範囲に入るように置く。
部屋の角の床側と、反対側の角の天井側で向かい合わせに置いておけば基本的には問題ない。棚や机、ベッドなどで隠れる場合は、死角ができる限り生まれないように工夫する。

Vive Controller 2.0 を使う場合は、ベースステーション 2.0 (かまぼこ型)を1~4台でも問題ないが、Vive Controller 1.0 の場合は、ベースステーション 1.0 を 1~2台しか利用できないので注意する。Vive Controller 2.0 とベースステーション 1.0 1~2台の組み合わせでも動くので、迷ったらとりあえずベースステーション 1.0 を置く。

固定は三脚、突っ張り棒などを利用し、しっかり固定する。ねじを使う場合は、一般家庭は石膏ボードな壁なので、石膏ボード用のアンカーボルトを使用する。そうでないと振動で落ちてくる。
ホチキスで固定とか両面テープなどは論外。ほぼ確実に落ちます。

2, コントローラーをトラッカー化する

トラッカー化したい Vive Controller もしくは Vive HMD を1台のみ PC につなぐ。

C:\Program Files (x86)\Steam\steamapps\common\SteamVR\tools\lighthouse\bin\win64
に行き、lighthouse_console.exe があるか確認。
ない場合は SteamVR をインストールしなおす。

これを起動すると、以下のような画面になる。

10桁の英数字は Vive HMD に内蔵されているドングルもしくは Watchman Dongle、10桁の英数字-*YX は Super Wireless Dongle、LHR-8桁の英数字は Vive Controller もしくは Vive Tracker もしくは Vive HMD のトラッカー部分。

本体にこれらのシリアル番号は書かれていないので、基本的には1台のみ接続することを推奨。

downloadconfig と入力し、書き換えるための設定ファイルを入手。
成功すれば、lighthouse_console と同じディレクトリに、[シリアル番号].json というファイルが出現する。
この元の状態のファイルは、一度書き換えたデバイスからは二度と取り出せないので、必ずバックアップを取る。

ほかの同型番のコントローラーなどからほぼ同じファイルを取り出すことも可能だが、稀に数値が違う場合(数値を調整すると、トラッカーの位置を微調整できる)があるほか、Vive CE は初期型と後期型(重さやセンサーの位置が違う)など同型番でも違うものがあるので、基本的には流用は推奨しない。

型番は同じ

なお、一度ペアリングしている場合は、C:\Program Files (x86)\Steam\config\lighthouse\[シリアル番号] に同じファイルが config.jsonという名前で存在することもある。

取り出した設定ファイルを Visual Studio Code などで開き、いくつかの行を修正する。

修正項目 1
"device_class": "controller", から "device_class": "generic_tracker",
Vive Controller なら 12行目あたり。

修正項目 2
"model_number": "Vive Controller MV", から "model_name": "Vive. Tracker PVT",
"render_model": "vr_controller_vive_1_5", から "render_model": "vr_tracker_vive_1_0",
Vive Controller なら301行目あたり。

また、"revision": 1,"trackref_from_head": [ の間の行に、"tracked_controller_role": "", を追加。
Vive Controller なら304行目あたり。


あとは Ctrl + S を3回くらい押して、確実に書き替えたファイルを保存。

lighthouse_console.exe に戻って、
uploadconfig [書き換えた設定ファイルのパス]
と打って設定ファイルを書き込み(3回くらい繰り返しましょう)、poweroff と打ってコントローラーの電源をオフ。
電源を切らないと、書き換えた設定ファイルの設定に切り替わりません。

書き換わらなかったやつ

3, ドングルをPCに接続

Vive HMD をトラッカー兼ドングルとかいう状態にしていないなら、PC にUSB でつなぐだけです。
Vive HMD は、リンクボックスは不要です。また、HDMI をつなぐ必要はなく、DC12V の電源と、USB だけつないでください。

4, コントローラー(トラッカー)のペアリング

C:\Program Files (x86)\Steam\config\steamvr.vrsettings を開き、
"steamvr" : { の次の行あたりに、"activateMultipleDrivers" : true, と追記します。
他の SteamVR の設定などによって行数は違いますが、 "steamvr" : { から次の }, の間に記入してください。

Vive HMD を頭につける場合は不要ですが、Quest AirLink, ALVR, Virtual Desktop などを使う場合は必要です。

SteamVR を起動したら、
ハンバーガーメニュー(横棒3本)→デバイス→コントローラーのペアリング
を開きます。

ペアリング画面が出たら、Vive コントローラー ではなく、 Vive トラッカーを押してペアリングを開始します。
トラッカー化した Vive Controller の場合は、本体のメニューボタン(横棒3本)とシステムボタン(四角が2つ)の長押しでペアリングが始まります。
ランプが青から青点滅になればペアリング開始、緑になれば成功。

もとから緑の場合や、昔コントローラーとして使っていた場合などは、すでにペアリングがされているかもしれません。

この時点で、 SteamVR でアイコンがコントローラーではなくトラッカーになっていることを確認します。
変わっていない場合は、SteamVR を終了し、もう一度 lighthouse_console で設定ファイルを書き込んでください。

書き換わらなかったやつ


5, SteamVR での設定・調整

ペアリングを終えたら一度 PC ごと再起動しましょう。
なぜか再起動しないと VRChat 内で、手が動かない、移動なども認識されない状態になることがよくありました。(原因不明)
Vive HMD を頭につけている場合はこれでおしまいです。

Quest などの場合は、まだ設定がいくつか残っています。

OpenVR Space Calibrator を以下のサイト (GitHub) から入手します。
このソフトは、Lighthouse (ベースステーション) を使わないで位置合わせしている Quest などと、それらを使う Vive などの位置を合わせるためのツールです。
https://github.com/pushrax/OpenVR-SpaceCalibrator/releases/latest

インストールしたら、もう一度 PC を再起動し、 SteamVR を起動します。

SteamVR を起動した後に、OpenVR Space Calibrator が自動起動します。しない場合はスタートメニューなどから起動します。

OpenVR Space Calibrator で Quest HMD (左側、Miramar)と、Vive トラッカー (右側、LHR-8桁英数字)を選択します

Vive トラッカーがどれかわからない場合は、Identify selected devices を押すと、コントローラーの場合は振動します。トラッカーの場合は特に何も起こらないので、シリアル番号を lighthouse_console で確認するなどして頑張ります。(シリアル番号の話は下にまた書きます)

Quest HMD の表面に Vive トラッカーを押し当てた状態で、Start Calibration を押し、8の字で動いたりすれば SteamVR 内で、Quest HMD の目の前に Vive トラッカーが表示されるはずです。
Fast は精度が低いので、Slow あたりがおすすめです。

これでコントローラーを使った格安ブルボディトラッキング環境の完成!

VRChat の場合は、クイックメニューで、Sit/Stand の切り替えだった部分が Calibrate FBT になってるので、それを押してトラッカーの位置と VRChat 内のアバターの位置を合わせます。
スカートが長いアバターや、しっぽがあるアバターなどは、それらにトラッキングがついてしまうことがあるので、何らかのスカートやしっぽがないアバターを用意しておくと楽です。
また、身長があまりにも物理現実とアバターで違いすぎると位置がずれやすくなるので、アバターのスケールを少し大きくして160cm 近くにしておくと合わせやすいです。

ところで、Quest ユーザーの人は指トラッキングもしたくないですか?
Index 買う必要ないです。とりあえず ALVR でググってみてください。
ALVR は基本的に無線用ですが、ADBForwarder を入れることで、USB 接続でも利用できます。
記事は気が向いたら書きます。

おまけ

Vive HMD を頭につけているときに、Vive HMD をもう一台つないでドングルとして使うと、頭が動かなくなる場合

なぜかドングル用 HMD の座標で、頭の HMD の座標が上書きされることがあるみたいです。ドングル用 HMD の、ドングル部分以外を認識できなくしてしまえば直ります。
先に、Vive や Index などの、Lighthouse な HMD で、メインで使う(頭につけたい)ものとそれらにつながっているリンクボックスは、USB 接続を外しておきます。
Windows の デバイス マネージャー を開き、表示を デバイス(コンテナー別) にし、以下のものを無効にします。

*リンクボックスのBluetooth の無効化*
BCM920703 Bluetooth 4.1 の中にある BCM920703 Bluetooth 4.1 USB Device
(そもそも、ドングル化したい HMD は、リンクボックスを外して、直接 USB と電源だけつなげば使えます)

*HMD として認識しなくする*
Lighthouse FGPA RX の中にある、USB Composite Device

*HMD のスピーカー、マイク、カメラ無効化*
HTC Vive (カメラアイコン)の中にある、USB Composite Device
(無効にする前に、USB Composite Device と同じ高さにスピーカーやマイクがあることを確認してください)

HTC Vive の中に、HID 準拠デバイス、HID 準拠ベンダー定義デバイスx2、USB 入力デバイス x3、汎用 USB ハブがあるものは、無効にしないでください。(ここがドングルとして PC に認識されている部分)
また、Tundora Labs の Super Wireless Dongle を使う場合は、Dongle McDongleface が3つか4つありますが、それは無効にしないでください。

同時に複数台接続したい場合や、Vive HMD をつなぎっぱなしにしたまま書き換えしたい場合

一度すべてのトラッカー、HMD、ドングルを取り外し、 lighthouse_console.exe が一瞬で終了してしまうことを確認。
閉じずに開きっぱなしになる場合は、何かが取り外しされていないまま残っているか、別の不具合が起きている。

その後、トラッカーや HMD を1台ずつ接続し、そのたびに lighthouse_console.exe を起動する。表示されたシリアル番号をトラッカーなどにわかるようにラベルで貼るなどして管理しておく。

あとは、lighthouse_console.exe を起動した後に、
serial [書き換えたいトラッカーや HMD のシリアル番号] と打てば、そのシリアル番号のデバイスに、操作する対象が切り替えられる。あとは1台のみ接続したときと同様にできる。
(画像の黄色い部分がしっかり変わってるか確認)

SteamVR で表示される3Dモデルを好みのものに置き換える

SteamVR で、ホーム画面などにおいて使用しているコントローラーやトラッカー、ベースステーションなどが空間に表示されるが、あの3Dモデルも変更することが可能である。
SteamVR に元から入っているモデルであれば、
C:\Program Files (x86)\Steam\steamapps\common\SteamVR\drivers\htc\resources\rendermodels\
C:\Program Files (x86)\Steam\steamapps\common\SteamVR\resources\rendermodels\
このあたりにあるものが利用可能。

上記のフォルダ内にある、モデルごとのフォルダ名を、lighthouse_console で取り出した設定ファイルの302行目あたりにある、
"render_model": "[変えたいモデルのフォルダ名]",
に記入すれば3Dモデルが変更可能。
(3Dモデルを変えたからといって、それぞれの機能が変わるわけではない)

自作のモデルを入れたければ、SteamVR の公式ドキュメントを読み漁るとそれについての項目があるはずです。