はじめに
Unityで一人称視点のVRアプリに飛行移動の機能を開発するに当たって、
主に移動・旋回機能での酔いに関して調べたことと、個人的な感想となります。
確認したデバイスは
Oculus Rift s/Oculus Quest/HTC VIVE
また基本的な対策に関しては以下を参考にさせていただいたので、
詳細は参照ください。
- VR等のコンテンツ制作技術活用ガイドライン2018
- VR酔い防止のための真のルール
- ◆VR酔いを防ぐにはどうすればいい!?~エンジニア視点で考える原因と対策~
- 『エースコンバット7』のVR酔いや違和感を排除する戦いの数々!重要な“没入ライン”を越えるためのヒントは『ギャラクシアン3』にあった!?【CEDEC 2019】
- 日本列島VRとHoleLenz
移動方法
元々アプリの移動方式は地上移動のみでテレポート型だったが
飛行移動に関してはスティックの前後操作で前進/後退する仕組み。(空間移動型)
ただやはりこの方式になると酔いに強い/弱い人で結構差が出てくる。
対策
脳と体の同期ズレの軽減。見ているものと身体の動きが違うと感じると酔う。
速度は遅く等速直線運動であるほうが酔いにくいとのことだが、移動範囲もあるのでそこそこの速度が必要。
ということで加速度を加えて、後退速度は前進時より低速で移動するように調整。
この辺りは特に日本列島VRを参考にさせていただいた。
次の動きを「予測」させて酔いを軽減
進行方向については、HMDで向いてる方向に移動という手法もあるが、
今回は既存の仕組みでVRレーザーポインターを装備していたため、上下前後ポインタの向きに合わせて進むようにした。
向きの指針として認識もしやすいため、進む方向の「予測」の役割を果たせているかと思う。
旋回
スティック左右操作での自分の向きを回転
対策
これに関しては常にスナップターン方式(スティックの左右操作一回ごとに30度ずつ回転)
停止・低速状態でスムーズ回転はかなりきつい。
速度がでている状態であればかなり軽減される。(ただ本当にそこそこな速度が出てる状態でないときつめ。)
機能としては旋回できた方が楽しい体験になるが、今回一番酔い影響が強いと感じたところでもあった。
その他の対策等
今回は基本的に上記のような対策を行ったが、
さらに酔いを軽減させる方法としては
- 手前に固定のパネル・UIなどを表示。(効果高そう)
- 向きをさらに意識しやすいよう矢印を表示。
- 移動中は速度に応じて視野を狭める類のエフェクトを追加。
- 移動停止時の減速。(未検証)
など。
また当アプリは特にアクション性も低く、周りの動きも激しくないため、
アプリの特性にもよるのかとも思います。