2018年12月2日日曜日

Oculus Rift + Vive Trackerの同時使用について(メモ)

Oculus Rift + Vive Trackerについて、
わかる範囲でまとめてみようと思います。

※SteamVRのバージョンによって動作が大幅に変わるかもしれません。


分かりにくいところが多いかも。


手順だけまとめたのはこちら↓

Oculus Rift + Vive Tracker セットアップガイド(簡易)

https://si-nounai.blogspot.com/2019/01/oculus-rift-vive-tracker.html

今後はこっち推奨…SteamVRのバージョンアップでどうなるかわかんないけどね

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


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

SteamVRでOculus RiftとVive Trackerを同時に使用するためにやるべきこと。
以下の流れで解説していこうと思います。

1.必要なもの
2.下準備
3.Oculus RiftとVive TrackerをSteamVRに認識させるためには
4.Oculus RiftとVive Trackerの位置合わせについて
5.SteamVR 1.1.3について  1.1.4で問題は修正されました。


※文中のRift・HMDはOculus Rift、
 コントローラー・TouchはOculus Riftのコントローラー、
 TrackerはVive Tracker、
 BSはベースステーションを指します。


1.必要なもの

☆必須のもの
・Oculus RiftとOculus Software(Riftが使える状態になっていればOK)
・ベースステーション
   1.0の場合…2個(1個でも出来なくはない)
   2.0 …2個以上(1個でも出来なくはない、4個くらいまでかな)
・Vive Tracker(ペアリングを済ませておく)
・SteamVR (1.1.3はだめだぞ)
・OpenVR input emulator
・高さ15~16cmの台(2.下準備で使用します)

OpenVR input emulatorはGitHubより入手してください
https://github.com/matzman666/OpenVR-InputEmulator
SteamVR 1.1.3では使えませんでしたが、1.1.4では問題なく使えます。

Trackerのペアリングについては、こちらを参照。
VIVE トラッカー(2018)のペアリング
https://www.vive.com/jp/support/accessory/category_howto/pairing-vive-tracker.html

ベースステーション(以下、BS)についてですが、
BS2.0とTracker2018の組み合わせをおすすめします。
BS1.0だと、TouchやRiftから出る赤外線によって
トラッキングが妨害されやすいです。
2018/11/30にBS2.0の単体販売が始まったことですし、
新しく買うならBS2.0をオススメします。
※Tracker2017(旧Tracker)はBS2.0非対応なのでご注意ください。

あと、ベースステーション(BS)のチャンネル設定について。
BS1.0の場合、背面のボタンを押すことで、a,b,cとチャンネルが切り替わります。
基本的には、bとcにします。(BSを1台だけ使用する場合はbにする)
aはベースステーション同士をケーブルでつないで同期させる際に使用します。

BS2.0の場合、おそらくViveのソフトが入っていないと、リンクボックスをつないでも
SteamVRのBluetoothサービスは使用できません。
そのため、公式の方法ではないようですが、背面にある小さな穴、その中にあるボタンを押すことでチャンネルを変えられるそうです。
チャンネルについては、SteamVRの画面でしかわからないので、3.の設定をしてから合わせましょう…

2.下準備

この設定は必須ではないです。
が、設定して置くことをお勧めします。
理由は後述…

やることとしては、Riftのプレイスペース設定について、
床高さの設定を、できる限り低い位置にHMDを置いて行うだけです。

詳細な手順を紹介します。

Oculus Softwareの「Devices」→右上の「Configure Rift」から、
「Floor Position」を選択、
単位が「Centimeter(センチメートル)」になっていることを確認し、
「30」を入力します。
できる限り0に近い値を入れたいのですが、30cm未満は入れられませんので…

そしたら、プレイエリアの中心にしたいところに15~16cmの台を置き、
その上にOculus Riftを置きます。

次に、レンズとレンズの間の上部にあるセンサー(近接センサー)が反応するよう、
カバーをかけるかシールを貼るか物を置くかします。
センサー横のLEDが消えるか、Riftのディスプレイが光っていればOK。
セットアップの時だけなので、センサーさえ反応していれば問題なし。

ここまで出来たら、コントローラーのトリガーを一度引き、
床高さ・プレイエリアの中心を設定させます。
(カメラから水色の光が出てプレイエリアが設定される演出のアレです。)
トリガーを二度引くと確定してしまうので注意。

ヘッドマウントディスプレイをかぶり、床高さが現実と合っているかを確認します。
特に問題なければ、再度トリガーを引いて確定します。

VR内の床高さに問題があれば、XボタンかBボタンを押して取り消し、
台の高さを調整して、再度手順を繰り返します。

VR内の床が低すぎる場合は台を高く、VR内の床が高すぎる場合は台を低くします。
自分の好みに合わせて高めor低めに調整してもOK。


この設定を行う理由ですが、

Vive TrackerとRiftを使用する場合、
すべてのTrackerを見失うと、SteamVRのプレイエリアの床面が、
Riftのプレイエリア設定をした際のHMDの高さになってしまうためです。

なるべく低い位置にHMDを置いてプレイエリアを設定することで、
VRゲームをプレイ中にTrackerのバッテリーが全て切れてしまっても、
床面が上がってくる量は最小限で済みます。



3.Oculus RiftとVive TrackerをSteamVRに認識させる

SteamVRの設定ファイルの書き換えが必要です。
「default.vrsettings」というファイルを書き換えます。
保存されている場所は…

 (省略)\Steam\steamapps\common\SteamVR\resources\settings\

もしくは、

 Steamのライブラリ→VR(もしくはツール)にある
 「SteamVR」を右クリック→プロパティから、
 「ローカルファイル」タブの「ローカルファイルを閲覧」
 その中の、「resources」フォルダ→「settings」フォルダ


これをメモ帳や各種テキストエディタで開いて、25行目あたり
(SteamVRのバージョンによって変わる)に
    "activateMultipleDrivers": false,
というのがあるので、false を true に書き換えて…
    "activateMultipleDrivers": true,
こうします。

これだけで、Oculus RiftとVive Trackerが同時にSteamVRに読み込まれます。

※Steamのバージョンアップの度に書き換えなおす必要があります。
 でも1.1.4へのアップデートの時は大丈夫だったみたい…????


以下、ついでに書き換えておくといいかもしれない設定です。

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

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


・Vive Trackerを起動するとSteamVRが勝手に立ち上がる…

複数のTrackerを起動する際、
  「SteamVRをアップデート中にエラーが発生しました(アプリ実行中)」
  という警告が出るのは、既にSteamVRが立ち上がっているのに、
  追加でSteamVRが立ち上がろうとするため。

  138行目あたり(SteamVRのバージョンによって変わる)にある、
"autoLaunchSteamVROnButtonPress" : true
  を、
"autoLaunchSteamVROnButtonPress" : false
  に書き換えます。
  Vive Tracker起動時に自動でSteamVRが立ち上がらなくなるので、
  手動で立ち上げましょう。



4.Oculus RiftとVive Trackerの位置合わせについて

3.の設定を済ませてあれば、RiftとTrackerが両方SteamVRに読み込まれます。
きちんと読み込まれるか確認しましょう。
読み込まれない場合、Trackerがペアリングされているか、
Trackerからベースステーションが見えるか、
3.の設定ができているか確認しましょう。

この時点では、Riftから見るとTrackerは現実とは全く異なる位置にあるはずです。

まずは、ルームセットアップをします。
必ずTrackerとベースステーションを認識させた状態
(Trackerマークが緑色で点滅していない)で行うこと。

Trackerを読み込んだ時点でSteamVRの上に「ルームセットアップを実行」と出れば、
それをクリックしてルームセットアップを実行します。
出ない場合は、認識されたTracker全ての電源を切る、もしくはTrackerを覆って
トラッキングを切ることで、SteamVRの上に「ルームセットアップを実行」が出るかと。

ルームセットアップは「立位のみ」で問題ないです。
HMDの高さに関してですが、


ここで立位のみと設定しても、プレイエリアの壁(Guardian System)は
Riftで設定したものが出てきます。
ルームスケールを要求するゲームは、起動時に警告が出ますが、
OKを押せば起動します。

Rift単体使用の時とRift+Tracker使用時でプレイスペースが別物となりますが、
これは仕方ないです。

Trackerの位置調整について、2つの方法を紹介します。

※どちらの方法も、コントローラーとTrackerを一緒に動かす必要があります。
 ベースステーション1.0の場合、コントローラーから出る赤外線により、
 Trackerが荒ぶったりトラッキングが切れたりしやすいです。
 工夫する必要があります。

※完璧な位置合わせをしたつもりでも、
 全てのTrackerを見失って再度認識した時や、
 SteamVRを再起動すれば少しズレます。
 ある程度は妥協しましょう…


・OpenVR Space Calibratorを使用する

こちらは比較的お手軽です。
解説動画があります↓
https://youtu.be/W3TnQd9JMl4

ソフトの配布場所はこちら↓
https://github.com/pushrax/OpenVR-SpaceCalibrator

きちんと位置合わせさせるコツは、
コントローラーとTrackerがズレないようしっかり持ち、
大きくゆっくり動かすことです。

OpenVR Space Calibratorは、SteamVRに認識されてるTracker全てに
オフセットが適用されます。
一度起動すれば、SteamVRを閉じるまでは、OpenVR Space Calibratorを閉じても
オフセットは維持されます。

※OpenVR Space Calibrator起動中は、PlayspaceMoverでの移動は効かないため、
 オフセットが適用されたらSpace Calibratorを閉じましょう。



・OpenVR input emulatorのOffset機能を使う

こちらは、オフセットを手動で入力する方法です。
VR内のメニューにあるOpenVR input emulatorの上にある
プルダウンメニューからTrackerを選び、
Device offsetを選択し、
一番上の「Enable Offsets」にチェックを入れ、
「WorldFromFriver Offsets」を使用して、角度や位置を調整します。

Yaw,Roll,Pitchが角度、X,Y,Zが位置の調整です。

位置調整の手順としては、
コントローラーとTrackerを持ち、
前後左右に動かしながら、
Yawで水平方向の角度をある程度合わせ、
X,Y,Zで位置をある程度合わせ、
あとはYaw,X,Y,Zの微調整です。

こだわるのであれば、Roll,Pitchも調整するといいかもしれませんが、
おそらく、RollとPitchは1°あるかないかくらいになると思います。

位置合わせしたら、OpenVR input emulatorの初期画面で、
下のほうにある「New Profile」ボタンをクリック、
「include Device offset」にチェックを入れ、適当に名前を入れて「Save」します。

使用するすべてのTrackerに、保存したプロファイルを適用すれば完了です。


――――――――――――――――――――――――――――――
※RiftとTrackerの位置について、今までの経験からの考察。
 正確な情報かどうかはわかりませんが…

Oculus RiftとVive Trackerは、トラッキングの方式が全く異なるため、
お互いの位置を知ることができません。
そのため、上記のように位置・方向を合わせる必要があります。

では、Riftのプレイエリアのどこを基準にTrackerやベースステーションが配置されるか。

ベースステーションのチャンネルの一番若いもの
(b,cならb、1,2,3なら1)が、
2.でHMDを置いた位置に配置されます。

そして、Trackerはベースステーションを基準に配置されます。

Trackerの位置調整について、気をつけなくてはならないことが一つ。
オフセットの基準位置は、Trackerが最初に見つけたベースステーションの位置
(X,Y,Z座標)が中心となるようなので、
例えばTrackerがベースステーションAを始めに見つけた場合と、ベースステーションBを始めに見つけた場合では、
同じオフセットにしてもTrackerの位置が変わってしまいます。

きちんと位置合わせしたのにTrackerが全然違うところに!という場合は、
一度ベースステーションの電源を切るか、Trackerを隠してトラッキングを切り、
最初に認識させるベースステーションを変えてみてください。

一番いいのは、ベースステーションをスイッチ付きのコンセントにつなぎ、
毎回決まったベースステーション一つの電源を入れ、1つでいいのでTrackerを一度
トラッキングさせてから、他のベースステーションの電源を入れることです。

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



おしまい。