我正在尝试使用 three.js 的 plyloader 加载 ply 文件。只有当它同时具有顶点(xyz)和面(格式:3 index0 index1 index2)时,我才成功加载了层。有没有办法在没有面孔的情况下使用它?关于使用仅给定 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;
}
}
}