Răsfoiți Sursa

Merge remote-tracking branch 'zz85/master' into dev

Mr.doob 12 ani în urmă
părinte
comite
6490e65bf4
1 a modificat fișierele cu 57 adăugiri și 57 ștergeri
  1. 57 57
      src/extras/modifiers/SubdivisionModifier.js

+ 57 - 57
src/extras/modifiers/SubdivisionModifier.js

@@ -51,89 +51,88 @@ THREE.SubdivisionModifier.prototype.modify = function ( geometry ) {
 
 
 /// REFACTORING THIS OUT
 /// REFACTORING THIS OUT
 
 
-function orderedKey( a, b ) {
+THREE.GeometryUtils.orderedKey = function ( a, b ) {
 
 
 	return Math.min( a, b ) + "_" + Math.max( a, b );
 	return Math.min( a, b ) + "_" + Math.max( a, b );
 
 
-}
+};
 
 
-var G  = {
 
 
+// Returns a hashmap - of { edge_key: face_index }
+THREE.GeometryUtils.computeEdgeFaces = function ( geometry ) {
 
 
-	// Returns a hashmap - of { edge_key: face_index }
-	computeEdgeFaces: function ( geometry ) {
+	var i, il, v1, v2, j, k,
+		face, faceIndices, faceIndex,
+		edge,
+		hash,
+		edgeFaceMap = {};
 
 
-		var i, il, v1, v2, j, k,
-			face, faceIndices, faceIndex,
-			edge,
-			hash,
-			edgeFaceMap = {};
+	var orderedKey = THREE.GeometryUtils.orderedKey;
 
 
-		function mapEdgeHash( hash, i ) {
-			
-			if ( edgeFaceMap[ hash ] === undefined ) {
+	function mapEdgeHash( hash, i ) {
+		
+		if ( edgeFaceMap[ hash ] === undefined ) {
 
 
-				edgeFaceMap[ hash ] = [];
-				
-			}
+			edgeFaceMap[ hash ] = [];
 			
 			
-			edgeFaceMap[ hash ].push( i );
 		}
 		}
+		
+		edgeFaceMap[ hash ].push( i );
+	}
 
 
 
 
-		// construct vertex -> face map
+	// construct vertex -> face map
 
 
-		for( i = 0, il = geometry.faces.length; i < il; i ++ ) {
+	for( i = 0, il = geometry.faces.length; i < il; i ++ ) {
 
 
-			face = geometry.faces[ i ];
+		face = geometry.faces[ i ];
 
 
-			if ( face instanceof THREE.Face3 ) {
+		if ( face instanceof THREE.Face3 ) {
 
 
-				hash = orderedKey( face.a, face.b );
-				mapEdgeHash( hash, i );
+			hash = orderedKey( face.a, face.b );
+			mapEdgeHash( hash, i );
 
 
-				hash = orderedKey( face.b, face.c );
-				mapEdgeHash( hash, i );
+			hash = orderedKey( face.b, face.c );
+			mapEdgeHash( hash, i );
 
 
-				hash = orderedKey( face.c, face.a );
-				mapEdgeHash( hash, i );
+			hash = orderedKey( face.c, face.a );
+			mapEdgeHash( hash, i );
 
 
-			} else if ( face instanceof THREE.Face4 ) {
+		} else if ( face instanceof THREE.Face4 ) {
 
 
-				hash = orderedKey( face.a, face.b );
-				mapEdgeHash( hash, i );
+			hash = orderedKey( face.a, face.b );
+			mapEdgeHash( hash, i );
 
 
-				hash = orderedKey( face.b, face.c );
-				mapEdgeHash( hash, i );
+			hash = orderedKey( face.b, face.c );
+			mapEdgeHash( hash, i );
 
 
-				hash = orderedKey( face.c, face.d );
-				mapEdgeHash( hash, i );
-				
-				hash = orderedKey( face.d, face.a );
-				mapEdgeHash( hash, i );
-
-			}
+			hash = orderedKey( face.c, face.d );
+			mapEdgeHash( hash, i );
+			
+			hash = orderedKey( face.d, face.a );
+			mapEdgeHash( hash, i );
 
 
 		}
 		}
 
 
-		// extract faces
-		
-		// var edges = [];
-		// 
-		// var numOfEdges = 0;
-		// for (i in edgeFaceMap) {
-		// 	numOfEdges++;
-		// 	
-		// 	edge = edgeFaceMap[i];
-		// 	edges.push(edge);
-		// 	
-		// }
-		
-		//debug('edgeFaceMap', edgeFaceMap, 'geometry.edges',geometry.edges, 'numOfEdges', numOfEdges);
+	}
 
 
-		return edgeFaceMap;
+	// extract faces
+	
+	// var edges = [];
+	// 
+	// var numOfEdges = 0;
+	// for (i in edgeFaceMap) {
+	// 	numOfEdges++;
+	// 	
+	// 	edge = edgeFaceMap[i];
+	// 	edges.push(edge);
+	// 	
+	// }
+	
+	//debug('edgeFaceMap', edgeFaceMap, 'geometry.edges',geometry.edges, 'numOfEdges', numOfEdges);
+
+	return edgeFaceMap;
 
 
-	}
 }
 }
 
 
 /////////////////////////////
 /////////////////////////////
@@ -151,6 +150,8 @@ THREE.SubdivisionModifier.prototype.smooth = function ( oldGeometry ) {
 	}
 	}
 	
 	
 	var scope = this;
 	var scope = this;
+	var orderedKey = THREE.GeometryUtils.orderedKey;
+	var computeEdgeFaces = THREE.GeometryUtils.computeEdgeFaces;
 
 
 	function assert() {
 	function assert() {
 		if (scope.debug && console && console.assert) console.assert.apply(console, arguments);
 		if (scope.debug && console && console.assert) console.assert.apply(console, arguments);
@@ -344,7 +345,7 @@ THREE.SubdivisionModifier.prototype.smooth = function ( oldGeometry ) {
 	//	For each edge, add an edge point.
 	//	For each edge, add an edge point.
 	//	Set each edge point to be the average of the two neighbouring face points and its two original endpoints.
 	//	Set each edge point to be the average of the two neighbouring face points and its two original endpoints.
 	
 	
-	var edgeFaceMap = G.computeEdgeFaces ( oldGeometry ); // Edge Hash -> Faces Index  eg { edge_key: [face_index, face_index2 ]}
+	var edgeFaceMap = computeEdgeFaces ( oldGeometry ); // Edge Hash -> Faces Index  eg { edge_key: [face_index, face_index2 ]}
 	var edge, faceIndexA, faceIndexB, avg;
 	var edge, faceIndexA, faceIndexB, avg;
 	
 	
 	// debug('edgeFaceMap', edgeFaceMap);
 	// debug('edgeFaceMap', edgeFaceMap);
@@ -485,7 +486,6 @@ THREE.SubdivisionModifier.prototype.smooth = function ( oldGeometry ) {
 	// Step 3
 	// Step 3
 	//	For each face point, add an edge for every edge of the face, 
 	//	For each face point, add an edge for every edge of the face, 
 	//	connecting the face point to each edge point for the face.
 	//	connecting the face point to each edge point for the face.
-	debugCoreStuff();
 	
 	
 	var facePt, currentVerticeIndex;
 	var facePt, currentVerticeIndex;