我试图使用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操作应该在导入的网格文件上工作,因为它们在程序中创建的网格几何图形上工作。
有什么建议吗?
发布于 2013-12-21 22:57:36
好吧,我自己想出答案。对于任何使用three.js的初学者来说,理解UVs纹理映射的概念是很重要的。看这里,http://wiki.blender.org/index.php/Doc:2.6/Manual/Textures/Mapping/UV。现在,没有紫外线的配合。在STL文件中可用,因此许多three.js函数无法按需要工作。我发现克服这个问题的一种方法是在搅拌器中导入STL文件并执行UV映射,然后将几何文件导出为JSON对象(您还需要安装带有搅拌器的three.js导出程序)。然后,可以使用three.js对JSON几何图形执行布尔操作。
https://stackoverflow.com/questions/20602045
复制相似问题