CSG操作不使用THREE.js使用objloader

时间:2016-03-22 23:50:55

标签: javascript three.js threecsg

我正在尝试使用THREE.js和ThreeCSG对从objloader导入的2个网格文件执行减法,但它无法正常工作。 这是一段代码:

loader= new THREE.OBJLoader ();
loader.load ('../obj/obj/obj/tool.obj', function (object) {
    object.traverse( function ( child ) {
        if ( child instanceof THREE.Mesh ) {
            child.material = new THREE.MeshLambertMaterial({   color: 0xBBAA84, });
            child.geometry.computeFaceNormals();
            child.geometry.computeVertexNormals();

            //convert to CSG
            toolCSG= new ThreeBSP(child.geometry);
        }
    });
    //scene.add (object);

    //second object
    loader= new THREE.OBJLoader ();
    loader.load ('../obj/obj/tool2.obj', function (object) {
        object.traverse (function (mesh) {
            if (mesh instanceof THREE.Mesh) {
                mesh.material = new THREE.MeshPhongMaterial ({ color : 0xBBAA84});
                mesh.geometry.computeFaceNormals();
                mesh.geometry.computeVertexNormals();

                //convert to CSG
                tool2CSG= new ThreeBSP(mesh.geometry);

            } 
        });

        //scene.add(object);

        var subtractedtool = tool2CSG.subtract(toolCSG);
        subtractedBone.geomerty.computeFaceNormals();
        var materialCSG = new THREE.MeshPhongMaterial( { color: 0x42AFD4  } );
        var result = subtractedtool.toMesh(materialCSG);*/
        scene.add(result);
    });
});         

但是布尔操作不起作用。此外,减法和工具CSG和tool2CSG未定义。 我使用STLloader或使用OBJloader的this检查了stackoverflow this中的类似示例。它可以很好地处理通用对象,例如立方体和球体,但不能处理加载的复合对象。 此外,我应该提到我正在使用r.72和objloader版本68,因为我需要从加载器而不是缓冲区几何中获取几何。 如果你能帮我解决这个问题,我将非常感激。

r.72

0 个答案:

没有答案