三个js合并几何和网格



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

    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);

但是我得到了消息

DEPRECATED: GeometryUtils的.merge()已被移动到Geometry。使用几何。merge(geometry2, matrix, materialIndexOffset) instead.

当我尝试像-totalGeom.merge (cubeMesh。几何、cubeMesh.geometry.matrix);不是3,而是3。合并(totalGeom cubeMesh);我有例外。

我将如何做上面的合并?请帮助。

注意:此答案适用于three.js的旧版本。


这样做:

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

要进一步了解,请参阅THREE.Geometry.merge()的源代码。

three.js r.69

最新更新