Javascript 无法从仅具有面3的.obj重新创建四边形

Javascript 无法从仅具有面3的.obj重新创建四边形,javascript,three.js,texture-mapping,Javascript,Three.js,Texture Mapping,我制作了一个小工具,在这里我可以选择一个物体的面,并得到每个边和角的长度和角度。当更新到r67时,Three.js Face4消失了,我很难重新创建以前的版本。n=(f instanceof THREE.Face3)?3:4可以让我在脸上添加4个uv。但我现在还没有办法知道什么时候会有一个Face4,这样我就可以添加2个Face3了 下面的代码是采用obj几何图形的函数 function draw(g) { objectContainer = new THREE.Obj

我制作了一个小工具,在这里我可以选择一个物体的面,并得到每个边和角的长度和角度。当更新到r67时,Three.js Face4消失了,我很难重新创建以前的版本。n=(f instanceof THREE.Face3)?3:4可以让我在脸上添加4个uv。但我现在还没有办法知道什么时候会有一个Face4,这样我就可以添加2个Face3了

下面的代码是采用obj几何图形的函数

 function draw(g)
    {
        objectContainer = new THREE.Object3D();

        texture = THREE.ImageUtils.loadTexture('uvmap.png');
        texture.flipY = false;

        materials = [];
        materials.push(new THREE.MeshLambertMaterial({
            map: texture,
            vertexColors: THREE.VertexColors
        }));

        var faceIndices = ['a','b','c','d'];

        var color = new THREE.Color(0xffffff);
        color.setHex(0x333333);

        var uvs = [];
        uvs.push(new THREE.Vector2(0,1));
        uvs.push(new THREE.Vector2(0,0));
        uvs.push(new THREE.Vector2(1,1));
        uvs.push(new THREE.Vector2(1,0));

        for (i = 0; i < g.faces.length; i++)
        {
            face = g.faces[i];
            geo = new THREE.Geometry();
            geo.faces.push(new THREE.Face3(0,1,2));
            geo.faceVertexUvs[0] = [];
            geo.faceVertexUvs[0].push([uvs[0], uvs[1], uvs[3]]);
            geo.faces[0].materialIndex = 0;

            for (j = 0; j < 3; j++)
            {
                fi = face[faceIndices[j]];
                v = g.vertices[fi];
                geo.vertices.push(new THREE.Vector3(v.x,v.y,v.z));
                geo.faces[0].vertexColors[j] = color;
            }

            geo.computeVertexNormals(); 
            geo.computeBoundingBox();

            obj = new THREE.SceneUtils.createMultiMaterialObject(geo, materials);

            objectContainer.add(obj);
        }
        scene.add(objectContainer);
    }
功能图(g)
{
objectContainer=new THREE.Object3D();
纹理=三个.ImageUtils.loadTexture('uvmap.png');
texture.flipY=false;
材料=[];
材料。推送(新的3.5米材料)({
贴图:纹理,
顶点颜色:三。顶点颜色
}));
风险价值指数=['a'、'b'、'c'、'd'];
var color=新的三种颜色(0xffffff);
color.setHex(0x333333);
var-uvs=[];
推(新三矢量2(0,1));
推(新三矢量2(0,0));
推(新三矢量2(1,1));
推(新三矢量2(1,0));
对于(i=0;i
您应该在面3上只设置3个uv值

    /* create faces and uv's */
        if (n == 3)
        {
            g.faces.push(new THREE.Face3(0,1,2));
            g.faceVertexUvs[0].push([ uvs[0], uvs[1], uvs[2], uvs[3] ]);

        }

UV[3]不应设置

您使用的库版本已超过一年。如果您需要帮助,您应该更新到当前版本,顺便说一句,该版本不再支持
Face4
!我认为这更多的是一个数学问题,而不是受版本影响的问题。更新的代码,现在我甚至不知道如何绘制四边形纹理..+笔记本电脑在几秒钟内达到100度。