Selaa lähdekoodia

Merge remote branch 'alteredq/experimental' into experimental

Mr.doob 14 vuotta sitten
vanhempi
commit
bcee3465e3
1 muutettua tiedostoa jossa 40 lisäystä ja 29 poistoa
  1. 40 29
      examples/webgl_geometry_colors.html

+ 40 - 29
examples/webgl_geometry_colors.html

@@ -91,40 +91,51 @@
 				mesh.rotation.x = - 90 * Math.PI / 180;
 				mesh.rotation.x = - 90 * Math.PI / 180;
 				scene.addObject( mesh );
 				scene.addObject( mesh );
 
 
-				var color, p, colors = [], colors2 = [], colors3 = [],
-
-					geometry = new Icosahedron( 1 ),
-					geometry2 = new THREE.Geometry(),
-					geometry3 = new THREE.Geometry();
-
-				for( var i = 0; i < geometry.vertices.length; i++ ) {
-
-					p = geometry.vertices[ i ].position;
-
-					color = new THREE.Color( 0xffffff );
-					color.setHSV( ( p.y + 1 ) / 2, 1.0, 1.0 );
-					colors[ i ] = color;
-
-					color = new THREE.Color( 0xffffff );
-					color.setHSV( 0.0, ( p.y + 1 ) / 2, 1.0 );
-					colors2[ i ] = color;
-
-					color = new THREE.Color( 0xffffff );
-					color.setHSV( 0.125 * i/geometry.vertices.length, 1.0, 1.0 );
-					colors3[ i ] = color;
-
+				var faceIndices = [ 'a', 'b', 'c', 'd' ];
+				
+				var color, f, f2, f3, p, n, vertexIndex,
+
+					geometry  = new Icosahedron( 1 ),
+					geometry2 = new Icosahedron( 1 ),
+					geometry3 = new Icosahedron( 1 );
+
+				for( var i = 0; i < geometry.faces.length; i++ ) {
+				
+					f  = geometry.faces[ i ];
+					f2 = geometry2.faces[ i ];
+					f3 = geometry3.faces[ i ];
+					
+					n = ( f instanceof THREE.Face3 ) ? 3 : 4;
+					
+					for( var j = 0; j < n; j++ ) {
+					
+						vertexIndex = f[ faceIndices[ j ] ];
+						
+						p = geometry.vertices[ vertexIndex ].position;
+
+						color = new THREE.Color( 0xffffff );
+						color.setHSV( ( p.y + 1 ) / 2, 1.0, 1.0 );
+						
+						f.vertexColors[ j ] = color;
+
+						color = new THREE.Color( 0xffffff );
+						color.setHSV( 0.0, ( p.y + 1 ) / 2, 1.0 );
+						
+						f2.vertexColors[ j ] = color;
+
+						color = new THREE.Color( 0xffffff );
+						color.setHSV( 0.125 * vertexIndex/geometry.vertices.length, 1.0, 1.0 );
+						
+						f3.vertexColors[ j ] = color;
+
+					}
+					
 				}
 				}
 
 
-				geometry3.vertices = geometry2.vertices = geometry.vertices;
-				geometry3.faces = geometry2.faces = geometry.faces;
-
-				geometry.colors = colors;
-				geometry2.colors = colors2;
-				geometry3.colors = colors3;
 
 
 				var materials = [
 				var materials = [
 
 
-					new THREE.MeshLambertMaterial( { color: 0xffffff, shading: THREE.FlatShading, vertexColors: true } ),
+					new THREE.MeshLambertMaterial( { color: 0xffffff, shading: THREE.FlatShading, vertexColors: THREE.VertexColors } ),
 					new THREE.MeshBasicMaterial( { color: 0x000000, shading: THREE.FlatShading, wireframe: true } )
 					new THREE.MeshBasicMaterial( { color: 0x000000, shading: THREE.FlatShading, wireframe: true } )
 
 
 				];
 				];