Javascript 使用three.js+;plyloader
我正在尝试使用three.js的plyloader加载ply文件。仅当层同时具有顶点(x y z)和面(格式:3 index0 index1 index2)时,我才成功加载层。有没有一种不用脸的方法?如何快速创建仅给定xyz点的三个.js面?我的原始文件包含xyz坐标。我使用CloudCompare生成网格并将其保存为具有xyz点和面的ply文件。谢谢 此代码来自plyloader:Javascript 使用three.js+;plyloader,javascript,three.js,ply-file-format,Javascript,Three.js,Ply File Format,我正在尝试使用three.js的plyloader加载ply文件。仅当层同时具有顶点(x y z)和面(格式:3 index0 index1 index2)时,我才成功加载层。有没有一种不用脸的方法?如何快速创建仅给定xyz点的三个.js面?我的原始文件包含xyz坐标。我使用CloudCompare生成网格并将其保存为具有xyz点和面的ply文件。谢谢 此代码来自plyloader: if ( vertexCount != 0 && faceCount != 0 ) {
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;
}
}
}
if(vertexCount!=0&&faceCount!=0){
//顶点
//假设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;
对于(变量i=0;i
如果缺少人脸数据,可以使用CloudCompare生成,CloudCompare就是其中之一。你说的“使用没有脸的plyloader”是什么意思?你想显示什么,点?我明白了。谢谢你的建议。:)我试图通过使用three.js和ply数据集(xyz坐标)创建一个快速原型。plyloader是我通过CloudCompare生成面网格后发现的一种帮助我的方法。我不想使用CloudCompare生成网格。我想跳过这一步。我想显示点和网格;最终纹理网格(可能过于雄心勃勃?)。是否有其他方法可以帮助我,或者我必须使用不同的算法(如Delaunay)手动生成网格?我也听说过marching cube和poisson。是的,你可以使用你建议的任何算法(加上上面stackoverfloaw答案中的算法)从点云生成网格。仅使用点云无法显示网格。你需要面部的连通性信息,这就是这些算法所提供的。