diff --git a/examples/webgl_geometry_colors.html b/examples/webgl_geometry_colors.html index 0feefab8..758dd30b 100644 --- a/examples/webgl_geometry_colors.html +++ b/examples/webgl_geometry_colors.html @@ -91,40 +91,51 @@ mesh.rotation.x = - 90 * Math.PI / 180; scene.addObject( mesh ); - var color, p, colors = [], colors2 = [], colors3 = [], + var faceIndices = [ 'a', 'b', 'c', 'd' ]; + + var color, f, f2, f3, p, n, vertexIndex, - geometry = new Icosahedron( 1 ), - geometry2 = new THREE.Geometry(), - geometry3 = new THREE.Geometry(); + geometry = new Icosahedron( 1 ), + geometry2 = new Icosahedron( 1 ), + geometry3 = new Icosahedron( 1 ); - for( var i = 0; i < geometry.vertices.length; i++ ) { + 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; - p = geometry.vertices[ i ].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( ( 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 ); + + f2.vertexColors[ j ] = 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; + 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 = [ - 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 } ) ];