Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用three.js+;plyloader_Javascript_Three.js_Ply File Format - Fatal编程技术网

Javascript 使用three.js+;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 ) {

我正在尝试使用three.js的plyloader加载ply文件。仅当层同时具有顶点(x y z)和面(格式:3 index0 index1 index2)时,我才成功加载层。有没有一种不用脸的方法?如何快速创建仅给定xyz点的三个.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;
                            }
                    }

            } 
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答案中的算法)从点云生成网格。仅使用点云无法显示网格。你需要面部的连通性信息,这就是这些算法所提供的。