浏览代码

Updated builds.

Mr.doob 6 年之前
父节点
当前提交
644a5f583a
共有 4 个文件被更改,包括 445 次插入399 次删除
  1. 59 36
      build/three.js
  2. 326 326
      build/three.min.js
  3. 59 36
      build/three.module.js
  4. 1 1
      utils/build/externs.js

+ 59 - 36
build/three.js

@@ -14046,6 +14046,23 @@
 
 			};
 
+		}(),
+
+		isFrontFacing: function () {
+
+			var v0 = new Vector3();
+			var v1 = new Vector3();
+
+			return function isFrontFacing( a, b, c, direction ) {
+
+				v0.subVectors( c, b );
+				v1.subVectors( a, b );
+
+				// strictly front facing
+				return ( v0.cross( v1 ).dot( direction ) < 0 ) ? true : false;
+
+			};
+
 		}()
 
 	} );
@@ -14154,6 +14171,12 @@
 
 		},
 
+		isFrontFacing: function ( direction ) {
+
+			return Triangle.isFrontFacing( this.a, this.b, this.c, direction );
+
+		},
+
 		intersectsBox: function ( box ) {
 
 			return box.intersectsTriangle( this );
@@ -22384,10 +22407,7 @@
 		var device = null;
 		var session = null;
 
-		var framebufferScaleFactor = 1.0;
-
 		var frameOfReference = null;
-		var frameOfReferenceType = 'stage';
 
 		var pose = null;
 
@@ -22445,7 +22465,6 @@
 		this.setDevice = function ( value ) {
 
 			if ( value !== undefined ) device = value;
-			if ( value instanceof XRDevice ) gl.setCompatibleXRDevice( value );
 
 		};
 
@@ -22466,16 +22485,21 @@
 
 		}
 
-		this.setFramebufferScaleFactor = function ( value ) {
+		function onRequestFrameOfReference( value ) {
 
-			framebufferScaleFactor = value;
+			frameOfReference = value;
+
+			animation.setContext( session );
+			animation.start();
+
+		}
+
+		this.setFramebufferScaleFactor = function ( value ) {
 
 		};
 
 		this.setFrameOfReferenceType = function ( value ) {
 
-			frameOfReferenceType = value;
-
 		};
 
 		this.setSession = function ( value ) {
@@ -22489,17 +22513,9 @@
 				session.addEventListener( 'selectend', onSessionEvent );
 				session.addEventListener( 'end', onSessionEnd );
 
-				session.baseLayer = new XRWebGLLayer( session, gl, { framebufferScaleFactor: framebufferScaleFactor } );
-				session.requestFrameOfReference( frameOfReferenceType ).then( function ( value ) {
-
-					frameOfReference = value;
-
-					renderer.setFramebuffer( session.baseLayer.framebuffer );
-
-					animation.setContext( session );
-					animation.start();
+				session.updateRenderState( { baseLayer: new XRWebGLLayer( session, gl ) } );
 
-				} );
+				session.requestReferenceSpace( { type: 'stationary', subtype: 'eye-level' } ).then( onRequestFrameOfReference );
 
 				//
 
@@ -22584,18 +22600,20 @@
 
 		function onAnimationFrame( time, frame ) {
 
-			pose = frame.getDevicePose( frameOfReference );
+			pose = frame.getViewerPose( frameOfReference );
 
 			if ( pose !== null ) {
 
-				var layer = session.baseLayer;
-				var views = frame.views;
+				var layer = session.renderState.baseLayer;
+				var views = pose.views;
+
+				renderer.setFramebuffer( session.renderState.baseLayer.framebuffer );
 
 				for ( var i = 0; i < views.length; i ++ ) {
 
 					var view = views[ i ];
 					var viewport = layer.getViewport( view );
-					var viewMatrix = pose.getViewMatrix( view );
+					var viewMatrix = view.transform.inverse().matrix;
 
 					var camera = cameraVR.cameras[ i ];
 					camera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix );
@@ -22622,21 +22640,12 @@
 
 				if ( inputSource ) {
 
-					var inputPose = frame.getInputPose( inputSource, frameOfReference );
+					var inputPose = frame.getPose( inputSource.targetRaySpace, frameOfReference );
 
 					if ( inputPose !== null ) {
 
-						if ( 'targetRay' in inputPose ) {
-
-							controller.matrix.elements = inputPose.targetRay.transformMatrix;
-
-						} else if ( 'pointerMatrix' in inputPose ) {
-
-							// DEPRECATED
-
-							controller.matrix.elements = inputPose.pointerMatrix;
-
-						}
+						var targetRay = new XRRay( inputPose.transform );
+						controller.matrix.elements = targetRay.matrix;
 
 						controller.matrix.decompose( controller.position, controller.rotation, controller.scale );
 						controller.visible = true;
@@ -22836,7 +22845,8 @@
 				premultipliedAlpha: _premultipliedAlpha,
 				preserveDrawingBuffer: _preserveDrawingBuffer,
 				powerPreference: _powerPreference,
-				failIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat
+				failIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat,
+				xrCompatible: true
 			};
 
 			// event listeners must be registered before WebGL context is created, see #12753
@@ -25046,9 +25056,10 @@
 		}
 
 		//
-
 		this.setFramebuffer = function ( value ) {
 
+			if ( _framebuffer !== value ) _gl.bindFramebuffer( 36160, value );
+
 			_framebuffer = value;
 
 		};
@@ -25237,6 +25248,12 @@
 
 		};
 
+		/*
+		if ( typeof __THREE_DEVTOOLS__ !== undefined ) {
+			__THREE_DEVTOOLS__.dispatchEvent( { type: 'renderer', value: this } );
+		}
+		*/
+
 	}
 
 	/**
@@ -25330,6 +25347,12 @@
 
 		this.autoUpdate = true; // checked by the renderer
 
+		/*
+		if ( typeof __THREE_DEVTOOLS__ !== undefined ) {
+			__THREE_DEVTOOLS__.dispatchEvent( { type: 'scene', value: this } );
+		}
+		*/
+
 	}
 
 	Scene.prototype = Object.assign( Object.create( Object3D.prototype ), {

文件差异内容过多而无法显示
+ 326 - 326
build/three.min.js


+ 59 - 36
build/three.module.js

@@ -14040,6 +14040,23 @@ Object.assign( Triangle, {
 
 		};
 
+	}(),
+
+	isFrontFacing: function () {
+
+		var v0 = new Vector3();
+		var v1 = new Vector3();
+
+		return function isFrontFacing( a, b, c, direction ) {
+
+			v0.subVectors( c, b );
+			v1.subVectors( a, b );
+
+			// strictly front facing
+			return ( v0.cross( v1 ).dot( direction ) < 0 ) ? true : false;
+
+		};
+
 	}()
 
 } );
@@ -14148,6 +14165,12 @@ Object.assign( Triangle.prototype, {
 
 	},
 
+	isFrontFacing: function ( direction ) {
+
+		return Triangle.isFrontFacing( this.a, this.b, this.c, direction );
+
+	},
+
 	intersectsBox: function ( box ) {
 
 		return box.intersectsTriangle( this );
@@ -22378,10 +22401,7 @@ function WebXRManager( renderer ) {
 	var device = null;
 	var session = null;
 
-	var framebufferScaleFactor = 1.0;
-
 	var frameOfReference = null;
-	var frameOfReferenceType = 'stage';
 
 	var pose = null;
 
@@ -22439,7 +22459,6 @@ function WebXRManager( renderer ) {
 	this.setDevice = function ( value ) {
 
 		if ( value !== undefined ) device = value;
-		if ( value instanceof XRDevice ) gl.setCompatibleXRDevice( value );
 
 	};
 
@@ -22460,16 +22479,21 @@ function WebXRManager( renderer ) {
 
 	}
 
-	this.setFramebufferScaleFactor = function ( value ) {
+	function onRequestFrameOfReference( value ) {
 
-		framebufferScaleFactor = value;
+		frameOfReference = value;
+
+		animation.setContext( session );
+		animation.start();
+
+	}
+
+	this.setFramebufferScaleFactor = function ( value ) {
 
 	};
 
 	this.setFrameOfReferenceType = function ( value ) {
 
-		frameOfReferenceType = value;
-
 	};
 
 	this.setSession = function ( value ) {
@@ -22483,17 +22507,9 @@ function WebXRManager( renderer ) {
 			session.addEventListener( 'selectend', onSessionEvent );
 			session.addEventListener( 'end', onSessionEnd );
 
-			session.baseLayer = new XRWebGLLayer( session, gl, { framebufferScaleFactor: framebufferScaleFactor } );
-			session.requestFrameOfReference( frameOfReferenceType ).then( function ( value ) {
-
-				frameOfReference = value;
-
-				renderer.setFramebuffer( session.baseLayer.framebuffer );
-
-				animation.setContext( session );
-				animation.start();
+			session.updateRenderState( { baseLayer: new XRWebGLLayer( session, gl ) } );
 
-			} );
+			session.requestReferenceSpace( { type: 'stationary', subtype: 'eye-level' } ).then( onRequestFrameOfReference );
 
 			//
 
@@ -22578,18 +22594,20 @@ function WebXRManager( renderer ) {
 
 	function onAnimationFrame( time, frame ) {
 
-		pose = frame.getDevicePose( frameOfReference );
+		pose = frame.getViewerPose( frameOfReference );
 
 		if ( pose !== null ) {
 
-			var layer = session.baseLayer;
-			var views = frame.views;
+			var layer = session.renderState.baseLayer;
+			var views = pose.views;
+
+			renderer.setFramebuffer( session.renderState.baseLayer.framebuffer );
 
 			for ( var i = 0; i < views.length; i ++ ) {
 
 				var view = views[ i ];
 				var viewport = layer.getViewport( view );
-				var viewMatrix = pose.getViewMatrix( view );
+				var viewMatrix = view.transform.inverse().matrix;
 
 				var camera = cameraVR.cameras[ i ];
 				camera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix );
@@ -22616,21 +22634,12 @@ function WebXRManager( renderer ) {
 
 			if ( inputSource ) {
 
-				var inputPose = frame.getInputPose( inputSource, frameOfReference );
+				var inputPose = frame.getPose( inputSource.targetRaySpace, frameOfReference );
 
 				if ( inputPose !== null ) {
 
-					if ( 'targetRay' in inputPose ) {
-
-						controller.matrix.elements = inputPose.targetRay.transformMatrix;
-
-					} else if ( 'pointerMatrix' in inputPose ) {
-
-						// DEPRECATED
-
-						controller.matrix.elements = inputPose.pointerMatrix;
-
-					}
+					var targetRay = new XRRay( inputPose.transform );
+					controller.matrix.elements = targetRay.matrix;
 
 					controller.matrix.decompose( controller.position, controller.rotation, controller.scale );
 					controller.visible = true;
@@ -22830,7 +22839,8 @@ function WebGLRenderer( parameters ) {
 			premultipliedAlpha: _premultipliedAlpha,
 			preserveDrawingBuffer: _preserveDrawingBuffer,
 			powerPreference: _powerPreference,
-			failIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat
+			failIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat,
+			xrCompatible: true
 		};
 
 		// event listeners must be registered before WebGL context is created, see #12753
@@ -25040,9 +25050,10 @@ function WebGLRenderer( parameters ) {
 	}
 
 	//
-
 	this.setFramebuffer = function ( value ) {
 
+		if ( _framebuffer !== value ) _gl.bindFramebuffer( 36160, value );
+
 		_framebuffer = value;
 
 	};
@@ -25231,6 +25242,12 @@ function WebGLRenderer( parameters ) {
 
 	};
 
+	/*
+	if ( typeof __THREE_DEVTOOLS__ !== undefined ) {
+		__THREE_DEVTOOLS__.dispatchEvent( { type: 'renderer', value: this } );
+	}
+	*/
+
 }
 
 /**
@@ -25324,6 +25341,12 @@ function Scene() {
 
 	this.autoUpdate = true; // checked by the renderer
 
+	/*
+	if ( typeof __THREE_DEVTOOLS__ !== undefined ) {
+		__THREE_DEVTOOLS__.dispatchEvent( { type: 'scene', value: this } );
+	}
+	*/
+
 }
 
 Scene.prototype = Object.assign( Object.create( Object3D.prototype ), {

+ 1 - 1
utils/build/externs.js

@@ -6,4 +6,4 @@ var performance;
 var createImageBitmap;
 var WebGL2RenderingContext;
 var XRWebGLLayer;
-var XRDevice;
+var XRRay;

部分文件因为文件数量过多而无法显示