最近、Windows Mixed Reality(以下、Win MR)のモーションコントローラを購入しました。
これは、Acer製のWin MRヘッドセットと、DELL製のモーションコントローラの組み合わせになります。
Win MRは規格が統一されているため、Win MRに対応したハードウェアであれば
コンテンツ作成側から見るとすべて同じように扱うことができます。
MR(Mixed Reality)とありますが、今現在は実質VR-HMDになります。
外部をカメラの映像として取り込んで現実と仮想の視覚をミックスする、という機能は持っていません。

いくつかVR-HMDを持っていますが、全部Unity経由で制御することができます。

ということで、今回はまずはハードウェアと「酔い」に絞って書いていきます。

ハードウェア構成

現在のVR-HMDは、頭にかぶるHMD(Head Mounted Display)と、
手の操作を行うハンドコントローラ(モーションコントローラ)を身に着けることになります。
手の操作については、呼び名がメーカーによって異なったりしますのでここでは「ハンドコントローラ」と呼ぶことにします。
その他、外部カメラの役割をする機材やルームランナーのような歩行用の機材、
現実にあるものを仮想世界と同期させてトラッキングする機材、など
様々なガジェットが出てきています。

HMD

HMDはもはやおなじみですよね。

頭にかぶるものです。HMDによって解像度が異なります。
左の黒いのがOculus Rift、右下の青+黒のがWin MR。
右奥の白いのはFOVEというVR-HMDで、眼球の動きをトレースして視線追跡ができるようになってます。
Oculus RiftはヘッドホンがHMDに搭載されています。
Win MRはイヤホンを別途つけることができるようになっています。
視界と音はHMDでサポートですね。

ハンドコントローラ

手の操作をサポートするハードウェアです。

左がOculus Rift用、右がWin MR用のハンドコントローラです。
それぞれ、左右の手に持つことになります。

ハンドコントローラが出る前はゲームパットで操作していた、という時代だったのですが、
ハンドコントローラが出てきてからは、これは操作デバイスとしてはなくてはならないものになってきてます。
ボタンがいくつか配置されており、指の操作もある程度現実に近いことができます。
また、仮想空間で位置や向きの同期が行われるため、まさに「手で操作している」感じになります。
後、VRの世界に熱中すると現実のように手を離してハンドコントローラを投げてしまう、という恐れがあるため、
ストラップがついてます。

この「HMD」と「ハンドコントローラ」は、今のVRでは最低限の装備になっていると思います。
空間認識のため、Oculus Riftの場合は外部センサーを使ってHMDとハンドコントローラのトラッキングを行ってます。
Win MRの場合は外部センサーは存在せず、HMD前面に取り付けられたカメラからの映像で空間を把握して、HMDの自己位置を推定しています。
これを「インサイドアウト方式」と呼びます。
さらに、ハンドコントローラの位置をHMDのカメラからの映像より推定しています。

「酔い」との格闘

VR-HMDを使う場合に「酔いやすい」というのがあり、これは実装によるものが多いです。
この部分、すでにVRコンテンツを作成されている方々の先人の知恵があり、ある程度「やってはいけないこと」が洗い出されています。

参考資料

VR-HMDのメーカーの1つであるOculusにて、ガイドラインが設けられています。
少し前の情報(2015年)ですので、ハンドコントローラについて書かれていなかったりしますが、
酔いに対しては現在でも通用する内容になっています。

「Oculus ベストプラクティス」。日本語ドキュメントです。
https://static.oculus.com/documentation/pdfs/ja-jp/intro-vr/latest/bp.pdf

英語ドキュメントです。
https://static.oculus.com/documentation/pdfs/intro-vr/latest/bp.pdf

特定非営利活動法人映像産業振興機構(VIPO)によるガイドライン。
日本語ドキュメントです。
https://www.vipo.or.jp/news/15212/
「VR等のコンテンツ制作技術活用ガイドライン2018」の43ページ目から、制作に関する情報が記載されています。

今までのさまざまな研究の成果やVRコンテンツのノウハウが文章化されていますので、
このような「まとめ」は目を通しておくことをお勧めします。

酔い対策のため、VRコンテンツで守ったほうがいいこと

VRで酔いに直結する、いくつかの守るべきことを列挙してみました。

  • フレームレートは最低でも90fpsを保つようにする
  • 視点の移動や回転はVR-HMDで現実と同期するため、それに反する動きを入れない(制御を奪わない)
  • 視点の上下移動や、視点回りの強制的な回転を発生させないようにする
  • 移動は等速にし、加速度を極力与えないようにする
  • 画面に固定のUI(パラメータの表示など)を与えないようにする

VRでの酔いは現実世界の「乗り物酔い」とは異なり、「シミュレーター酔い」となるのだそうです。
「酔い」は人によって耐性が異なったり、まだ研究途上の分野とのこと。
開発をしていると酔いに慣れてしまうので開発者が一番VRのテストに向かない、とか言われてたりします(筆者は一向に慣れないですが、、、)。

フレームレートは最低でも90fpsを保つようにする

描画の遅延や処理落ちは、VRでは不快さに直結します。
描画に遅延があると頭を回転させるときにカクカクッ、となる感じで一気に気分が悪くなったりします。
90fpsというのは目安になります。
VR-HMDのハードウェア的には、Oculus Rift/Win MR/HTC Viveも90fpsをサポートしてます。
この「90fpsを目指す」はソフトウェア側(=コンテンツ実装側)が守るべき目標になります。
PCゲームだと60fpsなので、それよりもハードな要求になりますね。
しかも、VR-HMDの解像度で左右の目の2つ分の描画が必要になります。
そのため、VR-HMDを動かすためのPCは高スペックである必要があります。

なお、VR-HMDの研究は進んでおり75fpsでも90fpsっぽく見せるように補間したり、
カクカクッとなるのを緩和したり、という技術が各VR-HMDメーカーで提供されていたりして
必要なPCスペックは低くても済むようにはなってきています。

制御を奪わない

HMDで移動と頭の回転(傾き)は現実世界とVR世界は同期してます。
このときに、VRコンテンツ側で視点を変えたり演出的な視点の固定化、などすると不快になります。
視界の制御は奪わない、というのが大事な要素になります。

視点の上下移動や、視点回りの強制的な回転を発生させないようにする

人が歩く場合は現実世界では上下運動しているのですが、これをVRで忠実に再現してしまうと酔います。
また、「制御を奪わない」にも関係しますが、視点回りに演出的な回転を加えることも酔いにつながります。
例えば、ハンドコントローラのジョイスティック操作で左を向く、など。
ゆるりと左に視点を回転、とかすると酔いやすい感じでした。
その場合は、10度とかの一定角度で向きをカクっと変える、とかのほうがまだマシではあります。
HMDをかぶった状態でのハンドコントローラ操作での前後運動はまだ負荷が低いですが、
左右の旋回はたとえハンドコントローラを使ったとしても、酔いにはつながりやすい感じです。

なお、特定のオブジェクトに注目させたい場合は、
視線誘導してそのオブジェクトにプレイヤーを向かせる、とするのが良しとされています。

移動は等速にし、加速度を極力与えないようにする

VRでの移動は、ハンドコントローラのボタン操作でテレポート(ワープ)式にするというコンテンツが多いですが、
これは酔いを軽減させる効果があります。
ただ、現実とは大きく異なる操作ですので、テレポート移動は没入感が損なわれるということにもつながります。
そこで、ハンドコントローラを使ってのジョイスティック移動となるわけですが、
その場合は等速で移動させないと酔いにつながります。
「加速度」が入ると酔いやすいようですので、移動しないといけない場合は等速移動を守るようにします。

画面に固定のUI(パラメータの表示など)を与えないようにする

PCゲームでは、
よくスクリーンの固定位置にヒットポイントや得点、マップなどのパラメータを表示したりします。
これをVRでも同じように実装してしまうと、酔いにつながってしまいます。
VR上で頭を動かしても常にパラメータが張り付いた状態でついてくる、という状態になりますよね。

マップの場合は、手に持つ形にしてハンドコントローラで見るようにしたり、
VR上のオブジェクトでUIを表す、などインターフェースはVRではVRにあった実装に変える必要が出てきます。

以上については、すでに筆者のほうでも実装して「酔うなぁ」というのは検証済みの部分でもあります。
この「酔い」ですが、一度酔うのを体験してしまうと二度と触りたくないといった気分にもなり、
VRコンテンツ離れを生んでしまう、という負の連鎖につながりかねません。
VRコンテンツ制作者が情報共有して、それを厳守する必要がある部分でもありそうです。
関係ないですが、去年、秩父の山奥で40分くらいバスに揺られて酔ってしまい、
もう二度とバスは乗りたくない、、、とか酔いを実感してしまったりしました。
ということで、酔いは大敵です。

筆者の知る限りは、この酔い対策は2015年から現在の2018年でも大きな違いはなく、
もう当たり前になっている対策であります。
今回はこれだけに絞り、VRのコンテンツ実装についての下準備としました。

お分かりになるかと思いますが、
ほとんどのPCゲームはこのルールだと移植できそうにない、というのが分かりますよね。
演出ほとんどできないのでは、とか。
VRはVR用のインターフェースで、仕組みを構築していくしかなさそうですね。

次回はこれらの情報を加味し、
Unity上でのVRとしての操作について書いていく予定です(Shade3Dはどこに行った、、、という突っ込みはナシで)。