Javascript 波阵面文件到WebGL阵列的转换某处出错

Javascript 波阵面文件到WebGL阵列的转换某处出错,javascript,canvas,opengl-es,webgl,Javascript,Canvas,Opengl Es,Webgl,我正在制作一个WebGL图形库,从OBJ波前创建正确的阵列时遇到了困难(这绝对是正确的)。看起来很容易修复,但找不到。想知道是否有人认识到这种类型的错误 您可以在此处查看实时样本: 以下是我怀疑导致问题的函数 function objectify (str) { var vertexRegex = /^v(?:\s(-?\d+.?(?:\d+)?))\s(-?\d+.?(?:\d+)?)\s(-?\d+.?(?:\d+)?)$/gim; var faceRegex = /^f

我正在制作一个WebGL图形库,从OBJ波前创建正确的阵列时遇到了困难(这绝对是正确的)。看起来很容易修复,但找不到。想知道是否有人认识到这种类型的错误

您可以在此处查看实时样本:

以下是我怀疑导致问题的函数

function objectify (str) {
    var vertexRegex = /^v(?:\s(-?\d+.?(?:\d+)?))\s(-?\d+.?(?:\d+)?)\s(-?\d+.?(?:\d+)?)$/gim;
    var faceRegex = /^f\s(\d+)\s(\d+)\s(\d+)$/gim;
    var commentRegex = /^\s*\#.*$/gim;
    var emptyLineRegex = /^$/gim;

    var vertices = [];
    var faces = [];

    var m, i = 0;
    while (m = faceRegex.exec(str)) {
        faces.push([m[1], m[2], m[3]]);
        i++;
    }

    var m, i = 0;
    while (m = vertexRegex.exec(str)) {
        vertices.push([m[1], m[2], m[3]]);
        i++;
    }

    return {vertices: vertices, faces: faces};
}

function facesVerticesToWebGL (obj) {
    var f = obj.faces;
    var v = obj.vertices;

    var arr = [];
    f.forEach(function (val) {
        var vArr = v[parseInt(val) - 1];
        vArr.forEach(function (val2) {
            arr.push(parseFloat(val2));
        });
    });

    return arr;
}

我不知道你的代码到底出了什么问题,但这里有一个版本,所以请看一看,看看差异在哪里。

我不知道你的代码到底出了什么问题,但这里有一个版本,所以请看一看,看看差异在哪里。

我使用三重forEach块修复了它。我的错误是
vArr
是一个数组,而parseInt只导致使用第一个值,因此我只绘制了所需顶点的三分之一。

我使用三重forEach块修复了它。我的错误是
vArr
是一个数组,而parseInt只导致使用第一个值,因此我只绘制了所需顶点的三分之一