|
@@ -16,8 +16,6 @@ function WebXRManager( renderer ) {
|
|
|
|
|
|
var session = null;
|
|
var session = null;
|
|
|
|
|
|
- var framebufferScaleFactor = 1.0;
|
|
|
|
-
|
|
|
|
var referenceSpace = null;
|
|
var referenceSpace = null;
|
|
var referenceSpaceType = 'local-floor';
|
|
var referenceSpaceType = 'local-floor';
|
|
|
|
|
|
@@ -103,8 +101,6 @@ function WebXRManager( renderer ) {
|
|
|
|
|
|
this.setFramebufferScaleFactor = function ( value ) {
|
|
this.setFramebufferScaleFactor = function ( value ) {
|
|
|
|
|
|
- framebufferScaleFactor = value;
|
|
|
|
-
|
|
|
|
};
|
|
};
|
|
|
|
|
|
this.setReferenceSpaceType = function ( value ) {
|
|
this.setReferenceSpaceType = function ( value ) {
|
|
@@ -113,6 +109,12 @@ function WebXRManager( renderer ) {
|
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+ this.getSession = function () {
|
|
|
|
+
|
|
|
|
+ return session;
|
|
|
|
+
|
|
|
|
+ };
|
|
|
|
+
|
|
this.setSession = function ( value ) {
|
|
this.setSession = function ( value ) {
|
|
|
|
|
|
session = value;
|
|
session = value;
|
|
@@ -125,17 +127,13 @@ function WebXRManager( renderer ) {
|
|
session.addEventListener( 'end', onSessionEnd );
|
|
session.addEventListener( 'end', onSessionEnd );
|
|
|
|
|
|
session.updateRenderState( { baseLayer: new XRWebGLLayer( session, gl ) } );
|
|
session.updateRenderState( { baseLayer: new XRWebGLLayer( session, gl ) } );
|
|
-
|
|
|
|
session.requestReferenceSpace( referenceSpaceType ).then( onRequestReferenceSpace );
|
|
session.requestReferenceSpace( referenceSpaceType ).then( onRequestReferenceSpace );
|
|
|
|
|
|
- //
|
|
|
|
-
|
|
|
|
inputSources = session.inputSources;
|
|
inputSources = session.inputSources;
|
|
|
|
|
|
session.addEventListener( 'inputsourceschange', function () {
|
|
session.addEventListener( 'inputsourceschange', function () {
|
|
|
|
|
|
inputSources = session.inputSources;
|
|
inputSources = session.inputSources;
|
|
- console.log( inputSources );
|
|
|
|
|
|
|
|
for ( var i = 0; i < controllers.length; i ++ ) {
|
|
for ( var i = 0; i < controllers.length; i ++ ) {
|
|
|
|
|
|
@@ -216,7 +214,9 @@ function WebXRManager( renderer ) {
|
|
if ( pose !== null ) {
|
|
if ( pose !== null ) {
|
|
|
|
|
|
var views = pose.views;
|
|
var views = pose.views;
|
|
- var baseLayer = session.renderState.baseLayer;
|
|
|
|
|
|
+ var baseLayer;
|
|
|
|
+
|
|
|
|
+ baseLayer = session.renderState.baseLayer;
|
|
|
|
|
|
renderer.setFramebuffer( baseLayer.framebuffer );
|
|
renderer.setFramebuffer( baseLayer.framebuffer );
|
|
|
|
|
|
@@ -224,7 +224,20 @@ function WebXRManager( renderer ) {
|
|
|
|
|
|
var view = views[ i ];
|
|
var view = views[ i ];
|
|
var viewport = baseLayer.getViewport( view );
|
|
var viewport = baseLayer.getViewport( view );
|
|
- var viewMatrix = view.transform.inverse.matrix;
|
|
|
|
|
|
+
|
|
|
|
+ var viewMatrix;
|
|
|
|
+
|
|
|
|
+ if ( 'transform ' in view ) {
|
|
|
|
+
|
|
|
|
+ viewMatrix = view.transform.inverse.matrix;
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+
|
|
|
|
+ // DEPRECATED
|
|
|
|
+
|
|
|
|
+ viewMatrix = view.viewMatrix;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
|
|
var camera = cameraVR.cameras[ i ];
|
|
var camera = cameraVR.cameras[ i ];
|
|
camera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix );
|
|
camera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix );
|
|
@@ -251,11 +264,28 @@ function WebXRManager( renderer ) {
|
|
|
|
|
|
if ( inputSource ) {
|
|
if ( inputSource ) {
|
|
|
|
|
|
- var inputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );
|
|
|
|
|
|
+ var inputPose;
|
|
|
|
+
|
|
|
|
+ inputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );
|
|
|
|
|
|
if ( inputPose !== null ) {
|
|
if ( inputPose !== null ) {
|
|
|
|
|
|
- controller.matrix.fromArray( inputPose.transform.matrix );
|
|
|
|
|
|
+ if ( 'transform' in inputPose ) {
|
|
|
|
+
|
|
|
|
+ controller.matrix.fromArray( inputPose.transform.matrix );
|
|
|
|
+
|
|
|
|
+ } else if ( 'targetRay' in inputPose ) {
|
|
|
|
+
|
|
|
|
+ controller.matrix.elements = inputPose.targetRay.transformMatrix;
|
|
|
|
+
|
|
|
|
+ } else if ( 'pointerMatrix' in inputPose ) {
|
|
|
|
+
|
|
|
|
+ // DEPRECATED
|
|
|
|
+
|
|
|
|
+ controller.matrix.elements = inputPose.pointerMatrix;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
controller.matrix.decompose( controller.position, controller.rotation, controller.scale );
|
|
controller.matrix.decompose( controller.position, controller.rotation, controller.scale );
|
|
controller.visible = true;
|
|
controller.visible = true;
|
|
|
|
|