0

我正在尝试使用 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 操作应该在导入的网格文件上工作,因为它们在程序中创建的网格几何图形上工作。

请问有什么建议吗?

4

1 回答 1

2

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

于 2013-12-21T22:57:36.250 回答