javascript 三个js合并几何和网格

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/24422289/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-28 02:46:09  来源:igfitidea点击:

Three js merging Geometries and Mesh

javascriptthree.js

提问by Abhishek

Three js ver67 Current code something like this -

三个 js ver67 当前代码是这样的 -

    var materials = [];
    var totalGeom = new THREE.Geometry();
    var cubeMat;
    for (var i = 0; i < dataSetArray.length; i++) {
        var ptColor = dataSetArray[i].color;
        var value = dataSetArray[i].value;
        var position = latLongToVector3(dataSetArray[i].y, dataSetArray[i].x, 600, 1);

        var cubeGeom = new THREE.BoxGeometry(5, 5, 1 + value / 20);


        cubeMat = new THREE.MeshLambertMaterial({
            color: new THREE.Color(ptColor),
            opacity: 0.6
        });


        materials.push(cubeMat);
        // cubeGeom.updateMatrix();

        var cubeMesh = new THREE.Mesh(cubeGeom, cubeMat);
        cubeMesh.position = position;
        cubeMesh.lookAt(scene.position);

        // totalGeom.merge(cubeMesh.geometry, cubeMesh.geometry.matrix);
        //THREE.GeometryUtils.setMaterialIndex(cubeMesh.geometry, i);
        THREE.GeometryUtils.merge(totalGeom, cubeMesh);
    }


    var total = new THREE.Mesh(totalGeom, new THREE.MeshFaceMaterial(materials));
    scene.add(total);

However I get the message

但是我收到消息

DEPRECATED: GeometryUtils's .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.

已弃用:GeometryUtils 的 .merge() 已移至 Geometry。使用 geometry.merge( geometry2, matrix, materialIndexOffset ) 代替。

in chrome dev tools.

在 chrome 开发工具中。

When I try something like - totalGeom.merge(cubeMesh.geometry, cubeMesh.geometry.matrix); instead of THREE.GeometryUtils.merge(totalGeom, cubeMesh); I get exceptions.

当我尝试类似 - totalGeom.merge(cubeMesh.geometry, cubeMesh.geometry.matrix); 而不是 THREE.GeometryUtils.merge(totalGeom, cubeMesh); 我得到例外。

How will I do the above merge? Please help.

我将如何进行上述合并?请帮忙。

回答by WestLangley

Do this:

做这个:

cubeMesh.updateMatrix();
totalGeom.merge( cubeMesh.geometry, cubeMesh.matrix );

For a further understanding, see the source code of THREE.Geometry.merge().

更深入的理解,请参见 的源代码THREE.Geometry.merge()

three.js r.69

三.js r.69