Browse Source

Several cleanings for future enhancement:
- Some routines are moved to independent functions.
- Removed unused variables.
- Features are not changed.

Ueyama Satoshi 13 years ago
parent
commit
136f133e89
3 changed files with 353 additions and 143 deletions
  1. 137 0
      extest2.html
  2. 103 0
      extest2.js
  3. 113 143
      src/extras/geometries/ExtrudeGeometry.js

+ 137 - 0
extest2.html

@@ -0,0 +1,137 @@
+<!doctype html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8">
+		<title>extrude test</title>
+
+		<script src="./src/Three.js"></script>
+		<script src="./src/core/Clock.js"></script>
+		<script src="./src/core/Color.js"></script>
+		<script src="./src/core/Vector2.js"></script>
+		<script src="./src/core/Vector3.js"></script>
+		<script src="./src/core/Vector4.js"></script>
+		<script src="./src/core/Frustum.js"></script>
+		<script src="./src/core/Ray.js"></script>
+		<script src="./src/core/Rectangle.js"></script>
+		<script src="./src/core/Math.js"></script>
+		<script src="./src/core/Matrix3.js"></script>
+		<script src="./src/core/Matrix4.js"></script>
+		<script src="./src/core/Object3D.js"></script>
+		<script src="./src/core/Projector.js"></script>
+		<script src="./src/core/Quaternion.js"></script>
+		<script src="./src/core/Vertex.js"></script>
+		<script src="./src/core/Face3.js"></script>
+		<script src="./src/core/Face4.js"></script>
+		<script src="./src/core/UV.js"></script>
+		<script src="./src/core/Geometry.js"></script>
+		<script src="./src/core/Spline.js"></script>
+		<script src="./src/cameras/Camera.js"></script>
+		<script src="./src/cameras/OrthographicCamera.js"></script>
+		<script src="./src/cameras/PerspectiveCamera.js"></script>
+		<script src="./src/lights/Light.js"></script>
+		<script src="./src/lights/AmbientLight.js"></script>
+		<script src="./src/lights/DirectionalLight.js"></script>
+		<script src="./src/lights/PointLight.js"></script>
+		<script src="./src/lights/SpotLight.js"></script>
+		<script src="./src/materials/Material.js"></script>
+		<script src="./src/materials/LineBasicMaterial.js"></script>
+		<script src="./src/materials/MeshBasicMaterial.js"></script>
+		<script src="./src/materials/MeshLambertMaterial.js"></script>
+		<script src="./src/materials/MeshPhongMaterial.js"></script>
+		<script src="./src/materials/MeshDepthMaterial.js"></script>
+		<script src="./src/materials/MeshNormalMaterial.js"></script>
+		<script src="./src/materials/MeshFaceMaterial.js"></script>
+		<script src="./src/materials/ParticleBasicMaterial.js"></script>
+		<script src="./src/materials/ParticleCanvasMaterial.js"></script>
+		<script src="./src/materials/ParticleDOMMaterial.js"></script>
+		<script src="./src/materials/ShaderMaterial.js"></script>
+		<script src="./src/textures/Texture.js"></script>
+		<script src="./src/textures/DataTexture.js"></script>
+		<script src="./src/objects/Particle.js"></script>
+		<script src="./src/objects/ParticleSystem.js"></script>
+		<script src="./src/objects/Line.js"></script>
+		<script src="./src/objects/Mesh.js"></script>
+		<script src="./src/objects/Bone.js"></script>
+		<script src="./src/objects/SkinnedMesh.js"></script>
+		<script src="./src/objects/MorphAnimMesh.js"></script>
+		<script src="./src/objects/Ribbon.js"></script>
+		<script src="./src/objects/LOD.js"></script>
+		<script src="./src/objects/Sprite.js"></script>
+		<script src="./src/scenes/Scene.js"></script>
+		<script src="./src/scenes/Fog.js"></script>
+		<script src="./src/scenes/FogExp2.js"></script>
+		<script src="./src/renderers/DOMRenderer.js"></script>
+		<script src="./src/renderers/CanvasRenderer.js"></script>
+		<script src="./src/renderers/SVGRenderer.js"></script>
+		<script src="./src/renderers/WebGLShaders.js"></script>
+		<script src="./src/renderers/WebGLRenderer.js"></script>
+		<script src="./src/renderers/WebGLRenderTarget.js"></script>
+		<script src="./src/renderers/WebGLRenderTargetCube.js"></script>
+		<script src="./src/renderers/renderables/RenderableVertex.js"></script>
+		<script src="./src/renderers/renderables/RenderableFace3.js"></script>
+		<script src="./src/renderers/renderables/RenderableFace4.js"></script>
+		<script src="./src/renderers/renderables/RenderableObject.js"></script>
+		<script src="./src/renderers/renderables/RenderableParticle.js"></script>
+		<script src="./src/renderers/renderables/RenderableLine.js"></script>
+		<script src="./src/extras/ColorUtils.js"></script>
+		<script src="./src/extras/GeometryUtils.js"></script>
+		<script src="./src/extras/ImageUtils.js"></script>
+		<script src="./src/extras/SceneUtils.js"></script>
+		<script src="./src/extras/ShaderUtils.js"></script>
+		<script src="./src/extras/core/BufferGeometry.js"></script>
+		<script src="./src/extras/core/Curve.js"></script>
+		<script src="./src/extras/core/CurvePath.js"></script>
+		<script src="./src/extras/core/EventTarget.js"></script>
+		<script src="./src/extras/core/Gyroscope.js"></script>
+		<script src="./src/extras/core/Path.js"></script>
+		<script src="./src/extras/core/Shape.js"></script>
+		<script src="./src/extras/core/TextPath.js"></script>
+		<script src="./src/extras/animation/AnimationHandler.js"></script>
+		<script src="./src/extras/animation/Animation.js"></script>
+		<script src="./src/extras/animation/KeyFrameAnimation.js"></script>
+		<script src="./src/extras/cameras/CubeCamera.js"></script>
+		<script src="./src/extras/cameras/CombinedCamera.js"></script>
+		<script src="./src/extras/controls/FirstPersonControls.js"></script>
+		<script src="./src/extras/controls/PathControls.js"></script>
+		<script src="./src/extras/controls/FlyControls.js"></script>
+		<script src="./src/extras/controls/RollControls.js"></script>
+		<script src="./src/extras/controls/TrackballControls.js"></script>
+		<script src="./src/extras/geometries/CubeGeometry.js"></script>
+		<script src="./src/extras/geometries/CylinderGeometry.js"></script>
+		<script src="./src/extras/geometries/ExtrudeGeometry.js"></script>
+		<script src="./src/extras/geometries/LatheGeometry.js"></script>
+		<script src="./src/extras/geometries/PlaneGeometry.js"></script>
+		<script src="./src/extras/geometries/SphereGeometry.js"></script>
+		<script src="./src/extras/geometries/TextGeometry.js"></script>
+		<script src="./src/extras/geometries/TorusGeometry.js"></script>
+		<script src="./src/extras/geometries/TorusKnotGeometry.js"></script>
+		<script src="./src/extras/geometries/PolyhedronGeometry.js"></script>
+		<script src="./src/extras/geometries/IcosahedronGeometry.js"></script>
+		<script src="./src/extras/geometries/OctahedronGeometry.js"></script>
+		<script src="./src/extras/geometries/TetrahedronGeometry.js"></script>
+		<script src="./src/extras/helpers/AxisHelper.js"></script>
+		<script src="./src/extras/helpers/CameraHelper.js"></script>
+		<script src="./src/extras/modifiers/SubdivisionModifier.js"></script>
+		<script src="./src/extras/loaders/Loader.js"></script>
+		<script src="./src/extras/loaders/BinaryLoader.js"></script>
+		<script src="./src/extras/loaders/ColladaLoader.js"></script>
+		<script src="./src/extras/loaders/JSONLoader.js"></script>
+		<script src="./src/extras/loaders/SceneLoader.js"></script>
+		<script src="./src/extras/loaders/UTF8Loader.js"></script>
+		<script src="./src/extras/objects/MarchingCubes.js"></script>
+		<script src="./src/extras/objects/LensFlare.js"></script>
+		<script src="./src/extras/renderers/plugins/LensFlarePlugin.js"></script>
+		<script src="./src/extras/renderers/plugins/ShadowMapPlugin.js"></script>
+		<script src="./src/extras/renderers/plugins/SpritePlugin.js"></script>
+		<script src="./src/extras/renderers/AnaglyphWebGLRenderer.js"></script>
+		<script src="./src/extras/renderers/CrosseyedWebGLRenderer.js"></script>
+		<script src="./src/extras/shaders/ShaderFlares.js"></script>
+		<script src="./src/extras/shaders/ShaderSprite.js"></script>
+
+		
+		<script type="text/javascript" src="./extest2.js"></script>
+	</head>
+	<body onload="void launch()">
+		
+	</body>
+</html>

+ 103 - 0
extest2.js

@@ -0,0 +1,103 @@
+(function(aGlobal) {
+	"use strict";
+	var TEXDATA = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAMFB'+
+	              'MVEWcEFqcGGOlIWOlIWulKWutOXOtOXutQnu1SoS6Uo69Y5zMfrHWnMbepc7erdbntd6d+uwA'+
+	              'AAAAo0lEQVR42mNgoAL4jwaIEQDp405gYOBKYLjvwIAssIBhLwM7ssABhtUMXECB3Q0M3nsTG'+
+	              'Lr3fmTwYuABGbqAIf9/AsP6/z8YWBjskQV+A/X2IwTccv4CBfYjBBi4/6MLoKnIWotmxvr/v4'+
+	              'C2+CMLfGPwYOBHFvjAUAUyGW5t5gao02G2sME8BxcoYDgvwAgS2LVqPxCvWr1rFZAiKggJClA'+
+	              'BAAC+WuzCiXr+gwAAAABJRU5ErkJggg==';
+	
+	var renderer, camera, scene, mesh, mesh2;
+	var angle = 0;
+
+	function createMesh(g, texture) {
+		var m = new THREE.Mesh(g, new THREE.MeshFaceMaterial());
+		g.materials = 
+				[
+					new THREE.MeshBasicMaterial( { map: texture } ),
+					new THREE.MeshBasicMaterial( { color: 0xcc4488 } )
+				];
+				
+		return m;
+	}
+	
+	function setupModel() {
+		var img = new Image();
+		img.onload = function() { texture.needsUpdate = true; }
+		img.src = TEXDATA;
+		var texture = new THREE.Texture(img);
+		
+		var s = new THREE.Shape();
+		s.moveTo( 0,0 );
+		s.lineTo( -4, -4 );
+		s.lineTo(  4, -4 );
+		s.lineTo(  5, 0 );
+		s.lineTo(  4, 4 );
+		s.lineTo( -4, 4 );
+		
+		var ho = new THREE.Shape();
+		ho.moveTo( 0,0 );
+		ho.lineTo( 0, 2 );
+		ho.lineTo( 2, 0 );
+		ho.lineTo( -2,-2 );
+		
+		s.holes.push(ho);
+
+		var s2 = new THREE.Shape();
+		s2.moveTo(8+ 0,0 );
+		s2.lineTo(8+ -2, -2 );
+		s2.lineTo(8+  2, -2 );
+		s2.lineTo(8+  2.5, 0 );
+		s2.lineTo(8+  2, 2 );
+		s2.lineTo(8+ -2, 2 );
+		
+		var exoption = {
+			bevelEnabled: false,
+			bevelSize: 1,
+			amount: 6,
+			extrudeMaterial: 0,
+			material: 1
+		};
+		
+		var geom = s.extrude(exoption);
+		mesh = createMesh(geom, texture);
+		mesh.position.set(-7, 0, -45);
+		scene.add(mesh);
+		
+		var geom2 = new THREE.ExtrudeGeometry( [s,s2], exoption );
+		mesh2 = createMesh(geom2, texture);
+		mesh2.position.set(7, 0, -45);
+		scene.add(mesh2);
+	}
+	
+	function tick() {
+		var DPI = Math.PI*2;
+		angle += 0.05;
+		if (angle > DPI) {angle -= DPI;}
+		mesh.rotation.set(-3.2, angle, 0);
+		mesh2.rotation.set(-3.2, angle, 0);
+		
+		renderer.render(scene, camera);
+		setTimeout(tick, 100);
+	}
+	
+	aGlobal.launch = function() {
+		scene = new THREE.Scene();
+		renderer = new THREE.WebGLRenderer();
+		camera = new THREE.PerspectiveCamera();
+		scene.add(camera);
+
+		var light = new THREE.DirectionalLight(0xffffff);
+		light.position.set(0, 1, 2);
+		light.position.normalize();
+		scene.add(light);
+		
+		
+		renderer.setSize(600, 600);
+		document.body.appendChild(renderer.domElement);
+		
+		setupModel();
+		
+		setTimeout(tick, 300);
+	};
+})(window);

+ 113 - 143
src/extras/geometries/ExtrudeGeometry.js

@@ -31,28 +31,17 @@
 THREE.ExtrudeGeometry = function( shapes, options ) {
 
 	if ( typeof( shapes ) === "undefined" ) {
-
 		shapes = [];
 		return;
-
 	}
 
 	THREE.Geometry.call( this );
 
 	shapes = shapes instanceof Array ? shapes : [ shapes ];
 
-	var shape, s, sl = shapes.length;
-
-	this.shapebb = shapes[ sl - 1 ].getBoundingBox();
-
-	for ( s = 0; s < sl; s ++ ) {
-
-		shape = shapes[ s ];
-
-		this.addShape( shape, options );
-
-	}
+	this.shapebb = shapes[ shapes.length - 1 ].getBoundingBox();
 
+	this.addShapeList( shapes, options );
 
 	this.computeCentroids();
 	this.computeFaceNormals();
@@ -70,6 +59,14 @@ THREE.ExtrudeGeometry = function( shapes, options ) {
 THREE.ExtrudeGeometry.prototype = new THREE.Geometry();
 THREE.ExtrudeGeometry.prototype.constructor = THREE.ExtrudeGeometry;
 
+THREE.ExtrudeGeometry.prototype.addShapeList = function(shapes, options) {
+	var sl = shapes.length;
+	
+	for ( var s = 0; s < sl; s ++ ) {
+		var shape = shapes[ s ];
+		this.addShape( shape, options );
+	}
+};
 
 THREE.ExtrudeGeometry.prototype.addShape = function( shape, options ) {
 
@@ -517,90 +514,87 @@ THREE.ExtrudeGeometry.prototype.addShape = function( shape, options ) {
 
 	}
 
+	// set UV generator
+	var uvgen = THREE.ExtrudeGeometry.WorldUVGenerator;
 
 	////
 	///   Handle Faces
 	////
 
-	// Bottom faces
-
-	if ( bevelEnabled ) {
-
-		var layer = 0 ; // steps + 1
-		var offset = vlen * layer;
+	// Top and bottom faces
+	buildLidFaces();
 
-		for ( i = 0; i < flen; i ++ ) {
-
-			face = faces[ i ];
-			f3( face[ 2 ]+ offset, face[ 1 ]+ offset, face[ 0 ] + offset );
-
-		}
+	// Sides faces
+	buildSideFaces();
 
-		layer = steps + bevelSegments * 2;
-		offset = vlen * layer;
 
-		// Top faces
+	/////  Internal functions
 
-		for ( i = 0; i < flen; i ++ ) {
+	function buildLidFaces() {
+		if ( bevelEnabled ) {
 
-			face = faces[ i ];
-			f3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );
+			var layer = 0 ; // steps + 1
+			var offset = vlen * layer;
 
-		}
+			// Bottom faces
+			
+			for ( i = 0; i < flen; i ++ ) {
 
-	} else {
+				face = faces[ i ];
+				f3( face[ 2 ]+ offset, face[ 1 ]+ offset, face[ 0 ] + offset, true );
 
-		for ( i = 0; i < flen; i++ ) {
+			}
 
-			face = faces[ i ];
-			f3( face[ 2 ], face[ 1 ], face[ 0 ] );
+			layer = steps + bevelSegments * 2;
+			offset = vlen * layer;
 
-		}
+			// Top faces
 
-		// Top faces
+			for ( i = 0; i < flen; i ++ ) {
+				face = faces[ i ];
+				f3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset, false );
+			}
+		} else {
+		
+			// Bottom faces
 
-		for ( i = 0; i < flen; i ++ ) {
+			for ( i = 0; i < flen; i++ ) {
+				face = faces[ i ];
+				f3( face[ 2 ], face[ 1 ], face[ 0 ], true );
+			}
 
-			face = faces[ i ];
-			f3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );
+			// Top faces
 
+			for ( i = 0; i < flen; i ++ ) {
+				face = faces[ i ];
+				f3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps, false );
+			}
 		}
-
 	}
 
-	var tmpPt;
-	var j, k, l, m;
-
-	var layeroffset = 0;
-
-	// Sides faces
-
-	sidewalls( contour );
-	layeroffset += contour.length;
-
-	for ( h = 0, hl = holes.length;  h < hl; h ++ ) {
+	// Create faces for the z-sides of the shape
 
-		ahole = holes[ h ];
-		sidewalls( ahole );
+	function buildSideFaces() {
+		var layeroffset = 0;
+		sidewalls( contour, layeroffset );
+		layeroffset += contour.length;
 
-		//, true
-		layeroffset += ahole.length;
+		for ( h = 0, hl = holes.length;  h < hl; h ++ ) {
+			ahole = holes[ h ];
+			sidewalls( ahole, layeroffset );
 
+			//, true
+			layeroffset += ahole.length;
+		}
 	}
 
-	// Create faces for the z-sides of the shape
-
-	function sidewalls( contour ) {
-
+	function sidewalls( contour, layeroffset ) {
+		var j, k;
 		i = contour.length;
 
 		while ( --i >= 0 ) {
-
-			tmpPt = contour[ i ];
-
 			j = i;
 			k = i - 1;
-
 			if ( k < 0 ) k = contour.length - 1;
 
 			//console.log('b', i,j, i-1, k,vertices.length);
@@ -608,7 +602,6 @@ THREE.ExtrudeGeometry.prototype.addShape = function( shape, options ) {
 			var s = 0, sl = steps  + bevelSegments * 2;
 
 			for ( s = 0; s < sl; s ++ ) {
-
 				var slen1 = vlen * s;
 				var slen2 = vlen * ( s + 1 );
 				var a = layeroffset + j + slen1,
@@ -616,46 +609,17 @@ THREE.ExtrudeGeometry.prototype.addShape = function( shape, options ) {
 					c = layeroffset + k + slen2,
 					d = layeroffset + j + slen2;
 
-				f4( a, b, c, d );
-
-				if ( extrudeMaterial !== undefined ) {
-
-					var v1 = s / sl;
-					var v2 = ( s + 1 ) / sl;
-
-					var ztol = ( amount + bevelThickness * 2 );
-
-					var u1 = ( scope.vertices[ a ].position.z + bevelThickness ) / ztol;
-					var u2 = ( scope.vertices[ d ].position.z + bevelThickness ) / ztol;
-
-					//console.log(vy1, vy2);
-					/*
-					scope.faceVertexUvs[ 0 ].push( [
-						new THREE.UV( u1, v1 ),
-						new THREE.UV( u2, v1 ),
-						new THREE.UV( u2, v2 ),
-						new THREE.UV( u1, v2 )
-					] );
-					*/
-
-				}
-
-
+				f4( a, b, c, d, contour, s, sl );
 			}
-
 		}
-
 	}
 
 
 	function v( x, y, z ) {
-
 		scope.vertices.push( new THREE.Vertex( new THREE.Vector3( x, y, z ) ) );
-
 	}
 
-	function f3( a, b, c ) {
-
+	function f3( a, b, c, isBottom ) {
 		a += shapesOffset;
 		b += shapesOffset;
 		c += shapesOffset;
@@ -663,80 +627,86 @@ THREE.ExtrudeGeometry.prototype.addShape = function( shape, options ) {
 												   // normal, color, material
 		scope.faces.push( new THREE.Face3( a, b, c, null, null, material ) );
 
-		var ax = scope.vertices[ a ].position.x,
-			ay = scope.vertices[ a ].position.y,
-
-			bx = scope.vertices[ b ].position.x,
-			by = scope.vertices[ b ].position.y,
-
-			cx = scope.vertices[ c ].position.x,
-			cy = scope.vertices[ c ].position.y;
-
-		scope.faceVertexUvs[ 0 ].push( [
-
-			new THREE.UV( ax, 1 - ay ),
-			new THREE.UV( bx, 1 - by ),
-			new THREE.UV( cx, 1 - cy )
-
-		] );
-
+		var uvs = isBottom ? uvgen.generateBottomUV( scope, shape, options, a, b, c)
+		                   : uvgen.generateTopUV( scope, shape, options, a, b, c);
 
+ 		scope.faceVertexUvs[ 0 ].push(uvs);
 	}
 
-	function f4( a, b, c, d ) {
-
+	function f4( a, b, c, d, wallContour, stepIndex, stepsLength ) {
 		a += shapesOffset;
 		b += shapesOffset;
 		c += shapesOffset;
 		d += shapesOffset;
 
  		scope.faces.push( new THREE.Face4( a, b, c, d, null, null, extrudeMaterial ) );
+ 
+ 		var uvs = uvgen.generateSideWallUV( scope, shape, wallContour, options, a, b, c, d, stepIndex, stepsLength);
+ 		scope.faceVertexUvs[ 0 ].push(uvs);
+	}
 
-		var ax = scope.vertices[ a ].position.x,
-			ay = scope.vertices[ a ].position.y,
-			az = scope.vertices[ a ].position.z,
-
-			bx = scope.vertices[ b ].position.x,
-			by = scope.vertices[ b ].position.y,
-			bz = scope.vertices[ b ].position.z,
+};
 
-			cx = scope.vertices[ c ].position.x,
-			cy = scope.vertices[ c ].position.y,
-			cz = scope.vertices[ c ].position.z,
 
-			dx = scope.vertices[ d ].position.x,
-			dy = scope.vertices[ d ].position.y,
-			dz = scope.vertices[ d ].position.z;
 
-		if ( Math.abs( ay - by ) < 0.01 ) {
+THREE.ExtrudeGeometry.WorldUVGenerator = {
+	generateTopUV: function( geometry, extrudedShape, extrudeOptions, indexA, indexB, indexC) {
+		var ax = geometry.vertices[ indexA ].position.x,
+			ay = geometry.vertices[ indexA ].position.y,
 
-			scope.faceVertexUvs[ 0 ].push( [
+			bx = geometry.vertices[ indexB ].position.x,
+			by = geometry.vertices[ indexB ].position.y,
 
+			cx = geometry.vertices[ indexC ].position.x,
+			cy = geometry.vertices[ indexC ].position.y;
+			
+		return [
+			new THREE.UV( ax, 1 - ay ),
+			new THREE.UV( bx, 1 - by ),
+			new THREE.UV( cx, 1 - cy )
+		];
+	},
+
+	generateBottomUV: function( geometry, extrudedShape, extrudeOptions, indexA, indexB, indexC) {
+		return this.generateTopUV( geometry, extrudedShape, extrudeOptions, indexA, indexB, indexC );
+	},
+
+	generateSideWallUV: function( geometry, extrudedShape, wallContour, extrudeOptions,
+	                              indexA, indexB, indexC, indexD, stepIndex, stepsLength) {
+		var ax = geometry.vertices[ indexA ].position.x,
+			ay = geometry.vertices[ indexA ].position.y,
+			az = geometry.vertices[ indexA ].position.z,
+
+			bx = geometry.vertices[ indexB ].position.x,
+			by = geometry.vertices[ indexB ].position.y,
+			bz = geometry.vertices[ indexB ].position.z,
+
+			cx = geometry.vertices[ indexC ].position.x,
+			cy = geometry.vertices[ indexC ].position.y,
+			cz = geometry.vertices[ indexC ].position.z,
+
+			dx = geometry.vertices[ indexD ].position.x,
+			dy = geometry.vertices[ indexD ].position.y,
+			dz = geometry.vertices[ indexD ].position.z;
+		
+		if ( Math.abs( ay - by ) < 0.01 ) {
+			return [
 				new THREE.UV( ax, az ),
 				new THREE.UV( bx, bz ),
 				new THREE.UV( cx, cz ),
 				new THREE.UV( dx, dz )
-
-			] );
-
+			];
 		} else {
-
-			scope.faceVertexUvs[ 0 ].push( [
-
+			return [
 				new THREE.UV( ay, az ),
 				new THREE.UV( by, bz ),
 				new THREE.UV( cy, cz ),
 				new THREE.UV( dy, dz )
-
-			] );
-
+			];
 		}
-
 	}
-
 };
 
-
 THREE.ExtrudeGeometry.__v1 = new THREE.Vector2();
 THREE.ExtrudeGeometry.__v2 = new THREE.Vector2();
 THREE.ExtrudeGeometry.__v3 = new THREE.Vector2();