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 将网格与materials Three.js合并_Javascript_Three.js - Fatal编程技术网

Javascript 将网格与materials Three.js合并

Javascript 将网格与materials Three.js合并,javascript,three.js,Javascript,Three.js,我正在尝试在Three.js中合并网格。网格是从从Blender导出的COLLADA模型加载的。以下是未合并而加载的模型: 普通模型: 当我尝试合并网格时,我得到的是: 合并模型: 我想我在材质UV方面遇到了问题,因为我收到了288条警告消息,如: THREE.DirectGeometry.fromGeometry(): Undefined vertexUv 99945 电话号码从99945到100232 以下是我用于合并网格的代码: loader.load(modelPath,

我正在尝试在Three.js中合并网格。网格是从从Blender导出的COLLADA模型加载的。以下是未合并而加载的模型:

普通模型:

当我尝试合并网格时,我得到的是: 合并模型:

我想我在材质UV方面遇到了问题,因为我收到了288条警告消息,如:

THREE.DirectGeometry.fromGeometry(): Undefined vertexUv 99945
电话号码从99945到100232

以下是我用于合并网格的代码:

    loader.load(modelPath, function(model)
    {
        var modelShape = model.scene;

        var materialsArray = new Array();
        var mergedGeometry = new THREE.Geometry();
        var materialIndex = 0;

        modelShape.traverse(function(mesh)
        {
            if(mesh instanceof THREE.Mesh && typeof mesh.material !== "undefined")
            {
                var modelGeometry = new THREE.Geometry().fromBufferGeometry(mesh.geometry);
                modelGeometry.mergeVertices();

                mergedGeometry.merge(modelGeometry, mesh.matrix, materialIndex);
                materialsArray[materialIndex] = mesh.material;

                materialIndex++;
            }
        });

        mergedGeometry.mergeVertices();
        mergedGeometry.rotateX(-90 * Math.PI / 180);

        var modifier = new THREE.SubdivisionModifier(subdivisions);
        var geometrySmoothed = mergedGeometry;

        mergedGeometry.groupsNeedUpdate = true;
        mergedGeometry.uvsNeedUpdate = true;

        var mesh = new THREE.Mesh(geometrySmoothed, materialsArray);

        this.models.push(mesh);
    }

那么,有人知道错误在哪里吗?从Blender导出可能是错误的吗?

在导出之前,在Blender(“加入”)中合并此项可能会更容易,这是可能的吗?如果去掉最后几个步骤-
.mergeVertices
SubdivisionModifier
,效果会更好吗?“可能也有帮助。”DonMcCurdy我试着在Blender中合并,但我有很多网格的模型,这花费了我太多的时间。我使用
SubdivisionModifier
放置代码,但是您可以看到我不使用它(但我会使用),如果我删除
。mergeVertices
没有任何更改。无论如何,我会看一看BufferGeometryUtils,谢谢我发现我正在合并一些带有UV的网格和其他没有UV的网格,所以我可能必须将UV添加到第二个网格中。。。