Bläddra i källkod

Merge pull request #12631 from WestLangley/dev-reflector_geometry

Generalize Reflector geometry
Mr.doob 7 år sedan
förälder
incheckning
820c61ad34

+ 11 - 11
examples/js/objects/Reflector.js

@@ -2,9 +2,9 @@
  * @author Slayvin / http://slayvin.net
  */
 
-THREE.Reflector = function ( width, height, options ) {
+THREE.Reflector = function ( geometry, options ) {
 
-	THREE.Mesh.call( this, new THREE.PlaneBufferGeometry( width, height ) );
+	THREE.Mesh.call( this, geometry );
 
 	this.type = 'Reflector';
 
@@ -65,15 +65,15 @@ THREE.Reflector = function ( width, height, options ) {
 
 	this.material = material;
 
-	this.onBeforeRender = function ( renderer, scene, camera ) {
-
-		if ( 'recursion' in camera.userData ) {
-
-			if ( camera.userData.recursion === recursion ) return;
-
-			camera.userData.recursion ++;
-
-		}
+	this.onBeforeRender = function ( renderer, scene, camera ) {
+
+		if ( 'recursion' in camera.userData ) {
+
+			if ( camera.userData.recursion === recursion ) return;
+
+			camera.userData.recursion ++;
+
+		}
 
 		reflectorWorldPosition.setFromMatrixPosition( scope.matrixWorld );
 		cameraWorldPosition.setFromMatrixPosition( camera.matrixWorld );

+ 2 - 2
examples/js/objects/ReflectorRTT.js

@@ -1,6 +1,6 @@
-THREE.ReflectorRTT = function ( width, height, options ) {
+THREE.ReflectorRTT = function ( geometry, options ) {
 
-	THREE.Reflector.call( this, width, height, options );
+	THREE.Reflector.call( this, geometry, options );
 
 	this.geometry.setDrawRange( 0, 0 ); // avoid rendering geometry
 

+ 2 - 2
examples/js/objects/Refractor.js

@@ -3,9 +3,9 @@
  *
  */
 
-THREE.Refractor = function ( width, height, options ) {
+THREE.Refractor = function ( geometry, options ) {
 
-	THREE.Mesh.call( this, new THREE.PlaneBufferGeometry( width, height ) );
+	THREE.Mesh.call( this, geometry );
 
 	this.type = 'Refractor';
 

+ 6 - 4
examples/webgl_mirror.html

@@ -86,9 +86,10 @@
 
 				var planeGeo = new THREE.PlaneBufferGeometry( 100.1, 100.1 );
 
-				// reflector/mirror planes
+				// reflectors/mirrors
 
-				var groundMirror = new THREE.Reflector( 100, 100, {
+				var geometry = new THREE.PlaneBufferGeometry( 100, 100 );
+				var groundMirror = new THREE.Reflector( geometry, {
 					clipBias: 0.003,
 					textureWidth: WIDTH * window.devicePixelRatio,
 					textureHeight: HEIGHT * window.devicePixelRatio,
@@ -98,14 +99,15 @@
 				groundMirror.rotateX( - Math.PI / 2 );
 				scene.add( groundMirror );
 
-				var verticalMirror = new THREE.Reflector( 60, 60, {
+				var geometry = new THREE.CircleBufferGeometry( 40, 6 );
+				var verticalMirror = new THREE.Reflector( geometry, {
 					clipBias: 0.003,
 					textureWidth: WIDTH * window.devicePixelRatio,
 					textureHeight: HEIGHT * window.devicePixelRatio,
 					color: 0x889999,
 					recursion: 1
 				} );
-				verticalMirror.position.y = 35;
+				verticalMirror.position.y = 50;
 				verticalMirror.position.z = -45;
 				scene.add( verticalMirror );
 

+ 2 - 1
examples/webgl_mirror_nodes.html

@@ -153,7 +153,8 @@
 				var planeGeo = new THREE.PlaneBufferGeometry( 100.1, 100.1 );
 
 				// reflector/mirror plane
-				var groundMirror = new THREE.ReflectorRTT( 100, 100, { clipBias: 0.003, textureWidth: WIDTH, textureHeight: HEIGHT } );
+				var geometry = new THREE.PlaneBufferGeometry( 100, 100 );
+				var groundMirror = new THREE.ReflectorRTT( geometry, { clipBias: 0.003, textureWidth: WIDTH, textureHeight: HEIGHT } );
 
 				var mask = new THREE.SwitchNode( new THREE.TextureNode( decalDiffuse ), 'w' );
 				var maskFlip = new THREE.Math1Node( mask, THREE.Math1Node.INVERT );

+ 2 - 1
examples/webvr_sandbox.html

@@ -85,7 +85,8 @@
 
 				//
 
-				reflector = new THREE.Reflector( 1.4, 1.4, {
+				var geometry = new THREE.PlaneBufferGeometry( 1.4, 1.4 );
+				reflector = new THREE.Reflector( geometry, {
 					textureWidth: window.innerWidth * window.devicePixelRatio,
 					textureHeight: window.innerHeight * window.devicePixelRatio
 				} );