diff --git a/js/elementMenu.js b/js/elementMenu.js index 571878e9fe572f7fb0800f5f1f4d68bd26ead93f..2c1c12f9e0b345c6aacfb16a25d9efc5ea06cc58 100644 --- a/js/elementMenu.js +++ b/js/elementMenu.js @@ -2,7 +2,7 @@ * Created by aghassaei on 1/8/15. */ -var Parallel = Parallel || {}; +Parallel = Parallel || {}; $(function(){ @@ -16,42 +16,65 @@ $(function(){ var boundingBox = new THREE.Box3(); boundingBox.setFromObject(modelMesh); -// var xRange = []; -// for (var x=boundingBox.min.x;x<boundingBox.max.x;x+=cubeDim){ -// xRange.push(x); -// } -// -// var threads = new Parallel(xRange, {env:{boundingBox:boundingBox, three:three, cubeDim:cubeDim, modelMesh:modelMesh}}).require( -// {fn:THREE.Vector3,name:'Vector3'}, {fn:THREE.Raycaster,name:'Raycaster'}, {fn:THREE.Ray,name:'Ray'}, -// createCubeGeometry, {fn:THREE.BoxGeometry,name:'BoxGeometry'}, {fn:THREE.MeshLambertMaterial,name:'MeshLambertMaterial'}, -// {fn:THREE.Geometry,name:'Geometry'} -// ); -// threads.map(fillWithElements).then(three.render); -// -// function fillWithElements(x){ -// var cubeDim = global.env.cubeDim; - + var xRange = []; for (var x=boundingBox.min.x;x<boundingBox.max.x;x+=cubeDim){ + xRange.push(x); + } + + workers.options.env = {boundingBox:boundingBox, + three:three, + cubeDim:cubeDim, + modelMesh:modelMesh}; + workers.data = xRange; + + workers.map(fillWithElements).then(addToScene);//.reduce(merge). + + function merge(meshes){ + var allMeshes = meshes[1]; + for (var i=2;i<meshes.length;i++){ + allMeshes.concat(meshes[i]); + } + return allMeshes; + } + + function addToScene(arguments){ +// console.log("amanda"); +// console.log(arguments.length); +// _.each(arguments, function(mesh){ +// three.scene.add(mesh); +// }); + three.render(); + } + + function fillWithElements(x){ + console.log("here"); + var meshesToAdd = []; + var cubeDim = global.env.cubeDim; + var boundingBox = global.env.boundingBox; + var clone = new THREE.Mesh(global.env.modelMesh.geometry, global.env.modelMesh.material);//this sucks, but modelMesh is missing properties for now for (var y=boundingBox.min.y;y<boundingBox.max.y;y+=cubeDim){ // if () 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(modelMesh).length; + var numIntersections = raycaster.intersectObject(clone).length; if (numIntersections % 2 == 1) { var mesh = createCubeGeometry(cubeDim); mesh.position.set(x+cubeDim/2, y+cubeDim/2, z+cubeDim/2); mesh.updateMatrix(); mesh.matrixAutoUpdate = false; - three.scene.add(mesh); + meshesToAdd.push(mesh); + global.env.three.scene.add(mesh); } else if (numIntersections == 0){ } } } + return meshesToAdd; } }); function createCubeGeometry(size){ + console.log(cubeGeo); var geometry = new THREE.BoxGeometry(size, size, size); var material = new THREE.MeshLambertMaterial( { color:0xffffff} ); return new THREE.Mesh( geometry, material ); diff --git a/js/main.js b/js/main.js index f01950f830629fb7f363bcbbe96521c88608be29..d71f8169866f6033265d707445a0b35378d938a8 100644 --- a/js/main.js +++ b/js/main.js @@ -2,12 +2,11 @@ * Created by aghassaei on 1/7/15. */ -var Parallel = Parallel || {}; - $(function(){ three = Three(); setupNavBar(); + workers = makeWorkers(); }); diff --git a/js/workers.js b/js/persistantWorkers.js similarity index 75% rename from js/workers.js rename to js/persistantWorkers.js index b3cbded3267724e92ebf82251d6bc922131fb222..046acac5b4b41ce69f0686dd8b0910a80495d008 100644 --- a/js/workers.js +++ b/js/persistantWorkers.js @@ -1,8 +1,13 @@ //global workers so they do not have to be reinstantiated + +function browserSupportsWebWorkers() { + return typeof window.Worker === "function"; +} + function makeWorkers(){ - function makeURL(myWorkerFunction) { + function makeBlobURL(myWorkerFunction) { var URL = window.URL || window.webkitURL; var blob = new Blob([myWorkerFunction.toString()], { type: "text/javascript" }); return URL.createObjectURL(blob); @@ -23,5 +28,5 @@ function makeWorkers(){ }; // } } - return new Parallel(null, {env:null, evalPath: "dependencies/eval.js"}).require('three.js'); +// return new Parallel(null, {env:null, evalPath: "dependencies/eval.js"}).require('three.js'); } \ No newline at end of file diff --git a/js/worker.js b/js/worker.js new file mode 100644 index 0000000000000000000000000000000000000000..211e20ce47c887d9cff829fbfcf6d1360167f367 --- /dev/null +++ b/js/worker.js @@ -0,0 +1,21 @@ +/** + * Created by aghassaei on 1/12/15. + */ + + +self.onmessage = function(e) { + var data = e.data; + + if (data.url) { + var url = data.url.href; + var index = url.indexOf('main.html');//url of landing page + if (index != -1) { + url = url.substring(0, index); + } + //load all scripts + importScripts(url + 'dependencies/three.js'); +// importScripts(url + 'js/element.js'); + } + + +}; \ No newline at end of file diff --git a/main.html b/main.html index ef4d14b71dff62d91d6e2a32d06dc317f5ecdb93..7f4a69a47a582137c775f9910ad8b763ed10b944 100644 --- a/main.html +++ b/main.html @@ -35,6 +35,7 @@ <!--multi-threading--> <script src="dependencies/parallel.js"></script> + <script src="js/persistantWorkers.js"></script><!--global workers--> <script src="js/main.js"></script> <script src="dependencies/loaders/STLLoader.js"></script> @@ -57,7 +58,7 @@ <ul class="nav navbar-nav navbar-left"> <li><a data-menu-id="importGeometry" class="menuHoverControls" href="#">Import</a></li> <li><a data-menu-id="element" class="menuHoverControls" href="#">Element</a></li> - <li><a data-menu-id="about" class="menuHoverControls" href="#">About</a></li> + <!--<li><a data-menu-id="controls1Menu" class="menuHoverControls" href="#">Controls1</a></li>--> <!--<li><a data-menu-id="controls2Menu" class="menuHoverControls" href="#">Controls2</a></li>--> <!--<li><a data-menu-id="controls3Menu" class="menuHoverControls" href="#">Glyphs</a></li>--> @@ -74,6 +75,7 @@ <li><a href="#">Separated link</a></li> </ul> </li> + <li><a data-menu-id="about" class="menuHoverControls" href="#">About</a></li> </ul> <ul class="nav navbar-nav navbar-right"> <li><a id="clearAll" class="menuHoverControls" href="#">Clear All</a></li>