Chrome 89 × WebXR Device API × Oculus 系 HMD が正常動作しなくなっている件についての検証

5 min read読了の目安(約4800字

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 を繋ぐと正常に動作しない件が起きているようなので検証しました。

https://twitter.com/korinVR/status/1367167085353181190

これまでの経緯

こと Chrome に関しては WebXR Device API への対応を果たした v79 から Oculus 系 VR HMD との相性が悪く、v86 でようやく普通に動作するようになった経緯があり、その都度まとめてきました。

検証方法

WebXR Device API を策定している「Immersive Web Working Group」が運営する WebXR Sample PageImmersive 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://flagsedge://flags/ は Reset All してフラグの変更による影響をカットしています。

対して Firefox は標準対応していないので、about:configdom.vr.webxr.enabledtrue にしています。

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://flagsForce WebXr RuntimeOpenXR に変更したとしても変わらず動作しませんでした。
参考までに 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 時点では明確な原因は投稿されていません。

https://github.com/aframevr/aframe/issues/4709#issuecomment-791008662

ちなみに @dmarcos 氏はすべてのブラウザで動作しないと投稿していますが、手元の環境では Beta, Dev, Canary で動作しています。が、Canary で動作していない事例もあるようなので余計に謎が深まっています。

Reddit でも同様の投稿を見つけることができます。

https://www.reddit.com/r/SteamVR/comments/lwzuqo/webvr_and_webxr_broken/

なお、スレッドの中に記載されている Chrome の起動オプションに --disable-features=XRSandbox をつける方法は過去のバージョンでは有効でしたが、今回の検証環境の中では動作を確認できませんでした。


WebXR Device API を使った WebXR コンテンツを Chrome で動作させられると、特にバーチャルデスクトップ利用時の WebXR への遷移がとてもスムーズになるので最高なのですが、現時点では厳しい状況に舞い戻ってしまいました。

というわけで Oculus Quest 2 で WebXR コンテンツを楽しみたい場合は引き続き標準のブラウザアプリが最強です。

現場からは以上です。