Browse Source

Updated builds.

Mr.doob 8 năm trước cách đây
mục cha
commit
d3b50bf2e5
3 tập tin đã thay đổi với 758 bổ sung495 xóa
  1. 215 83
      build/three.js
  2. 330 329
      build/three.min.js
  3. 213 83
      build/three.module.js

+ 215 - 83
build/three.js

@@ -13477,13 +13477,11 @@
 
 			}
 
-			data.data = {};
-
-			data.data.vertices = vertices;
-			data.data.normals = normals;
-			if ( colors.length > 0 ) data.data.colors = colors;
-			if ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility
-			data.data.faces = faces;
+			data.vertices = vertices;
+			data.normals = normals;
+			if ( colors.length > 0 ) data.colors = colors;
+			if ( uvs.length > 0 ) data.uvs = [ uvs ]; // temporal backward compatibility
+			data.faces = faces;
 
 			return data;
 
@@ -26131,25 +26129,47 @@
 	 *
 	 * }
 	 **/
+	 
+	 function ExtrudeGeometry( shapes, options ) {
+
+		Geometry.call( this );
 
-	function ExtrudeGeometry( shapes, options ) {
+		this.type = 'ExtrudeGeometry';
 
-		if ( typeof( shapes ) === "undefined" ) {
+		this.parameters = {
+			shapes: shapes,
+			options: options
+		};
+
+		this.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) );
+		this.mergeVertices();
+
+	}
+
+
+	ExtrudeGeometry.prototype = Object.create( Geometry.prototype );
+	ExtrudeGeometry.prototype.constructor = ExtrudeGeometry;
+
+	 
+
+	function ExtrudeBufferGeometry( shapes, options ) {
+
+		if ( typeof ( shapes ) === "undefined" ) {
 
 			shapes = [];
 			return;
 
 		}
 
-		Geometry.call( this );
+		BufferGeometry.call( this );
 
-		this.type = 'ExtrudeGeometry';
+		this.type = 'ExtrudeBufferGeometry';
 
 		shapes = Array.isArray( shapes ) ? shapes : [ shapes ];
 
 		this.addShapeList( shapes, options );
 
-		this.computeFaceNormals();
+		this.computeVertexNormals();
 
 		// can't really use automatic vertex normals
 		// as then front and back sides get smoothed too
@@ -26161,12 +26181,32 @@
 
 	}
 
-	ExtrudeGeometry.prototype = Object.create( Geometry.prototype );
-	ExtrudeGeometry.prototype.constructor = ExtrudeGeometry;
+	ExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );
+	ExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry;
+
+	ExtrudeBufferGeometry.prototype.getArrays = function () {
+
+		var positionAttribute = this.getAttribute( "position" );
+		var verticesArray = positionAttribute ? Array.prototype.slice.call( positionAttribute.array ) : [];
+
+		var uvAttribute = this.getAttribute( "uv" );
+		var uvArray = uvAttribute ? Array.prototype.slice.call( uvAttribute.array ) : [];
+
+		var IndexAttribute = this.index;
+		var indicesArray = IndexAttribute ? Array.prototype.slice.call( IndexAttribute.array ) : [];
+
+		return {
+			position: verticesArray,
+			uv: uvArray,
+			index: indicesArray
+		};
 
-	ExtrudeGeometry.prototype.addShapeList = function ( shapes, options ) {
+	};
+
+	ExtrudeBufferGeometry.prototype.addShapeList = function ( shapes, options ) {
 
 		var sl = shapes.length;
+		options.arrays = this.getArrays();
 
 		for ( var s = 0; s < sl; s ++ ) {
 
@@ -26175,9 +26215,21 @@
 
 		}
 
+		this.setIndex( options.arrays.index );
+		this.addAttribute( 'position', new Float32BufferAttribute( options.arrays.position, 3 ) );
+		this.addAttribute( 'uv', new Float32BufferAttribute( options.arrays.uv, 2 ) );
+
 	};
 
-	ExtrudeGeometry.prototype.addShape = function ( shape, options ) {
+	ExtrudeBufferGeometry.prototype.addShape = function ( shape, options ) {
+
+		var arrays = options.arrays ? options.arrays : this.getArrays();
+		var verticesArray = arrays.position;
+		var indicesArray = arrays.index;
+		var uvArray = arrays.uv;
+
+		var placeholder = [];
+
 
 		var amount = options.amount !== undefined ? options.amount : 100;
 
@@ -26234,8 +26286,6 @@
 		var ahole, h, hl; // looping of holes
 		var scope = this;
 
-		var shapesOffset = this.vertices.length;
-
 		var shapePoints = shape.extractPoints( curveSegments );
 
 		var vertices = shapePoints.shape;
@@ -26306,13 +26356,15 @@
 			// inPt' is the intersection of the two lines parallel to the two
 			//  adjacent edges of inPt at a distance of 1 unit on the left side.
 
-			var v_trans_x, v_trans_y, shrink_by = 1;		// resulting translation vector for inPt
+			var v_trans_x, v_trans_y, shrink_by = 1; // resulting translation vector for inPt
 
 			// good reading for geometry algorithms (here: line-line intersection)
 			// http://geomalgorithms.com/a05-_intersect-1.html
 
-			var v_prev_x = inPt.x - inPrev.x, v_prev_y = inPt.y - inPrev.y;
-			var v_next_x = inNext.x - inPt.x, v_next_y = inNext.y - inPt.y;
+			var v_prev_x = inPt.x - inPrev.x,
+				v_prev_y = inPt.y - inPrev.y;
+			var v_next_x = inNext.x - inPt.x,
+				v_next_y = inNext.y - inPt.y;
 
 			var v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );
 
@@ -26338,9 +26390,9 @@
 
 				// scaling factor for v_prev to intersection point
 
-				var sf = (  ( ptNextShift_x - ptPrevShift_x ) * v_next_y -
-							( ptNextShift_y - ptPrevShift_y ) * v_next_x    ) /
-						  ( v_prev_x * v_next_y - v_prev_y * v_next_x );
+				var sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -
+						( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /
+					( v_prev_x * v_next_y - v_prev_y * v_next_x );
 
 				// vector from inPt to intersection point
 
@@ -26352,7 +26404,7 @@
 				var v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );
 				if ( v_trans_lensq <= 2 ) {
 
-					return	new Vector2( v_trans_x, v_trans_y );
+					return new Vector2( v_trans_x, v_trans_y );
 
 				} else {
 
@@ -26364,7 +26416,7 @@
 
 				// handle special case of collinear edges
 
-				var direction_eq = false;		// assumes: opposite
+				var direction_eq = false; // assumes: opposite
 				if ( v_prev_x > Number.EPSILON ) {
 
 					if ( v_next_x > Number.EPSILON ) {
@@ -26399,7 +26451,7 @@
 
 					// console.log("Warning: lines are a straight sequence");
 					v_trans_x = - v_prev_y;
-					v_trans_y =  v_prev_x;
+					v_trans_y = v_prev_x;
 					shrink_by = Math.sqrt( v_prev_lensq );
 
 				} else {
@@ -26413,7 +26465,7 @@
 
 			}
 
-			return	new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );
+			return new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );
 
 		}
 
@@ -26432,7 +26484,8 @@
 
 		}
 
-		var holesMovements = [], oneHoleMovements, verticesMovements = contourMovements.concat();
+		var holesMovements = [],
+			oneHoleMovements, verticesMovements = contourMovements.concat();
 
 		for ( h = 0, hl = holes.length; h < hl; h ++ ) {
 
@@ -26472,7 +26525,7 @@
 
 				vert = scalePt2( contour[ i ], contourMovements[ i ], bs );
 
-				v( vert.x, vert.y,  - z );
+				v( vert.x, vert.y, - z );
 
 			}
 
@@ -26487,7 +26540,7 @@
 
 					vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );
 
-					v( vert.x, vert.y,  - z );
+					v( vert.x, vert.y, - z );
 
 				}
 
@@ -26561,7 +26614,7 @@
 		for ( b = bevelSegments - 1; b >= 0; b -- ) {
 
 			t = b / bevelSegments;
-			z = bevelThickness * Math.cos ( t * Math.PI / 2 );
+			z = bevelThickness * Math.cos( t * Math.PI / 2 );
 			bs = bevelSize * Math.sin( t * Math.PI / 2 );
 
 			// contract shape
@@ -26569,7 +26622,7 @@
 			for ( i = 0, il = contour.length; i < il; i ++ ) {
 
 				vert = scalePt2( contour[ i ], contourMovements[ i ], bs );
-				v( vert.x, vert.y,  amount + z );
+				v( vert.x, vert.y, amount + z );
 
 			}
 
@@ -26586,7 +26639,7 @@
 
 					if ( ! extrudeByPath ) {
 
-						v( vert.x, vert.y,  amount + z );
+						v( vert.x, vert.y, amount + z );
 
 					} else {
 
@@ -26614,6 +26667,8 @@
 		/////  Internal functions
 
 		function buildLidFaces() {
+			
+			var start = verticesArray.length/3;
 
 			if ( bevelEnabled ) {
 
@@ -26662,6 +26717,8 @@
 				}
 
 			}
+			
+			scope.addGroup( start, verticesArray.length/3 -start, options.material !== undefined ? options.material : 0);
 
 		}
 
@@ -26669,6 +26726,7 @@
 
 		function buildSideFaces() {
 
+			var start = verticesArray.length/3;
 			var layeroffset = 0;
 			sidewalls( contour, layeroffset );
 			layeroffset += contour.length;
@@ -26682,6 +26740,12 @@
 				layeroffset += ahole.length;
 
 			}
+			
+			if (options.extrudeMaterial !== undefined){
+				
+				scope.addGroup( start, verticesArray.length/3 -start, options.extrudeMaterial !== undefined ? options.extrudeMaterial : 1);
+				
+			}
 
 		}
 
@@ -26698,7 +26762,8 @@
 
 				//console.log('b', i,j, i-1, k,vertices.length);
 
-				var s = 0, sl = steps  + bevelSegments * 2;
+				var s = 0,
+					sl = steps + bevelSegments * 2;
 
 				for ( s = 0; s < sl; s ++ ) {
 
@@ -26718,41 +26783,76 @@
 
 		}
 
-
 		function v( x, y, z ) {
 
-			scope.vertices.push( new Vector3( x, y, z ) );
+			placeholder.push( x );
+			placeholder.push( y );
+			placeholder.push( z );
 
 		}
 
-		function f3( a, b, c ) {
 
-			a += shapesOffset;
-			b += shapesOffset;
-			c += shapesOffset;
+		function f3( a, b, c ) {
 
-			scope.faces.push( new Face3( a, b, c, null, null, 0 ) );
+			addVertex( a );
+			addVertex( b );
+			addVertex( c );
 
-			var uvs = uvgen.generateTopUV( scope, a, b, c );
+			var nextIndex = verticesArray.length / 3;
+			var uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );
 
-			scope.faceVertexUvs[ 0 ].push( uvs );
+			addUV( uvs[ 0 ] );
+			addUV( uvs[ 1 ] );
+			addUV( uvs[ 2 ] );
 
 		}
 
 		function f4( a, b, c, d, wallContour, stepIndex, stepsLength, contourIndex1, contourIndex2 ) {
 
-			a += shapesOffset;
-			b += shapesOffset;
-			c += shapesOffset;
-			d += shapesOffset;
+			addVertex( a );
+			addVertex( b );
+			addVertex( d );
+
+			addVertex( b );
+			addVertex( c );
+			addVertex( d );
+
+
+			var nextIndex = verticesArray.length / 3;
+			var uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );
+
+			addUV( uvs[ 0 ] );
+			addUV( uvs[ 1 ] );
+			addUV( uvs[ 3 ] );
+
+			addUV( uvs[ 1 ] );
+			addUV( uvs[ 2 ] );
+			addUV( uvs[ 3 ] );
 
-			scope.faces.push( new Face3( a, b, d, null, null, 1 ) );
-			scope.faces.push( new Face3( b, c, d, null, null, 1 ) );
+		}
+
+		function addVertex( index ) {
+
+			indicesArray.push( verticesArray.length / 3 );
+			verticesArray.push( placeholder[ index * 3 + 0 ] );
+			verticesArray.push( placeholder[ index * 3 + 1 ] );
+			verticesArray.push( placeholder[ index * 3 + 2 ] );
+
+		}
+
+
+		function addUV( vector2 ) {
+
+			uvArray.push( vector2.x );
+			uvArray.push( vector2.y );
+
+		}
 
-			var uvs = uvgen.generateSideWallUV( scope, a, b, c, d );
+		if ( ! options.arrays ) {
 
-			scope.faceVertexUvs[ 0 ].push( [ uvs[ 0 ], uvs[ 1 ], uvs[ 3 ] ] );
-			scope.faceVertexUvs[ 0 ].push( [ uvs[ 1 ], uvs[ 2 ], uvs[ 3 ] ] );
+			this.setIndex( indicesArray );
+			this.addAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );
+			this.addAttribute( 'uv', new Float32BufferAttribute( options.arrays.uv, 2 ) );
 
 		}
 
@@ -26760,47 +26860,54 @@
 
 	ExtrudeGeometry.WorldUVGenerator = {
 
-		generateTopUV: function ( geometry, indexA, indexB, indexC ) {
+		generateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {
 
-			var vertices = geometry.vertices;
-
-			var a = vertices[ indexA ];
-			var b = vertices[ indexB ];
-			var c = vertices[ indexC ];
+			var a_x = vertices[ indexA * 3 ];
+			var a_y = vertices[ indexA * 3 + 1 ];
+			var b_x = vertices[ indexB * 3 ];
+			var b_y = vertices[ indexB * 3 + 1 ];
+			var c_x = vertices[ indexC * 3 ];
+			var c_y = vertices[ indexC * 3 + 1 ];
 
 			return [
-				new Vector2( a.x, a.y ),
-				new Vector2( b.x, b.y ),
-				new Vector2( c.x, c.y )
+				new Vector2( a_x, a_y ),
+				new Vector2( b_x, b_y ),
+				new Vector2( c_x, c_y )
 			];
 
 		},
 
-		generateSideWallUV: function ( geometry, indexA, indexB, indexC, indexD ) {
+		generateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {
 
-			var vertices = geometry.vertices;
+			var a_x = vertices[ indexA * 3 ];
+			var a_y = vertices[ indexA * 3 + 1 ];
+			var a_z = vertices[ indexA * 3 + 2 ];
+			var b_x = vertices[ indexB * 3 ];
+			var b_y = vertices[ indexB * 3 + 1 ];
+			var b_z = vertices[ indexB * 3 + 2 ];
+			var c_x = vertices[ indexC * 3 ];
+			var c_y = vertices[ indexC * 3 + 1 ];
+			var c_z = vertices[ indexC * 3 + 2 ];
+			var d_x = vertices[ indexD * 3 ];
+			var d_y = vertices[ indexD * 3 + 1 ];
+			var d_z = vertices[ indexD * 3 + 2 ];
 
-			var a = vertices[ indexA ];
-			var b = vertices[ indexB ];
-			var c = vertices[ indexC ];
-			var d = vertices[ indexD ];
-
-			if ( Math.abs( a.y - b.y ) < 0.01 ) {
+			if ( Math.abs( a_y - b_y ) < 0.01 ) {
 
 				return [
-					new Vector2( a.x, 1 - a.z ),
-					new Vector2( b.x, 1 - b.z ),
-					new Vector2( c.x, 1 - c.z ),
-					new Vector2( d.x, 1 - d.z )
+					new Vector2( a_x, 1 - a_z ),
+					new Vector2( b_x, 1 - b_z ),
+					new Vector2( c_x, 1 - c_z ),
+					new Vector2( d_x, 1 - d_z )
 				];
 
 			} else {
 
 				return [
-					new Vector2( a.y, 1 - a.z ),
-					new Vector2( b.y, 1 - b.z ),
-					new Vector2( c.y, 1 - c.z ),
-					new Vector2( d.y, 1 - d.z )
+					new Vector2( a_y, 1 - a_z ),
+					new Vector2( b_y, 1 - b_z ),
+					new Vector2( c_y, 1 - c_z ),
+					new Vector2( d_y, 1 - d_z )
 				];
 
 			}
@@ -26826,8 +26933,29 @@
 	 *  bevelSize: <float> // how far from text outline is bevel
 	 * }
 	 */
+	 
+
+	function TextGeometry(  text, parameters ) {
+
+		Geometry.call( this );
+
+		this.type = 'TextGeometry';
+
+		this.parameters = {
+			text: text,
+			parameters: parameters
+		};
+
+		this.fromBufferGeometry( new TextBufferGeometry( text, parameters ) );
+		this.mergeVertices();
+
+	}
+
+	TextGeometry.prototype = Object.create( Geometry.prototype );
+	TextGeometry.prototype.constructor = TextGeometry;
 
-	function TextGeometry( text, parameters ) {
+
+	function TextBufferGeometry( text, parameters ) {
 
 		parameters = parameters || {};
 
@@ -26852,14 +26980,14 @@
 		if ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;
 		if ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;
 
-		ExtrudeGeometry.call( this, shapes, parameters );
+		ExtrudeBufferGeometry.call( this, shapes, parameters );
 
 		this.type = 'TextGeometry';
 
 	}
 
-	TextGeometry.prototype = Object.create( ExtrudeGeometry.prototype );
-	TextGeometry.prototype.constructor = TextGeometry;
+	TextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype );
+	TextBufferGeometry.prototype.constructor = TextBufferGeometry;
 
 	/**
 	 * @author mrdoob / http://mrdoob.com/
@@ -28103,6 +28231,7 @@
 		TorusGeometry: TorusGeometry,
 		TorusBufferGeometry: TorusBufferGeometry,
 		TextGeometry: TextGeometry,
+		TextBufferGeometry: TextBufferGeometry,
 		SphereGeometry: SphereGeometry,
 		SphereBufferGeometry: SphereBufferGeometry,
 		RingGeometry: RingGeometry,
@@ -28114,6 +28243,7 @@
 		ShapeGeometry: ShapeGeometry,
 		ShapeBufferGeometry: ShapeBufferGeometry,
 		ExtrudeGeometry: ExtrudeGeometry,
+		ExtrudeBufferGeometry: ExtrudeBufferGeometry,
 		EdgesGeometry: EdgesGeometry,
 		ConeGeometry: ConeGeometry,
 		ConeBufferGeometry: ConeBufferGeometry,
@@ -33253,7 +33383,7 @@
 
 						case 'Geometry':
 
-							geometry = geometryLoader.parse( data.data, this.texturePath ).geometry;
+							geometry = geometryLoader.parse( data, this.texturePath ).geometry;
 
 							break;
 
@@ -43050,6 +43180,7 @@
 	exports.TorusGeometry = TorusGeometry;
 	exports.TorusBufferGeometry = TorusBufferGeometry;
 	exports.TextGeometry = TextGeometry;
+	exports.TextBufferGeometry = TextBufferGeometry;
 	exports.SphereGeometry = SphereGeometry;
 	exports.SphereBufferGeometry = SphereBufferGeometry;
 	exports.RingGeometry = RingGeometry;
@@ -43061,6 +43192,7 @@
 	exports.ShapeGeometry = ShapeGeometry;
 	exports.ShapeBufferGeometry = ShapeBufferGeometry;
 	exports.ExtrudeGeometry = ExtrudeGeometry;
+	exports.ExtrudeBufferGeometry = ExtrudeBufferGeometry;
 	exports.EdgesGeometry = EdgesGeometry;
 	exports.ConeGeometry = ConeGeometry;
 	exports.ConeBufferGeometry = ConeBufferGeometry;

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 330 - 329
build/three.min.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 213 - 83
build/three.module.js


Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác