はじめに
昨今はOculus QuestシリーズやPico Neoシリーズなどの非常に安価なVRデバイスが市場に流通し始めたため、AndroidやiOSなどのスマホVRはあまり使われなくなってきました。
しかし、現在でもスマホでできるVRは最も小さいVRデバイスであるため、最も普及しているVR対応デバイスであることには変わりがありません。
その点についてもっと注目を集めてもいいんではないか?と考え、スマホVRの現状について調査してみました。
開発環境Cardboard SDK
GoogleVR(GVR)
スマホVRの最盛期で最も人気があったSDKです。
2014年にGoogle Cardboardという段ボールで作られたスマホを差し込むタイプのVRゴーグルが発売されました。
VRデバイスを体験したことがない人でもこのタイプのデバイスを見かけたことがある人は多いのではないでしょうか?
そのCardboardの仕組みをSDKとして公開されたのがGoogle VRです。
3DoFのみ対応しており、VR動画などの用途では使用されることが多かったようです。
その後、高性能スマホ向けで6DoFに対応した”Daydream”が2016年に発売されましたが、2020年にサポートが終了しています。
Cardboard SDKのオープンソース化
Googleからのサポートが終了したGoogleVRですが、オープンソース化されました。
Unity用プラグイン : Google Cardboard XR Plugin for Unity
対応機能
- モーショントラッキング
- 立体レンダリング
- ビューアボタンを介したユーザーインタラクション
- QRコード認識
- コントローラーとの接続
- 視線入力
6DoF+ハンドトラッキング対応
次項のARFoundationやMediaPipeと組合わせることで、6DoFに対応させることができます。
スマホVRで6DoF&MediaPipeによるハンドトラッキングを実現することができます。
6DoFを試してみた時の動画です。
実装する場合はこちらのリポジトリがおすすめです。
https://github.com/NON906/HandVR
ARfoundation
立体視での表示はできませんが、6DoFに対応していることや最新のARkit,AR Coreの機能を使用することができます。
Android,iOSに対応していることで知られていますが、Magic LeapのMagic Leap XR PluginやHoloLens のWindows XR Pluginにも対応しています。
対応機能
- デバイスの追跡:物理空間でのデバイスの位置と向きを追跡
- 平面検出:水平面と垂直面を検出
- 点群検出:特徴点の検出。
- アンカー:デバイスが追跡する任意の位置と方向の推定。
- 光の推定:物理空間の平均色温度と明るさの推定。
- 環境プローブ:物理環境の特定の領域を表すキューブマップの生成。
- 顔の追跡:人間の顔を検出して追跡。
- 2D画像の追跡:2D画像を検出して追跡。
- 3Dオブジェクトトラッキング:3Dオブジェクトを検出。
- メッシュ作成:物理空間に対応する三角形メッシュを生成。
- ボディトラッキング:物理空間で認識される人間の2Dおよび3D表現。
- 共同参加者:共有AR体験で他のデバイスの位置と向きを追跡。
- 人間のセグメンテーション:カメラ画像で検出された人間のステンシルテクスチャと深度マップの検出。
- Raycast:検出された平面と特徴点について物理的な環境の照会。
- パススルービデオ:ARコンテンツの背景としてタッチスクリーンへのモバイルカメラ画像の最適化されたレンダリング。
- セッション管理:AR機能が有効または無効になっている場合に、プラットフォームレベルの構成を自動的に操作します。
- オクルージョン:検出された環境深度(環境オクルージョン)または検出された人間の深度(人間のオクルージョン)による仮想コンテンツのオクルージョンを可能にする。
HologlaSDK
スマホを差し込むタイプの段ボールMRデバイス「ほろグラ用」アプリ開発用のSDKとしてホログラム株式会社より公開されており、ほろグラ以外の差し込むタイプのVRゴーグルでも使用することができます。
サンプルシーンを動かした時の動画です。
まとめ
6DoFの対応までの導入が非常に簡単なので、HologlaSDKを使用して開発することが一番おすすめです。
その他の情報がありましたら、コメントを頂けると幸いです。