Meta Quest Browserにnavigationが“標準実装”されたのでWebXRでVRモードのまま遷移できるようになりました
2022-12-03 にリリースされた Meta Quest Browser 24.4 で immersive navigation
が “標準実装” されました! 標準実装、つまり chrome://flags
で設定を変更する必要がありません! この immersive navigation により (一定の制限はありますが) VR モードを維持したまま別ページに遷移できる ようになりました!
ちなみに @rcabanier さんは Meta Quest Browser の WebXR まわりを担当している開発者です。
Meta Quest の OS は即日で 100% リリースされるわけではないこともあり、自分の手元にある Meta Quest Pro にはリリースから 1 週間が経過した 2022-12-10 になってようやくアップデートが降ってきました。
むしろこれまで VR モードのままページ遷移できなかったの?
できませんでした!
これまでは VR モードで WebXR コンテンツ example1.html
から別の WebXR コンテンツ example2.html
に遷移するとき、その度に VR モードが解除され、通常の 2D モードになっていました。いわゆる “没入感” が削がれる状態でした。
ネイティブアプリと異なり、ストアでのアプリインストールが不要な WebXR コンテンツ、そのウェブの特性を生かして “ウェブサーフィン” のように様々な WebXR コンテンツを縦横無尽に遷移する…実はそんな “Web” コンテンツであればできそうなことができませんでした。
業界的にはその対応策として navigation API
(immersive-web/navigation) の策定が進められていて、2021-11 時点では chrome://flags
から明示的に許可することで、ようやく動作させることができました。
しかしこれはユーザー個人個人に設定を委ねる必要があるため、ブラウザの標準機能として利用するには時期尚早な感が否めませんでした。
しかし Meta Quest Browser 24.4 ではその設定が不要になりました!
WebXR コンテンツの開発に適している three.js や A-Frame には既に実装されているので、今すぐに試せる状態です。
現時点での制限と回避策
制限
現時点で標準実装されているのは 同一オリジン (Same-Origin) に限られます。
同一オリジンの “オリジン” に関する詳細は省きますが、雑に言うと https://example.com/a.html
から https://example.com/b.html
へのページ遷移は同一オリジンなので VR モードを維持したまま遷移できます。対して https://example.com/a.html
から https://example2.com/a.html
へのページ遷移はオリジンが異なるため遷移時に VR モードが解除されます。
回避策
chrome://flags
に WebXR navigation permission
の設定は残されているので、Allowed にしてクロスオリジン (Cross-Origin) を許可してください、と示されていますが Cross-Origin を許可する選択肢はありませんでした……。
2022-12-12 23:25 JST 追記
設定を Allowed
に変更すればクロスオリジンでも navigation が動作することが確認できました。
chrome://flags
で WebXR navigation permission
を Allowed
に変更すればクロスオリジンでも動作する
冒頭でツイートを引用した @wakufactory さんが「メタバースの始まり」とおっしゃっていますが、まさにその機運を感じています。
ネイティブアプリベースのメタバースの場合、基本的にアプリ内のみでの移動 (ワールド間の移動) となり、アプリを超えての移動はできません。
しかしウェブアプリの世界においてそういった制限がありません。WebXR コンテンツの開発時に個別の対応が必要ではあるものの、いずれは VR モードのまま様々な WebXR コンテンツを飛び回れるようになるのではないでしょうか。
そのときに必要なのは WebXR コンテンツのための検索エンジンかもしれないですね! まずは「ディレクトリ型」から!
現場からは以上です!
Discussion