以下のような関数を使用して、面を持つ既存のジオメトリを破線のレンダリングに適したものに変換できます。THREE.Line
新しいジオメトリを使用して、有型を構築しTHREE.LinePieces
ます。
function geo2line( geo ) {
var geometry = new THREE.Geometry();
var vertices = geometry.vertices;
for ( i = 0; i < geo.faces.length; i++ ) {
var face = geo.faces[ i ];
if ( face instanceof THREE.Face3 ) {
vertices.push( geo.vertices[ face.a ].clone() );
vertices.push( geo.vertices[ face.b ].clone() );
vertices.push( geo.vertices[ face.b ].clone() );
vertices.push( geo.vertices[ face.c ].clone() );
vertices.push( geo.vertices[ face.c ].clone() );
vertices.push( geo.vertices[ face.a ].clone() );
} else if ( face instanceof THREE.Face4 ) {
vertices.push( geo.vertices[ face.a ].clone() );
vertices.push( geo.vertices[ face.b ].clone() );
vertices.push( geo.vertices[ face.b ].clone() );
vertices.push( geo.vertices[ face.c ].clone() );
vertices.push( geo.vertices[ face.c ].clone() );
vertices.push( geo.vertices[ face.d ].clone() );
vertices.push( geo.vertices[ face.d ].clone() );
vertices.push( geo.vertices[ face.a ].clone() );
}
}
geometry.computeLineDistances();
return geometry;
}
three.js r.56