diff --git a/js/elementMenu.js b/js/elementMenu.js index 655ba540b256e2a548d9bc8800d1018bcaf0085e..4174d599858ef0563c76193ff379595aed13ffe0 100644 --- a/js/elementMenu.js +++ b/js/elementMenu.js @@ -20,67 +20,47 @@ $(function(){ xRange.push(x); } - var localEnv = {boundingBox:boundingBox, - cubeDim:cubeDim, - modelMesh:modelMesh}; + var localEnv = {boundingBox:boundingBox,cubeDim:cubeDim,modelMesh:modelMesh}; - workers.map(xRange, fillWithElements, localEnv, incrCallback); -// for (var x=boundingBox.min.x;x<boundingBox.max.x;x+=cubeDim){ -// fillWithElements(x); -// } +// workers.map(xRange, fillWithElements, localEnv, incrCallback); + for (x=boundingBox.min.x;x<boundingBox.max.x;x+=cubeDim){ + var boxOrigins = fillWithElements(x); + _.each(boxOrigins, function(origin){ + var mesh = createCubeGeometry(cubeDim); + mesh.position.set(origin[0], origin[1], origin[2]); + mesh.updateMatrix(); + mesh.matrixAutoUpdate = false; + three.scene.add(mesh); + }); + } + three.render(); function incrCallback(result){ console.log(result); } - 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 origins = []; 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 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(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(); -// mesh.matrixAutoUpdate = false; -// meshesToAdd.push(mesh); -//// global.env.three.scene.add(mesh); -// } else if (numIntersections == 0){ -// } + if (numIntersections % 2 == 1){ + origins.push([x,y,z]); + } else if (numIntersections == 0){ + break; + } } } - return x*x; + return origins; } }); 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 );