2019年1月7日月曜日

Oculus Rift + Vive Tracker セットアップガイド

2019/03/11 追記

このページに書いてあるのより少し簡単にできるやり方あります↓

Oculus Rift x Vive trackerセットアップガイド(SteamVR Beta 1.3.7対応ver.)

https://si-nounai.blogspot.com/2019/03/oculus-rift-x-vive-trackersteamvr-beta.html
Trackerを使用しない時もひと手間かかるようになりますが、いろいろ楽です。

――――――――――――――――――――――――――――――

Oculus Rift + Vive Trackerのセットアップについて。

方法は他にもあるけれど、とりあえずこの手順でやっておけばOK!
というものをまとめます。
RiftとViveトラッカーの同時利用と、PlaySpace Moverの使用について
一通りの手順です。

※SteamVRのバージョンによってはうまく動きません。
 きっとValveに嫌われているんだと思います。悲しいね。
 おすすめは1.1.4です。それより後のバージョンは毎回プレイエリアの設定が必要です。

――――――――――――――――――――――――――――――

0.前提条件

Oculus Riftのセットアップが済んでおり、SteamVRが起動できること。

1.必要なもの

1.1 ハードウェア(HMDやトラッカーなど)

・Oculus Rift
・ベースステーション(2.0のほうが良い)
・Viveトラッカー
・高さ15.5~16cmくらいの台
・マスキングテープやシール(粘着力が弱いもの。切れ端程度でOK)
・スイッチ付き電源タップ(スイッチは2つ以上あると良い)
・電源タップ(2口以上)
   

1.2 ソフトウェア

・Oculus Software
  Riftが使える状態にしておきます。
   
・SteamVR
  Steamからインストールし、起動できるようにしておきます。
  バージョンは1.1.4がおすすめです...
   
・OpenVR Input Emulator
  https://github.com/matzman666/OpenVR-InputEmulator/releases
  こちらのリンクから、「OpenVR-InputEmulator-v1.3.exe」をダウンロードし、
  SteamVRインストール後にインストールします。
   
・OpenVR-SpaceCalibrator
  https://github.com/pushrax/OpenVR-SpaceCalibrator/releases
  こちらのリンクから、「OpenVR-SpaceCalibrator-0.5.zip」をダウンロードし、
  任意のフォルダに解凍(展開)しておきます。(インストール不要)
   
・PlayspaceMover
  https://github.com/naelstrof/VRPlayspaceMover/releases
  こちらのリンクから、「PlayspaceMover-v0.1.8.zip」をダウンロードし、
  任意のフォルダに解凍(展開)しておきます。(インストール不要)


2.手順

2.1 Riftの床高さ設定

Oculus Softwareから、床高さを再設定します。

2.1.1 Oculus Softwareの操作

まずは、下の図の通り、
「Devices」→「Configure Rift」→「Floor Position」を選択します。
(日本語表記の場合は、「デバイス設定」→「Riftを設定」→「床の位置」です。)


次の画面では、本来であれば自分の身長を入力するのですが、
今回は30cmを入力します。

①「Metric Units」をONに、②「30」を入力、③「Continue」をクリックします。
(日本語表記の場合は、①「メートル法」→②「30」を入力→③「次へ」です。)

Oculus Software内での操作はこれで一旦おしまいです。


2.1.2 Oculus Riftの細工?

2.1.1の手順の後は、本来であればHMDをかぶって指示に従うところですが、
今回はちょっと手順が異なります。

まずは、Riftにあるセンサーに少し細工をします。
細工と言っても、分解したり改造したりするわけではないのでご安心ください。


Riftの中央、少し上あたりに、
黒い楕円のテカテカした部品と、
その右にLEDが光っている場所が
あります。

これは、HMDをかぶっているかを
判別するための近接センサーです。
ここにマスキングテープやシール
を貼って…





こんな感じにします。
黒い楕円を覆うと、その右にある
LEDが消え、HMDの画面が表示されます。

このテープは、床高さの設定が終わったら
剥がしますので、
跡が残らないよう、粘着力が弱いものを
選びましょう。






2.1.3 Riftを置く

続いて、Riftを設置します。

2.1.1と2.1.2の手順が完了したら、
プレイスペースの中心あたりに15.5cm~16cmの高さの台を置き、
その上にRiftを置きます。


写真ではKinect oneの箱(約15.7cm)に
乗せています。












2.1.4 床高さの設定

ここまでできたら、Touchコントローラーのトリガーを一度引き、
床高さを設定します。

HMDをかぶって床高さが大体合っているか確認しましょう。
確認したら、もう一度トリガーを引いて、床高さを確定します。

2.1.5 マスキングテープ,シールを剥がす

2.1.2で貼ったマスキングテープ・シールはこれで役目が終わったので、
剥がしておきましょう。


これでRiftの床高さが設定されました。

ここからはSteamVRの設定に入ります。


2.2 SteamVRの設定ファイル書き換え

SteamVRにOculus RiftとViveトラッカーを認識させるためには、
「default.vrsettings」という設定ファイルの書き換えが必要です。

保存場所は…




Steamの「ライブラリ」→「VR」を選択し、
「SteamVR」を右クリック→「プロパティ」を選択します。

「ローカルファイル」タブの「ローカルファイルを閲覧」をクリックすると、
SteamVRがインストールされているフォルダが表示されます。



ここの、「resources」フォルダ→「settings」フォルダ内にあります。

「default.vrsettings」を、メモ帳などのテキストエディタで開いて、

25行目あたり(SteamVRのバージョンによって変わる)の
    "activateMultipleDrivers": false,
というのがあるので、false を true に書き換えて…
    "activateMultipleDrivers": true,
こうします。

これだけで、Oculus RiftとViveトラッカーが同時にSteamVRに
読み込まれるようになります。


以下、ついでに書き換えておくと良い設定です。

・Vive Trackerを動かさないと5分でスタンバイになるのを止める

135行目あたり(SteamVRのバージョンによって変わる)にある、
"turnOffControllersTimeout" : 300.0,
  を、
"turnOffControllersTimeout" : 0,
  に書き換えることで、スタンバイにならなくなります。
  600なら10分になるのかな?

・「SteamVRをアップデート中にエラーが発生しました(アプリ実行中)」が出る場合

複数のTrackerを起動する際、
「SteamVRをアップデート中にエラーが発生しました(アプリ実行中)」
という警告が出る場合があります。
とりあえず設定しておきましょう。

 138行目あたり(SteamVRのバージョンによって変わる)にある、
"autoLaunchSteamVROnButtonPress" : true
 を、
"autoLaunchSteamVROnButtonPress" : false
 に書き換えます。



2.3 Oculus RiftとViveトラッカーの調整


2.3.1 ベースステーションの設置

ベースステーションを設置しましょう。
参考サイトをいくつか紹介します。

HTC Viveが到着するまえに準備しておく事1 ベースステーション設置方法


ベースステーション2.0の場合、
[CEDEC 2018]「Vive Tracker」を使うときの注意点とは? 
「Vive」の最新情報が披露された講演をレポート
ここの「ベースステーション2.0の注意すべき点」も参考になるかと。

ベースステーションの固定方法についてですが、僕の場合は、
カーテンレールやワイヤーラックに取り付けています。




ベースステーションの電源についてですが、
Oculus Rift+Viveトラッカーを使用する際、気をつける点があります。

2.3.6で、Riftとトラッカーの位置調整をしますが、
その際、どのベースステーションが最初に認識されたかが重要となります。

細かい説明は省きますが、基準のベースステーションを一つ決めてください。
なるべく見晴らしのいい場所にあるベースステーションを選ぶといいかも?
どれでもいいですけどね

この基準のベースステーションだけの電源を最初に入れられるよう、
スイッチ付きの電源タップを使って配線します。

配線例は…下手な絵でごめんね
こんな感じです。
これなら、一番左のベースステーションだけの電源を最初に入れられます。


2.3.2 トラッカーのペアリング

2.2の設定を済ませてあれば、RiftとトラッカーがSteamVRに読み込まれます。

※最初はベースステーションの電源を切って作業します。

まずは、SteamVRを立ち上げ、Viveトラッカーをペアリングします。
参考:VIVE トラッカー(2018)のペアリング
https://www.vive.com/jp/support/accessory/category_howto/pairing-vive-tracker.html



トラッカーがペアリングされると、灰色の六角形トラッカーマーク(点滅)
現れるはずです。
とりあえずは、Riftとコントローラー、センサー以外に何か認識されていればいいかと。

※SteamVRの左上は、「利用可能」「利用不可」どちらが表示されていてもOKです。

2.3.3 トラッカーを認識させる

2.3.2でトラッカーをペアリングしたら、
全てのベースステーションの電源を入れます。



トラッカーをベースステーションのトラッキング範囲に置き、しばらく待つと、
上の画像のようになると思います。
この時点では、ベースステーションが複数台あるのに1つしか認識されないかも
しれませんが、とりあえずは無視して進めてください。

※SteamVRの左上は、「利用可能」「利用不可」どちらが表示されていてもOKです。

読み込まれない場合、Trackerがペアリングされているか、
Trackerからベースステーションが見えるか、
Riftのエラーが発生していないか確認してください。


2.3.4 ベースステーションのチャンネル設定をする

ベースステーションのチャンネルはすべてバラバラである必要があります。

ベースステーション1.0の場合、背面のボタンを押すことで、a→b→c→a…と
切り替えられます。
チャンネルはベースステーションの正面にあるインジケーターに表示されます。
基準のベースステーション(2.3.1参照)のチャンネルは「b」としてください。
もう一台は「c」にします。(1台だけの使用なら「b」のみとします)

ベースステーション2.0の場合も、背面の小さな穴の奥にあるボタンを押すことで、
1→2→3→…とチャンネルを切り替えられます。(16まであるのかな?)
ベースステーション2.0はインジケーターなどがないため、
ボタンを押してはSteamVRの画面でチャンネルを確認する、という手順が必要に
なります。
カーソルを合わせると、右下にチャンネル番号が出ます。
全部のベースステーションのチャンネルがバラバラになるよう、調整します。
基準のベースステーション(2.3.1参照)のチャンネルはなんでもいいです。
こだわりがなければ1にしておくのが無難かと。

2.3.5 ルームセットアップを実行する

まずは、ルームセットアップをします。

SteamVRに「利用可能」の表示が出ている場合、全てのベースステーションの
電源を切ると、上に「ルームセットアップを実行」と出ます。

SteamVRに「利用不可」の表示が出ており、上に「ルームセットアップを実行」
と出ている場合は、そのままルームセットアップを実行してください。


※SteamVRに「利用不可」と出ていても、Riftのトラッキングが切れていると
「ルームセットアップを実行」が出ません。Riftを動かしてトラッキングさせましょう。



それでは、Riftを再度15.5~16cm程度の高さの台に乗せ、
プレイエリアの中央あたりに置きましょう。(位置は大体でいいです)

ルームセットアップは「立位のみ」を選択します。
ここで立位のみと設定しても、プレイエリアの壁(Guardian System)は
Riftで設定したものが出てきます。(設定してある場合)

「次へ」をクリック
※「次へ」が押せない場合は、Riftのトラッキングが切れているかもしれません。
 少しゆすったり動かしてトラッキングさせましょう。

「中央を測定」をクリック
※「ヘッドセット 障害物あり」と出る場合、Riftのトラッキングが切れているかも
 しれません。Riftを少しゆすってみましょう。

床の高さは、15.7cmの台の場合14.3cmくらいがいいと思います。
数値入力後、「床をキャリブレーション」をクリック。

「次へ」をクリックして終了。

これで、Rift+トラッカー使用時のプレイエリアが設定されます。


2.3.6 Riftとトラッカーの位置調整

・SteamVRを閉じます。

・SteamVRを閉じると、トラッカーの電源が全て切れるはずです。
 電源が切れていないトラッカーがあれば、電源を切ります。
 トラッカーの電源は、中央のボタンを5秒以上押し続けることで切ることができます。

・ベースステーションの電源をすべて切ります。

・SteamVRを起動します。

・トラッカーの電源を入れます。複数ある場合、一つずつ起動し、
 最初にSteamVRに認識されたトラッカーを覚えておきましょう。
 (いっぺんに立ち上げると、どれが最初に認識されるかわからない)


基準のベースステーション(2.3.1参照)の電源を入れます。
 そしてトラッカーが認識されるのを待ちます。
 すると、下の図のようになると思います。

・きちんとすべてのトラッカーがトラッキングされたことを確認してから、
 他のベースステーションの電源も入れます。


※ここで「ルームセットアップが無効です」とエラーが出る場合、
 2.3.5の通り、ルームセットアップを行ってください。

この時点では、Riftから見るとTrackerは現実とは全く異なる位置にあるはずです。
位置を調整する必要があるため、OpenVR-SpaceCalibratorを使用します。

・1.2でダウンロードし、適当な場所に展開した、
 「OpenVR-SpaceCalibrator.exe」を実行します。
 すると、下の図の画面が開くはずです。

左上の「oculus」からは、右か左のコントローラーを選びます。
(Left ControllerかRight Controllerのどちらか)
右上の「Lighthouse」からは、「Vive Tracker~~」の一番上のものを選択します。

それでは、選択したコントローラーと、最初に認識されたトラッカーを一緒に持ちます。

※持ち方の例
 この持ち方だと、ベースステーション1.0を使用する場合は安定しません。
 コントローラーとトラッカーの間に大き目の厚紙などを入れるなど、
 赤外線の干渉対策をしてください。


ここまで準備出来たら、以下の動画のようにキャリブレーションを行います。
無編集、撮ったまま。

手順としては、
コントローラー選択→トラッカー選択→「Start New Calibration」
あとはゆっくり大きく、コントローラーとトラッカーがずれないように動かすだけ。

ゆっくり大きくです。早く動かすとズレやすいです。

キャリブレーションは基本的には初回だけでOK。
次にSteamVRを立ち上げるときは、OpenVR-SpaceCalibratorを起動するだけで、
今回のキャリブレーション結果が適用されます。

ズレが気になるようなら再度キャリブレーションしてください。


2.3.7 PlaySpace Moverについて

PlaySpace Moverというのは、VR空間内の位置調整などに使えるものです。
VRChatでフルトラ勢が空飛んだりするのに使ってます。

使い方が厄介なので、バッチファイルの作り方だけ書いときます。

1.2でダウンロードして、適当な場所に展開したPlaySpace Moverのフォルダに、
テキストファイルを新規作成し、以下の黄色い背景の部分の内容をコピーして
貼り付けます。

cd /d %~dp0
PlayspaceMover.exe -l 128 -r 128 --resetButtonMask 2

上書き保存し、拡張子を「.txt」から「.bat」に書き換えます。

SteamVRで、OpenVR-SpaceCalibratorでの位置調整が終わったら、

OpenVR-SpaceCalibratorを閉じてからこのバッチファイルを実行してください。

順番を間違えないように。
PlaySpace Moverが立ち上がっているとOpenVR-SpaceCalibratorでの
位置調整ができないし、
OpenVR-SpaceCalibratorを閉じないとPlaySpace Moverが効きません。


このバッチファイルを起動することで、
・コントローラーの「A」もしくは「X」ボタンを押しながら
 コントローラーを動かすことで移動、
・コントローラの「B」と「Y」を同時押しすることで初期位置に戻る

ということができます。



3 次回以降の手順まとめ

今回は初回セットアップなので、かなり面倒な手順でした。
次回以降はかなり短く済みます。

①SteamVRを立ち上げる
②使用するトラッカー全ての電源を入れる
③基準のベースステーションの電源を入れる
④トラッカーがトラッキングされるのを待つ
⑤ほかのベースステーションも電源を入れる

※ここで「ルームセットアップが無効です」とエラーが出る場合、
 本記事の2.3.5の通り、ルームセットアップを行ってください。
 おそらくSteamVRのバージョン1.2.xと1.3.xの場合は毎回これが必要かと…
 Valveが何とかしてくれないとどうしようもない、困った、たすけて

⑥OpenVR-SpaceCalibratorを起動する

PlayspaceMoverを使用する場合
⑦OpenVR-SpaceCalibratorを閉じる
⑧PlayspaceMover用のバッチファイルを起動する


おしまい。