ATLショーケースから学ぶ、HTC VIVEの便利なTips



AdvancedTechnologyLab(ATL)には15台ものHTC VIVEがあります。これが無料で使えるんだから、ぜひ何か作りたいものです。
ATLショーケースにもHTC VIVEを使った作品がいくつもありますが、作品内で使われたHTC VIVEの小粋なTipsを紹介します。


■Tips1: シャペロン境界を非表示にする

「シャペロン境界」という単語、初耳かもしれませんが、HTC VIVEを装着して動き回った時に表示される、ルームスケールエリア(≒現実の壁)を示す、あの水色のグリッド状のラインです。

シャペロン境界

VR体験中に壁にぶつかって怪我しないために親切に表示してくれているのですが、VRコンテンツによっては完全に非表示にしたいことがあります。
ATLショーケース作品の「VR錯覚ターン」では、VR空間と現実空間との空間認識を意図的に誤魔化すことを目的とした作品なので、VR空間内に現実空間を意識させてしまうシャペロン境界が表示されてしまうと興醒めだったそうです。
このシャペロン境界を非表示にする方法があります。

方法1(※簡単だけど床の線だけは消えない方法)

壁面のシャペロン境界だけを非表示にするだけでよいのであれば

  1. VR空間内で、コントローラーのシステムボタンを押す(=トリガーを引く)
  2. 右下にあるSETTINGS(歯車)ボタンを押して「SteamVR 設定パネル」を開く
  3. パネル内の上から2つ目の「シャペロン」を選択
  4. 「シャペロンの境界スタイル」の各項目で「開発者」を選択

これで壁面のシャペロン境界線は非表示になります。この設定画面からは、他にもシャペロン境界の色やデザインや明度を変更することができます。しかしこの設定画面では床の境界線を非表示にすることはできません。

方法2

床の線も非表示にしたい場合は、SteamVRの設定ファイルを直接書き換える必要があります。

C:\Program Files (x86)\Steam\config\steamvr.vrsettings

が設定ファイル本体なので、これを何かしらのテキストエディタで開き

{
   "collisionBounds" : {
      "CollisionBoundsColorGammaA" : 0
   },
   //ここから下に何かしらの設定が書かれていることもあります。
   //書かれていないなら上のカンマは不要です。
}

このようにcollisionBounds設定を直接指定すると、床の境界線も非表示に(正確には不透明に)することができます。

参考リンク:HTC Viveについて – フレームシンセシス

※同様の内容で「HTC VIVE で頭の位置を固定する – 自習室」様の記事では、CollisionBoundsStyleを開発者モード設定しないといけない旨が記載されていましたが、2017年11月時点では、その記載をせずとも境界線を非表示にすることができました。

※Unity開発において一般的に利用させることが多いSteamVRプラグインですが、これを使わずに実装する場合はシャペロン境界はそもそも表示されません。

シャペロン境界を非表示にした場合は、壁にぶつからないように注意が必要です!

■Tips2: ルームスケールは数値設定できる

ATLショーケース作品「そこに西瓜はあるのかい」では、3台のHTC VIVEを同じVR空間に登場させていますが、そのためには3台のルームスケール設定を全く同じにする必要があったそうです。
そう聞くと、「SteamVRのお馴染みのルームスケール設定画面で、3回とも全く同じに動き回って、できるだけ同じルームスケールになるように頑張る!」という地獄の光景が思い浮かびますが、そんな必要はなく、これもテキストファイル

C:\Program Files (x86)\Steam\config\chaperone_info.vrchap

ルームスケール情報がテキスト(数値)で記述されているので、1台ぶんをきちんとルームスケール設定して、その値を他の2台にコピペすればルームスケールの同期ができるのです。詳しい解説は「そこに西瓜はあるのかい」の記事をご覧ください。

見える!見えるぞ!

この方法を理解しておくと便利なシーンは多々あると思います。

  • 会心のルームスケール設定ができた時の座標情報を外部テキストに書き出しておけば、間違って他の誰かがルームスケール設定を上書きした後でも、元に戻すことができる
  • VR作品展示等でリハーサル時の座標情報を、数か月後・数年後でも簡単に再現できる
  • 何パターンかのルームスケール設定を順々に試して、最良の動線を検討することができる
  • 部屋がルームスケールするのにギリギリの広さで、部屋をきれいに片づけた状態でギリギリルームスケールできた時の座標情報を大事に保存しておけば、そのあと部屋にタンスや本棚を置いて2度とルームスケールできない(座位モードしかできない)広さになったとしても、秘伝の座標情報を使えばルームスケールモードにできる
ATLのバックパックPC開発ルームにて、3台のルームスケールを同期作業されている作者様

■Tips3: HMDを椅子にくくりつけるw

ATLショーケース作品「VR 招かれざる客」の作者である393様が9月のATL客員研究員懇談会のライトニングトークで紹介されていた方法です。
一見ネタのように思えますが、VR開発者の苦労を軽減してくれる素晴らしい解決法なんですよこれが。

通常、HTC VIVE(SteamVR)はちょっと目を離すとHMD(ヘッドマウントディスプレイ)がスタンバイ状態に戻るため、例えばUnity開発においては、

  1. Unity上で開発作業
  2. Unity上でプレビュー再生ボタン押す
  3. その辺においてるVIVEを持ち上げて軽く振る←スタンバイ解除するため
  4. HMDをかぶって内容を確認。あるいはかぶらずにHMDを動かしてUnityのGame画面上で見え方を確認
  5. HMDを置いてUnityに戻る

という行程を、それこそ何百回も繰り返しているかと思います。回数を繰り返していると3,4,5におけるケーブルの取り回しがすごいストレスになってくるし、そのうちにHMDをいちいち置くのが面倒になってきて、HMDを額に押し上げて目が押しつぶされそうになりながらコーディングしたりして、下手をするとVR開発が嫌いになっていきます。

それを解決するのが、393様の「HMDを椅子にくくりつける」方法です。
回転機構のあるワーキングチェアの背にギタースタンドをくくりつけ、そのギタースタンドのU字のフック部分(本来ギターをもたせ掛ける箇所)にHMDをかけておくのです。


※393様はOculusをお使いでしたが、VIVEでもかなり使えるTipsだと思います。

これだと、椅子を軽く回転させればスタンバイ解除できるし、目線の向きと高さは開発者とほぼ同じなのでVR内の見え方確認にも事足りるし、HMDを取ったり置いたりのケーブルの取り回しに煩わされることもありません。
とってもいい!すごくいい!この便利さが伝わってほしい!そう思います。


以上、最後はOculusネタでもありますが(←ATLにはOculusも15台あります)、HTC VIVE開発の際のお役に立つ情報だと思います。
引き続き、広尾のAdvancedTechnologyLabは登録無料のATL客員研究員を随時募集していますし、ATL客員研究員になってATLの機材を無料で使って作品を作ってみてはいかがでしょうか?できた作品はATL SHOWCASEに掲載してもらうこともできます。