展示にViveトラッカーやコントローラーを利用していて困ってることメモしておく。
解決方法の情報や間違いがあれば教えていただけると嬉しいです。
3台目以降のViveコントローラーのボタン押下が取得できない
困ってる度:超困ってる
展示で4本のViveコントローラーを1台のPCに有線USB接続して使用していて、先日までは問題なく動いていたのに今年の夏の展示からトラブルが続出した。
調べてみると3台目以降のViveコントローラーのボタン押下が取得できなくなっていて、Unity上でSteamVR_TrackedControllerコンポーネントを見てみても、先に操作した2本目のコントローラーまではボタンが反応するのに、3本目以降が反応しなくなっていた。
コントローラーやUSBケーブルが故障しているわけではないので、操作する順番を変えてみると操作できる2台のコントローラーがその都度変わる。
通常のVRゲームでは2本までしかコントローラーを使用しない想定なので問題ないかもしれないが、USB接続(や無線接続)で2本以上接続して使用する場合は問題になってくる。
いくつかのボタン取得方法を試したけどダメだったので、展示ではボタンを使用しない構成にアプリを急遽修正することになった。
誰か対応方法知ってたら教えてほしい。
トラッカー/コントローラーがロスト→復帰する度にSteamVR全体の座標が少しズレる
困ってる度:超困ってる
おそらくトラッカー/コントローラー認識のタイミングでキャリブレーション処理が走るのか、マッピング等でトラッカーにしっかり映像を合わせていても数センチ~数十センチ座標がズレる。
HMD・コントローラー全てが同じだけ座標がズレるのでHMDから見たコントローラーやトラッカーの相対位置は変わらない為、通常のゲームにはそれほど大きな影響はないが、プロジェクションマッピング等にはもろに影響が出る。
SteamVRを起動時にもこのキャリブレーション処理は走るので、SteamVR再起動でも絶対座標がズレる。
キャリブレーションを切る方法を探したけど今の所見つからず。
対処方法としては、基準点ViveトラッカーをUSB接続でどこかわかりやすい位置に固定して、それを基準にSteamVRのエリアを補正する。
すごく調整が面倒になる上に、機材も増えるので本当はやりたくない。
SteamVR起動直後、Viveトラッカーを少し動かさないと認識しないことがある。
困ってる度:かなり困る
Viveトラッカー2.0をUSB接続時にこの現象を確認した。
1.0に変える事で回避できたけど、上記の基準点トラッカーとして使用していたトラッカーが起動時に認識しなかったので、常設展ではかなり困る。
角度で安定することもあったので、ベースステーションとViveトラッカーの赤外線センサの位置関係の可能性もある?要検証
コントローラーがトラッキング状態じゃないとボタン入力が来ない
困ってる度:それなりに困る
これ以前はコントローラーがトラッキングされていない(エリア外に居る)場合でもボタンの入力は取れていたので、ボタンを押して接続されているかどうかのチェックが楽だったのですが、最近のSteamVRのアップデートでコントローラーがトラッキング状態でないとボタンの入力が来なくなってしまいました。
接続されているコントローラーが必ずしもベースステーションから見える状態とは限らないので、トラッキング状態でなくてもボタン入力は欲しいところです。
不要ならソフト側で切ればいいので、大元から入力が来ないとどうしようもない…。
コントローラーが認識⇔切断を繰り返す
困ってる度:それなりに困る
USB接続状態で長期間展示していると起こる現象。
おそらく、PCとUSB接続していても電池の消耗のほうが早く、徐々に残バッテリーが減って行く(?)
空になったところで切断⇔認識を繰り返すのだと思われる。
この状態になると、認識・切断時に他のコントローラーやアプリの挙動も一瞬止まってしまうのでまともに動作しなくなってしまう。
5V2AくらいのACアダプタ付きUSBハブを使用していても起こる事があるので、バッテリーがダメになりがち??
device ID が変わる現象
困ってる度:それなりに困る
たまにロスト→復帰を繰り返しているとdevice IDが変わる事がある。
これはrenderModelNameを取得するなど、アプリの作り方で回避可能。
string renderModelName = GetComponentInChildren<SteamVR_RenderModel>().renderModelName;
if (renderModelName.IndexOf("{htc}vr_tracker_vive_1_0") > -1)
{
// Trackerの時だけ実行
}
device IDではなくSerial Numberを取得して保存するようにすると更に良いという噂。まだ試してない。
Viveトラッカーが満充電表示(LED白点灯)にならない
困ってる度:ちょっと困る
充電ずっとしててもオレンジ点灯のままで白点灯にならない時がある。白くならない時の条件はよくわかってない。
Viveトラッカーのペアリング機能をロックしたい
困ってる度:ちょっと困る
「空想ジオラマ」という作品でViveトラッカーを子供が触る事が多いが、よくボタンを押されてしまい、ペアリング状態になってしまう。
物理的にボタンが押せないように蓋を接着すれば良いのかもしれないが、美術館などの学芸員さんたちが操作するのでメンテナンス性も保っておきたい。
ちなみにHomeボタン(System Menuボタン)を無効にするのは、SteamVR>設定>開発者 から「VRダッシュボードを有効化」チェックを外すだけなので、展示の時は無効にしておくと良い。
ところでアーケードモードって何??誰も知らない説ある。
その他、不確定な要素
ここからは2~3ヶ月間の長期展示時に会場からの報告があった現象で、自分で検証が出来ていないので条件がわからないが発生したもの。
- ViveコントローラーをUSBで3台接続して使用していたところ、1台がしばらくすると認識しなくなり、徐々に処理が落ちてアプリが固まる現象が頻発した。最終的にUSB接続するコントローラーを2台に減らすと安定した。アプリ的には今まで何度も長期の運用に耐えてきたバージョンなので、最近のSteamVRの仕様変更に起因する可能性がある。
- 同じく、Viveトラッカーも3台以上繋ぐと安定せず2台で運用しているという報告があった。こちらも詳細不明。
なんにせよ最近のSteamVRは色々不安定でオペレーターのつかない長期展示は本当に辛い…。
これで何度も設営の終わった会場に再度足を運ばないといけない事が多発したのでHTC Vive使った展示控えたいくらい。