Chrome 89 × WebXR Device API × Oculus 系 HMD が正常動作しなくなっている件についての検証
2021-04-16 JST 追記
Stable Channel つまり通常版に待望の Chrome 90 がリリースされました!
動かなくて困っている内に本記事に辿り着いた方は Chrome をアップデートすることで解決に至るはずです:)
本記事は 2021-03-07 JST に初版が公開されました。
@ikkou です。Web における VR と AR である WebXR を追っています。
発端
ステータス上は WebXR Device API
に対応していて、WebXR Sample Pages でも WebXR に対応している旨が表示されるにも関わらず、VR HMD を繋ぐと正常に動作しない件が起きているようなので検証しました。
これまでの経緯
こと Chrome に関しては WebXR Device API
への対応を果たした v79 から Oculus 系 VR HMD との相性が悪く、v86 でようやく普通に動作するようになった経緯があり、その都度まとめてきました。
- Chrome 86 × WebXR Device API × Oculus 系 HMD が正常動作するようになりました
- WebXR Device API が有効になっている Chrome 85 で Oculus 系の HMD が認識されない件とその解決方法が無い件について
- WebXR Device API が有効になっている Chrome 84 で Oculus 系の HMD が認識されない件とその解決方法について
- Chrome 79 から WebXR Device API が有効になるも Oculus 系の HMD が認識されない件とその解決方法について
検証方法
WebXR Device API
を策定している「Immersive Web Working Group」が運営する WebXR Sample Page の Immersive VR Session が正常に動作するか確認する
検証環境
検証環境は次の通りです。
OS
Windows 10 Pro バージョン 21H1 (Windows Inside Program ベータチャンネル適用)
ブラウザ
ブラウザは Chrome の通常版、Beta、Canary と、Chrome と同じエンジンを積んでいる Microsoft Edge の通常版、そして Firefox の通常版、Beta、Developer Edition、Nightly です。
Chrome と Microsoft Edge は標準で WebXR Device API
に対応しているので、それぞれ chrome://flags
と edge://flags/
は Reset All してフラグの変更による影響をカットしています。
対して Firefox は標準対応していないので、about:config
で dom.vr.webxr.enabled
を true
にしています。
VR HMD
Oculus Quest 2 を USB 3.0 ケーブルで PC に繋ぐ Oculus Link で PC VR モードとして検証しています。
Oculus Quest 2 のバージョン
26.0.0.40.502.274988273
Oculus Quest 2 のランタイムバージョン
26.0.0.40.502.274988282
Oculus Quest 2 の OS バージョン
user-1462400.7360.0
OculusClient.exe
は「提供元不明」と「公開テストチャンネル」を ON にし、最新バージョンになっています。
結果
バージョン | 結果 | |
---|---|---|
Google Chrome | 89.0.4389.82 | 動作しない (読込中です… になる) |
Google Chrome | 89.0.4389.114 | 動作しない (読込中です… になる) |
Google Chrome Beta | 89.0.4389.72 | 動作する |
Google Chrome Beta | 90.0.4430.51 | 動作する |
Google Chrome Dev | 90.0.4430.11 | 動作する |
Google Chrome Dev | 91.0.4464.5 | 動作する |
Google Chrome Canary | 91.0.4438.2 | 動作する |
Google Chrome Canary | 91.0.4466.2 | 動作する |
Microsoft Edge | 89.0.774.45 | 動作する |
Firefox | 86.0 | 動作しない (ENTER VR できない) |
Firefox | 87.0 | 動作しない (読込中です… になる) |
Firefox Beta | 87.0b6 | 動作しない (VR NOT FOUND になる) |
Firefox Beta | 88.0b7 | 動作する |
Firefox Developer Edition | 87.0b6 | 動作しない (VR NOT FOUND になる) |
Firefox Developer Edition | 88.0b7 | 動作する |
Firefox Nightly | 88.0a1 | 動作しない (ENTER VR できない) |
Firefox Nightly | 89.0a1 | 動作する |
少なくとも無印 Chrome での動作は確認できませんでした。
また、 chrome://flags
で Force WebXr Runtime
を OpenXR
に変更したとしても変わらず動作しませんでした。
参考までに No Runtime
に変更すると VR NOT FOUND
になります。
2021-04-05 Update
動作した Google Chrome Beta のバージョン番号 89.0.4389.72
を超えた Google Chrome 89.0.4389.114
がリリースされていますが、引き続き動作しません。
また、Beta, Dev, Canary については変わらず動作します。
そして無印 Firefox は ENTER VR すらできなかった状態から、無印 Chrome と同じく動作しないものの「読込中です…」が表示されるようになりました。
そして、Beta, Developer Edition, Nightly ともに動作するようになりました。
これで Chrome, Firefox ともに安定版を除くすべての開発バージョンで正常に動作するようになりました。
解決方法
現時点では解決方法が見つかっていません。
ブラウザと VR HMD は OpenXR
を通して WebXR Device API
を動作させているのですが、この OpenXR
がおかしくなっていることが要因として推測されます。
A-Frame の OpenXR 関連 Issue では、A-Frame の mantainer である @dmarcos 氏による Chrome 86 の頃から動作に関する投稿があり、2020-12-11 JST の投稿をもって一旦落ち着いていましたが、2021-03-05 JST に動作しなくなった旨の投稿がされています。その投稿に応える形で Oculus の @rcabanier 氏が反応していますが、そこでも OpenXR
に何か問題があるのではないかとされていて、2021-03-07 JST 時点では明確な原因は投稿されていません。
ちなみに @dmarcos 氏はすべてのブラウザで動作しないと投稿していますが、手元の環境では Beta, Dev, Canary で動作しています。が、Canary で動作していない事例もあるようなので余計に謎が深まっています。
Reddit でも同様の投稿を見つけることができます。
なお、スレッドの中に記載されている Chrome の起動オプションに --disable-features=XRSandbox
をつける方法は過去のバージョンでは有効でしたが、今回の検証環境の中では動作を確認できませんでした。
WebXR Device API
を使った WebXR コンテンツを Chrome で動作させられると、特にバーチャルデスクトップ利用時の WebXR への遷移がとてもスムーズになるので最高なのですが、現時点では厳しい状況に舞い戻ってしまいました。
というわけで Oculus Quest 2 で WebXR コンテンツを楽しみたい場合は引き続き標準のブラウザアプリが最強です。
現場からは以上です。
Discussion