4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Oculus QuestのWebXRを試す (Oculus Browser 5.9)

Last updated at Posted at 2019-06-28

Oculus Goは3DoFだったので特にWebXR使いたいシーンはなかったのですが,Oculus QuestでWebXRのReferenceSpaceが欲しくなったので試したときのメモ.

Oculus BrowserのRelease Notesによると,5.4 の時点で WebXR is now available under an experimental feature flag. とあります.5.4のリリースから半年くらいたった気がするので,そろそろサポート進んでるだろうと思って現状の挙動を確認してみました.

ここでは触れませんが,事前にADBをTCP/IP接続できるようにして,Chromeのリモートデバッグ機能を使うと捗ります.

(2019-07-27追記) Oculus Browser 6.0でChromium 74ベースになりました.なのでこの記事の内容はもう古いです.

Chromiumのバージョンを確認

おもむろにブラウザのURLにchrome://versionと入力.

Oculus Browser: 66.0.3359.203 ...

ちょっと残念な結果になる予感がします...でも最近ブラウザのアップデートが何度かあったし,なんだかんだいっても活発に開発しているはず.

navigator.xr

まだchrome://flagsからWebXR Device APIを有効にする必要がありました.

有効にしてもhttps接続じゃないと undefined が返ります.最近のChromeだとWebXRはオリジントライアルの対象になってたはずですが,Oculusのブラウザにはそういう気配なはさそう(?)

WebXR Device APIを見ながら試す.WebXR周りはまだ仕様が固まってない上に,どの時期の仕様を実装したのかよくわからないので何度か試す.

XRSession

xr.requestDevice()とかは生えてないので極端に古い実装じゃななそう.(手元で使ってるTHREE.jsはちょっと古くてrequestDevice()を使うバージョンだったのでここでエラー出た)

let session = await navigator.xr.requestSession("immersive-vr");
// → Uncaught (in promise) TypeError: Failed to execute 'requestSession' on 'XR': cannot convert to dictionary.

よくわからないけど,何かをdictionaryにして欲しいらしい.ちょっと古い仕様を実装してそう.

let session = await navigator.xr.requestSession({mode:"immersive-vr"});
// → XRSession {environmentBlendMode: "opaque", mode: "immersive-vr", outputContext: null, renderState: XRRenderState, …}

Questの表示がVRモードに切り替わった.使えそう.ちなみにimmersive-arはサポートされてなかった(カメラ画像にオーバーレイされたりしたら良い意味でびっくりだったのだけど).

XRSpace

XRReferenceSpaceがほしいのが今回の動機なので,本番はここから.requestReferenceSpaceにも文字列じゃなくてオブジェクトを渡す.

let space = await session.requestReferenceSpace({type:"identity"});
// → XRReferenceSpace {originOffset: XRRigidTransform, onreset: null}

中身は単位行列とゼロベクトルでした.

let boundedSpace = await session.requestReferenceSpace({type:"bounded"});
// → Uncaught (in promise) DOMException: This device does not support the requested reference space type.

残念.Questのガーディアンの情報がboundsGeometryで取れれば夢が広がったのに.

まとめ

  • Oculus QuestのWebXRはまだっぽい
  • WebVRは普通に使えてます
  • 最近ブラウザのUI何度か変わった気がするけどChromiumのバージョンは変わってないっぽい
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?