2

我正在尝试使用 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;
                            }
                    }

            } 
4

0 回答 0