带有STLLoader的CSG操作

CSG operation with STLLoader

本文关键字:操作 CSG STLLoader 带有      更新时间:2023-09-26

我正在尝试使用ThreeCSG.js对导入的STL网格文件执行布尔运算。这是代码。。

function openFile() {
filePath = document.form.selectedFile.value;
var loader = new THREE.STLLoader();
loader.addEventListener('load', function(event) {
//A simple cube geometry imported from STL file.
var geometry = event.content;
var cube_mesh = new THREE.Mesh(geometry);
cube_mesh.position.x = -7;
var cube_bsp = new ThreeBSP(cube_mesh);
//Create a sphere
var sphere_geometry = new THREE.SphereGeometry(1.8, 32, 32);
var sphere_mesh = new THREE.Mesh(sphere_geometry);
sphere_mesh.position.x = -7;
var sphere_bsp = new ThreeBSP(sphere_mesh);
//subtract cube from sphere
var subtract_bsp = cube_bsp.subtract(sphere_bsp);
var result = subtract_bsp.toMesh(new THREE.MeshLambertMaterial({shading:  THREE.SmoothShading, map: THREE.ImageUtils.loadTexture('texture.png')}));
result.geometry.computeVertexNormals();
scene.add(result);
});
loader.load(filePath);
}

但它似乎不起作用。我使用的是three.js R62,并使用STLLoader.js.导入STL文件

我刚开始学习Three.js,不完全确定导入的网格文件是否受ThreeCSG.js支持。然而,在大多数情况下,CSG操作应该在导入的网格中工作,就像它们在程序中创建的网格几何图形一样。

有什么建议吗?

OK自己找到了答案。对于任何初学three.js的人来说,了解UV纹理映射的概念是很重要的。请参阅此处http://wiki.blender.org/index.php/Doc:2.6/Manual/Textures/Mapping/UV.现在,没有紫外线单词。STL文件中可用,因此许多三个.js函数无法按预期工作。我发现解决这个问题的一种方法是在blender中导入STL文件并执行UV映射,然后将几何文件导出为JSON对象(您还需要使用blender安装一个three.js导出器)。然后,您可以使用three.js 对JSON几何体执行布尔运算