2013-12-16 7 views
0

Я пытаюсь выполнить логическую операцию в импортированном файле сетки STL с помощью функции ThreeCSG.js. Вот код ..Работа с CSG с STLLoader

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 и импортирую файл STL с помощью STLLoader.js.

Я только что начал изучать Three.js и не совсем уверен, поддерживаются ли импортированные файлы сетки ThreeCSG.js. Тем не менее, в результате операции CSG должны работать с импортированными файлами сетки, поскольку они работают с геометриями сетки, создаваемыми в программе.

Любые предложения, пожалуйста?

ответ

2

ОК выяснил ответ сам. Для любого, кто является новичком с three.js, важно понять концепцию картирования текстур UVs. См. Здесь http://wiki.blender.org/index.php/Doc:2.6/Manual/Textures/Mapping/UV. Теперь нет УФ-коорд. доступный в файлах STL, поэтому многие из функций three.js не работают по желанию. Один из способов, который я нашел, чтобы преодолеть эту проблему, заключался в том, чтобы импортировать файлы STL в блендере и выполнить UV-сопоставление, а затем экспортировать файлы геометрии в виде объекта JSON (вам также потребуется установить экспортер three.js с блендером). Затем вы можете выполнять логические операции над геометриями JSON с помощью three.js