2
0
Mr.doob 9 жил өмнө
parent
commit
6b8f175dad

+ 31 - 45
examples/webgl_modifier_subdivision.html

@@ -34,7 +34,7 @@
 
 				var F = function( klass, args ) {
 
-				    return klass.apply( this, args );
+					return klass.apply( this, args );
 
 				};
 
@@ -61,7 +61,7 @@
 
 				{ type: 'BoxGeometry', args: [ 200, 200, 200, 2, 2, 2, materials ] },
 				{ type: 'TorusGeometry', args: [ 100, 60, 4, 8, Math.PI*2 ] },
-				{ type: 'TorusKnotGeometry', args: [  ], scale:0.25, meshScale:4 },
+				{ type: 'TorusKnotGeometry', args: [], scale:0.25, meshScale:4 },
 				{ type: 'SphereGeometry', args: [ 100, 3, 3 ], meshScale:2 },
 				{ type: 'IcosahedronGeometry', args: [ 100, 1 ], meshScale:2 },
 				{ type: 'CylinderGeometry', args: [ 25, 75, 200, 8, 3 ]} ,
@@ -158,10 +158,10 @@
 
 				var dropdown = '<select id="dropdown" onchange="switchGeometry(this.value)">';
 
-				for (  i = 0; i < geometriesParams.length; i ++ ) {
+				for ( var i = 0; i < geometriesParams.length; i ++ ) {
 					dropdown += '<option value="' + i + '"';
 
-					dropdown += (geometryIndex == i)  ? ' selected' : '';
+					dropdown += (geometryIndex == i) ? ' selected' : '';
 
 					dropdown += '>' + geometriesParams[i].type + '</option>';
 				}
@@ -170,27 +170,25 @@
 
 				info.innerHTML = 'Drag to spin THREE.' + params.type +
 
-				 	'<br><br>Subdivisions: '  + subdivisions +
+					'<br><br>Subdivisions: ' + subdivisions +
 					' <a href="#" onclick="nextSubdivision(1); return false;">more</a>/<a href="#" onclick="nextSubdivision(-1); return false;">less</a>' +
 					'<br>Geometry: ' + dropdown + ' <a href="#" onclick="nextGeometry();return false;">next</a>' +
 					'<br><br>Vertices count: before ' + geometry.vertices.length + ' after ' + (smooth.attributes.position.array.length/3) +
 					'<br>Face count: before ' + geometry.faces.length + ' after ' + (smooth.attributes.position.array.length / 3)
-                /* since the result is unindex'd the face count will always be directly related to the vertice count */
-				; //+ params.args;
+
 			}
 
 			function addStuff() {
 
-				if ( cube != false ) {
-				    
-					scene.remove( group );
-					scene.remove(cube);
-					scene.remove(mesh);
-					//mesh.dispose();
-					material.dispose();
+				if ( cube !== undefined ) {
+
 					geometry.dispose();
+					material.dispose();
 					smooth.dispose();
 
+					scene.remove( group );
+					scene.remove( cube );
+
 				}
 
 
@@ -209,53 +207,40 @@
 
 				}
 
-				// Cloning original geometry for debuging
+				smooth = modifier.modify( geometry );
 
-				//smooth = geometry.clone(); // removed because the BufferSubdivisionModifier doesn't modify the original object.
+				updateInfo();
 
-				// mergeVertices(); is run in the subdivision modifier 
+				var faceABCD = "abcd";
 
-				smooth = modifier.modify( geometry ); 
+				// var TypedArrayHelper = function (size, registers, register_type, array_type, unit_size, accessors)
+				var colors = new TypedArrayHelper( 0, 1, THREE.Color, Float32Array, 3, [ 'r', 'g', 'b' ] );
 
-				updateInfo();
+				for ( var i = 0; i < smooth.attributes.position.array.length / 3; i ++ ) {
 
-				var faceABCD = "abcd";
-				
-				var i;
-			//	var tmp_v = new THREE.Vector3();
-				var colors = new TypedArrayHelper(0, 1, THREE.Color, Float32Array, 3, ['r', 'g', 'b']); // var TypedArrayHelper = function (size, registers, register_type, array_type, unit_size, accessors)
-				for (i = 0; i < smooth.attributes.position.array.length / 3; i++) {
-				  //  tmp_v.x = smooth.attributes.position.array[i * 3];
-				  //  tmp_v.y = smooth.attributes.position.array[(i * 3)+1];
-				  //  tmp_v.z = smooth.attributes.position.array[(i * 3) + 2];
-				    colors.register[0].setHSL((smooth.attributes.position.array[(i * 3) + 1] / 200) + 0.5, 1, 0.5);
-				    colors.push_element(colors.register[0]);
+					var hue = ( smooth.attributes.position.array[ ( i * 3 ) + 1 ] / 200 ) + 0.5;
+					colors.register[ 0 ].setHSL( hue, 1, 0.5 );
+					colors.push_element( colors.register[ 0 ] );
 
 				}
-                colors.trim_size();
-				smooth.addAttribute('color', new THREE.BufferAttribute(colors.buffer,3));
 
+				colors.trim_size();
+				smooth.addAttribute( 'color', new THREE.BufferAttribute( colors.buffer, 3 ) );
 
 				group = new THREE.Group();
 				scene.add( group );
 
-				material = new THREE.MeshBasicMaterial( { color: 0xfefefe, wireframe: true, opacity: 0.5 } );
+				material = new THREE.MeshBasicMaterial( { color: 0xffffff, wireframe: true } );
 				mesh = new THREE.Mesh( geometry, material );
 				group.add( mesh );
 
 				var meshmaterials = [
-					new THREE.MeshPhongMaterial({ color: 0xffffff, shading: THREE.FlatShading, vertexColors: THREE.VertexColors, shininess: 0 }),
-					new THREE.MeshBasicMaterial( { color: 0x405040, wireframe: true, opacity: 0.8, transparent: true } )
+					new THREE.MeshPhongMaterial( { color: 0xffffff, shading: THREE.FlatShading, vertexColors: THREE.VertexColors } ),
+					new THREE.MeshBasicMaterial( { color: 0x000000, wireframe: true, opacity: 0.15, transparent: true } )
 				];
 
 				cube = THREE.SceneUtils.createMultiMaterialObject( smooth, meshmaterials );
-
-				var meshScale =  params.meshScale ? params.meshScale : 1;
-
-				cube.scale.x = meshScale;
-				cube.scale.y = meshScale;
-				cube.scale.z = meshScale;
-
+				cube.scale.setScalar( params.meshScale ? params.meshScale : 1 );
 				scene.add( cube );
 
 				group.scale.copy( cube.scale );
@@ -263,7 +248,7 @@
 			}
 
 			function init() {
-			    cube = false;
+
 				container = document.createElement( 'div' );
 				document.body.appendChild( container );
 
@@ -286,7 +271,7 @@
 
 				addStuff();
 
-				renderer = new THREE.WebGLRenderer( { antialias: true } ); // WebGLRenderer CanvasRenderer
+				renderer = new THREE.WebGLRenderer( { antialias: true } );
 				renderer.setClearColor( 0xf0f0f0 );
 				renderer.setPixelRatio( window.devicePixelRatio );
 				renderer.setSize( window.innerWidth, window.innerHeight );
@@ -320,8 +305,9 @@
 
 				controls.update();
 
+				stats.begin();
 				render();
-				stats.update();
+				stats.end();
 
 			}