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
タグ