diff --git a/js/elementMenu.js b/js/elementMenu.js index 5d8ca667da4d5408bc5c6d34a3cc7c8994e151a1..655ba540b256e2a548d9bc8800d1018bcaf0085e 100644 --- a/js/elementMenu.js +++ b/js/elementMenu.js @@ -25,7 +25,9 @@ $(function(){ modelMesh:modelMesh}; workers.map(xRange, fillWithElements, localEnv, incrCallback); - +// for (var x=boundingBox.min.x;x<boundingBox.max.x;x+=cubeDim){ +// fillWithElements(x); +// } function incrCallback(result){ console.log(result); @@ -49,17 +51,20 @@ $(function(){ } function fillWithElements(x){ + console.log("here"); var meshesToAdd = []; var cubeDim = localEnv.cubeDim; var boundingBox = localEnv.boundingBox; - var modelClone = new THREE.Mesh(localEnv.modelMesh.geometry, localEnv.modelMesh.material);//had to do this for some reason +// var modelClone = new THREE.Mesh(localEnv.modelMesh.geometry, localEnv.modelMesh.material);//had to do this for some reason for (var y=boundingBox.min.y;y<boundingBox.max.y;y+=cubeDim){ for (var z=boundingBox.min.z;z<boundingBox.max.z;z+=cubeDim){ var raycaster = new THREE.Raycaster(new THREE.Vector3(x+cubeDim/2, y+cubeDim/2, z+cubeDim/2), new THREE.Vector3(0, 0, 1), 0, boundingBox.max.z-z+cubeDim/2); - var numIntersections = raycaster.intersectObject(modelClone).length; + var numIntersections = raycaster.intersectObject(modelMesh).length; // console.log(numIntersections); // if (numIntersections % 2 == 1) { +// console.log("here"); +// } // var mesh = createCubeGeometry(cubeDim); // mesh.position.set(x+cubeDim/2, y+cubeDim/2, z+cubeDim/2); // mesh.updateMatrix(); diff --git a/js/importMenu.js b/js/importMenu.js index 18a60cf636f683c776bc3fa53e918c9fde2c2ea3..c1dbc957d57a60f73f1301c3c217c724cbaee3cc 100644 --- a/js/importMenu.js +++ b/js/importMenu.js @@ -7,6 +7,7 @@ $(function(){ three = three || {}; + workers = workers || {}; modelMesh = {}; var modelScaleSlider = $('#stlModelScale'); @@ -16,6 +17,9 @@ $(function(){ loader.addEventListener( 'load', function (e) { var geometry = e.content; resetUI(); + _.each(workers.allWorkers, function(worker){ + worker.postMessage({model: JSON.stringify(e.content)}); + }); var material = new THREE.MeshLambertMaterial( { color:0xffa500, shading: THREE.FlatShading, transparent:true, opacity:0.5, side:THREE.DoubleSide} ); modelMesh = new THREE.Mesh(geometry, material); three.scene.add(modelMesh); diff --git a/js/persistentWorkers.js b/js/persistentWorkers.js index 79d805e9d6eca26006b5ce136a41b34bb6607636..31d65056e700f084664bcac535e63b6dcbda7a4f 100644 --- a/js/persistentWorkers.js +++ b/js/persistentWorkers.js @@ -104,6 +104,6 @@ function persistentWorkers(numWorkers){ return URL.createObjectURL(blob); } - return {map:map};//return all public methods and vars + return {map:map, allWorkers:allWorkers};//return all public methods and vars } \ No newline at end of file diff --git a/js/worker.js b/js/worker.js index 97fc8fd406c866d916b9ed14a5365748477c200f..ea96e3b19be56f46d1d2ac2eba765de8bda1001b 100644 --- a/js/worker.js +++ b/js/worker.js @@ -8,6 +8,7 @@ function myWorker(){ localEnv = null;//local variables passed in from outside working = false;//boolean that says whether I'm busy or not arg = null;//main data we are crunching + modelMesh = null;//hold on to this so we don't have to keep passing it in self.onmessage = function(e) { var data = e.data; @@ -23,9 +24,10 @@ function myWorker(){ // importScripts(url + 'js/element.js'); } // -// if (data.id){ -// id = data.id; -// } + if (data.model){ + var material = new THREE.MeshLambertMaterial({side:THREE.DoubleSide}); + modelMesh = new THREE.Mesh(JSON.parse(data.model), material); + } if (data.executable){