three.jsのplyloaderを使ってplyファイルを読み込もうとしています。頂点 (xyz) と面 (形式: 3 インデックス 0 インデックス 1 インデックス 2) の両方がある場合にのみ、プライのロードに成功しました。顔なしで使用する方法はありますか?xyz ポイントのみを指定して、three.js で顔を作成する簡単な方法についてのアイデアはありますか? 元のファイルには xyz 座標が含まれています。CloudCompare を使用してメッシュを生成し、xyz ポイントと面を持つ ply ファイルとして保存しました。ありがとう。
このコードはplyloaderからのものです:
if ( vertexCount != 0 && faceCount != 0 ) {
// Vertex
// assume x y z
var patternVertex = /([-+]?[0-9]+\.?[0-9]*([eE][-+]?[0-9]+)?)+[\s]+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)+[\s]+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)+/g;
for ( var i = 0; i < vertexCount; i++) {
if ( ( result = patternVertex.exec( body ) ) != null ) {
geometry.vertices.push( new THREE.Vector3( parseFloat( result[ 1 ] ), parseFloat( result[ 3 ] ), parseFloat( result[ 5 ] ) ) );
} else {
console.error('Vertex error: vertex count mismatch.');
return geometry;
}
}
// Face
// assume 3 index0 index1 index2
var patternFace = /3[\s]+([-+]?[0-9]+)[\s]+([-+]?[0-9]+)[\s]+([-+]?[0-9]+)/g;
for (var i = 0; i < faceCount; i++) {
if ( ( result = patternFace.exec( body ) ) != null ) {
geometry.faces.push( new THREE.Face3( parseInt( result[ 1 ] ), parseInt( result[ 2 ] ), parseInt( result[ 3 ] ) ) );
} else {
console.error('Face error: vertex count mismatch.');
return geometry;
}
}
}