我正在尝试使用 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);
});
});
但是布尔运算不起作用。此外,未定义减法和 toolCSG 和 tool2CSG。我使用 STLloader 或使用 OBJloader检查了 stackoverflow中的类似示例。它适用于立方体和球体等通用对象,但不适用于加载的复合对象。此外,我应该提到我正在使用 r.72 和 objloader 版本 68,因为我需要从加载器而不是缓冲区几何中获取几何。如果您能帮助我解决这个问题,我将不胜感激。
r.72