Three.jsの例、webgl_geometry_colors.htmlを見る
faceIndices = [ 'a', 'b', 'c' ];
geometry = new THREE.IcosahedronGeometry( radius, 1 );
for ( var i = 0; i < geometry.faces.length; i++ ) {
f = geometry.faces[i];
for( var j = 0; j < 3; j++ ) {
vertexIndex = f[ faceIndices[j] ];
p = geometry.vertices[ vertexIndex ];
color = new THREE.Color( 0xffffff );
color.setHSV( ( p.y / radius + 1 ) / 2, 1.0, 1.0 );
f.vertexColors[j] = color;
}
}
Icosahedronって20面体らしいけど、例を見るともっとある感じw
とにかく半径radiusの20面体のgeometryを作ると面と頂点が確定する。
面はgeometry.facesに、頂点はgeometry.verticesに配列として入る。
さらに各facesには頂点a、b、cが入っている。
f['a'] で頂点aに対応する頂点インデックスが取得できる。
2012/07/24 22:39