|
@@ -36,7 +36,9 @@ function WebXRManager( renderer, gl ) {
|
|
|
cameraR.layers.enable( 2 );
|
|
|
cameraR.viewport = new Vector4();
|
|
|
|
|
|
- var cameraVR = new ArrayCamera( [ cameraL, cameraR ] );
|
|
|
+ var cameras = [ cameraL, cameraR ];
|
|
|
+
|
|
|
+ var cameraVR = new ArrayCamera();
|
|
|
cameraVR.layers.enable( 1 );
|
|
|
cameraVR.layers.enable( 2 );
|
|
|
|
|
@@ -389,12 +391,23 @@ function WebXRManager( renderer, gl ) {
|
|
|
|
|
|
renderer.setFramebuffer( baseLayer.framebuffer );
|
|
|
|
|
|
+ var cameraVRNeedsUpdate = false;
|
|
|
+
|
|
|
+ // check if it's necessary to rebuild cameraVR's camera list
|
|
|
+
|
|
|
+ if ( views.length !== cameraVR.cameras.length ) {
|
|
|
+
|
|
|
+ cameraVR.cameras.length = 0;
|
|
|
+ cameraVRNeedsUpdate = true;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
for ( var i = 0; i < views.length; i ++ ) {
|
|
|
|
|
|
var view = views[ i ];
|
|
|
var viewport = baseLayer.getViewport( view );
|
|
|
|
|
|
- var camera = cameraVR.cameras[ i ];
|
|
|
+ var camera = cameras[ i ];
|
|
|
camera.matrix.fromArray( view.transform.matrix );
|
|
|
camera.projectionMatrix.fromArray( view.projectionMatrix );
|
|
|
camera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );
|
|
@@ -405,6 +418,12 @@ function WebXRManager( renderer, gl ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ if ( cameraVRNeedsUpdate === true ) {
|
|
|
+
|
|
|
+ cameraVR.cameras.push( camera );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
}
|