From 80b6bb119dddc3f7745036fbc360434bdf94f9df Mon Sep 17 00:00:00 2001 From: Klaus Weidner Date: Thu, 8 Aug 2019 18:02:34 -0700 Subject: [PATCH] WebXR: request common reference spaces as features WebXR's requestReferenceSpace only works if the corresponding feature was requested at session creation time. For simplicity, just ask for the interesting ones as optional features, but be aware that the requestReferenceSpace call will fail if it turns out to be unavailable. ('local' is always available for immersive sessions and doesn't need to be requested separately.) --- examples/js/vr/WebVR.js | 10 +++++++++- examples/jsm/vr/WebVR.js | 11 +++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/examples/js/vr/WebVR.js b/examples/js/vr/WebVR.js index 076228143e..301e35f9b2 100644 --- a/examples/js/vr/WebVR.js +++ b/examples/js/vr/WebVR.js @@ -99,7 +99,15 @@ THREE.WEBVR = { if ( currentSession === null ) { - navigator.xr.requestSession( 'immersive-vr' ).then( onSessionStarted ); + // WebXR's requestReferenceSpace only works if the corresponding feature + // was requested at session creation time. For simplicity, just ask for + // the interesting ones as optional features, but be aware that the + // requestReferenceSpace call will fail if it turns out to be unavailable. + // ('local' is always available for immersive sessions and doesn't need to + // be requested separately.) + + var sessionInit = { optionalFeatures: [ 'local-floor', 'bounded-floor' ] }; + navigator.xr.requestSession( 'immersive-vr', sessionInit ).then( onSessionStarted ); } else { diff --git a/examples/jsm/vr/WebVR.js b/examples/jsm/vr/WebVR.js index 1b93855157..db8ef0bcad 100644 --- a/examples/jsm/vr/WebVR.js +++ b/examples/jsm/vr/WebVR.js @@ -14,7 +14,6 @@ var WEBVR = { if ( options && options.referenceSpaceType ) { renderer.vr.setReferenceSpaceType( options.referenceSpaceType ); - } function showEnterVR( device ) { @@ -101,7 +100,15 @@ var WEBVR = { if ( currentSession === null ) { - navigator.xr.requestSession( 'immersive-vr' ).then( onSessionStarted ); + // WebXR's requestReferenceSpace only works if the corresponding feature + // was requested at session creation time. For simplicity, just ask for + // the interesting ones as optional features, but be aware that the + // requestReferenceSpace call will fail if it turns out to be unavailable. + // ('local' is always available for immersive sessions and doesn't need to + // be requested separately.) + + var sessionInit = { optionalFeatures: [ 'local-floor', 'bounded-floor' ] }; + navigator.xr.requestSession( 'immersive-vr', sessionInit ).then( onSessionStarted ); } else { -- GitLab