【问题标题】:CSG operation with STLLoader使用 STLLoader 进行 CSG 操作
【发布时间】:2015-03-13 04:10:56
【问题描述】:

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

有什么建议吗?

【问题讨论】:

    标签: javascript three.js stl-format


    【解决方案1】:

    好的,我自己想出了答案。对于 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 几何图形执行布尔运算

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-03
      • 2013-08-13
      • 2017-06-16
      • 1970-01-01
      • 2016-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多