From 703b831d85a1fc921a6da6728b8d4e1eb9597b4e Mon Sep 17 00:00:00 2001 From: Amanda Ghassaei <amandaghassaei@gmail.com> Date: Thu, 26 Feb 2015 03:09:47 -0500 Subject: [PATCH] last few edits --- js/fea/DmaCell.js | 9 +++---- js/models/BasePlane.js | 50 -------------------------------------- js/models/Lattice.js | 8 +++--- js/models/ThreeModel.js | 5 +++- js/threeViews/ThreeView.js | 2 +- 5 files changed, 14 insertions(+), 60 deletions(-) diff --git a/js/fea/DmaCell.js b/js/fea/DmaCell.js index 82d5e088..9fc15150 100644 --- a/js/fea/DmaCell.js +++ b/js/fea/DmaCell.js @@ -254,8 +254,7 @@ DMACell.prototype.destroy = function(){ var unitCellGeo = new THREE.BoxGeometry(1,1,1); - var cellMaterials = [new THREE.MeshNormalMaterial(), - new THREE.MeshBasicMaterial({color:0x000000, wireframe:true})]; + var cellMaterials = [new THREE.MeshNormalMaterial()];//new THREE.MeshBasicMaterial({color:0x000000, wireframe:true}) function DMACubeCell(indices, scale, lattice){ @@ -274,9 +273,9 @@ DMACell.prototype.destroy = function(){ DMACubeCell.prototype._buildCellMesh = function(){//abstract mesh representation of cell var mesh = new THREE.SceneUtils.createMultiMaterialObject(unitCellGeo, cellMaterials); mesh.myParent = this;//we need a reference to this instance from the mesh for intersection selection stuff -// var wireframe = new THREE.BoxHelper(mesh); -// wireframe.material.color.set(0x000000); -// mesh.add(wireframe); + var wireframe = new THREE.BoxHelper(mesh.children[0]); + wireframe.material.color.set(0x000000); + mesh.children.push(wireframe); dmaGlobals.three.sceneAdd(mesh, "cell"); return mesh; }; diff --git a/js/models/BasePlane.js b/js/models/BasePlane.js index a41e3462..d570835b 100644 --- a/js/models/BasePlane.js +++ b/js/models/BasePlane.js @@ -196,56 +196,6 @@ OctaBasePlane = BasePlane.extend({ SquareBasePlane = BasePlane.extend({ - _makeBasePlaneMesh: function(){ - - var dimX = this.get("dimX"); - var dimY = this.get("dimY"); - - var geometry = new THREE.Geometry(); - - for ( var i = - dimX; i <= dimX; i += 1 ) { - geometry.vertices.push( new THREE.Vector3(-dimX, i, 0)); - geometry.vertices.push( new THREE.Vector3(dimX, i, 0)); - geometry.vertices.push( new THREE.Vector3(i, -dimX, 0)); - geometry.vertices.push( new THREE.Vector3(i, dimX, 0)); - - } - - var planeGeometry = new THREE.Geometry(); - planeGeometry.vertices.push( new THREE.Vector3(-dimX, -dimX, 0)); - planeGeometry.vertices.push( new THREE.Vector3(dimX, -dimX, 0)); - planeGeometry.vertices.push( new THREE.Vector3(-dimX, dimX, 0)); - planeGeometry.vertices.push( new THREE.Vector3(dimX, dimX, 0)); - planeGeometry.faces.push(new THREE.Face3(0, 1, 3)); - planeGeometry.faces.push(new THREE.Face3(0, 3, 2)); - planeGeometry.computeFaceNormals(); - - var mesh = new THREE.Mesh(planeGeometry, new THREE.MeshBasicMaterial({color:0x000000, transparent:true, opacity:0.0, side:THREE.DoubleSide})); - mesh.myParent = this;//reference used for intersection highlighting - return [mesh, new THREE.Line(geometry, new THREE.LineBasicMaterial({color:0x000000, transparent:true, linewidth:2, opacity:this.get("material").opacity}), THREE.LinePieces)]; - }, - - _renderZIndexChange: function(){ - var zIndex = this.get("zIndex"); - var zScale = dmaGlobals.lattice.zScale(); - _.each(this.get("mesh"), function(mesh){ - mesh.position.set(0, 0, zIndex*zScale); - }); - dmaGlobals.three.render(); - }, - - calcHighlighterPosition: function(face, position){ - var index = dmaGlobals.lattice.getIndexForPosition(position); - index.z = this.get("zIndex") - 1;//pretend we're on the top of the cell underneath the baseplane - var position = dmaGlobals.lattice.getPositionForIndex(index); - position.z += dmaGlobals.lattice.zScale()/2; - return {index: index, direction: new THREE.Vector3(0,0,1), position:position}; - } - -}); - -OctaVertexBasePlane = BasePlane.extend({ - _makeBasePlaneMesh: function(){ var scale = dmaGlobals.lattice.xScale(1); diff --git a/js/models/Lattice.js b/js/models/Lattice.js index 40cdd47e..13237c9a 100644 --- a/js/models/Lattice.js +++ b/js/models/Lattice.js @@ -326,9 +326,11 @@ Lattice = Backbone.Model.extend({ this._iterCells(this.get("cells"), function(cell){ if (cell) cell.updateForScale(scale); }); - this._iterCells(this.get("inverseCells"), function(cell){ - if (cell) cell.updateForScale(scale); - }); + if (this.get("shouldShowInverseCells")){ + this._iterCells(this.get("inverseCells"), function(cell){ + if (cell) cell.updateForScale(scale); + }); + } dmaGlobals.three.render(); }, diff --git a/js/models/ThreeModel.js b/js/models/ThreeModel.js index 9da34ed6..5a239c71 100644 --- a/js/models/ThreeModel.js +++ b/js/models/ThreeModel.js @@ -11,6 +11,7 @@ function ThreeModel(){ //store all meshes to highlight var cells = []; + var highlightableCells = [];//may be able to get rid of this eventually var invCells = []; var parts = []; var basePlane = []; @@ -55,6 +56,7 @@ function ThreeModel(){ if (type == "cell"){ cells.push(object); + highlightableCells.push(object.children[0]); } else if (type == "inverseCell"){ invCells.push(object); } else if (type == "part"){ @@ -73,6 +75,7 @@ function ThreeModel(){ if (type == "cell"){ cells.splice(cells.indexOf(objectToRemove), 1); + highlightableCells.splice(highlightableCells.indexOf(objectToRemove.children[0]), 1); } else if (type == "inverseCell"){ invCells.splice(invCells.indexOf(objectToRemove), 1); } else if (type == "part"){ @@ -108,7 +111,7 @@ function ThreeModel(){ // scene: scene, domElement: renderer.domElement, camera: camera, - cells: cells, + cells: highlightableCells, invCells: invCells, parts: parts, basePlane: basePlane, diff --git a/js/threeViews/ThreeView.js b/js/threeViews/ThreeView.js index a441ca83..c8d8e620 100644 --- a/js/threeViews/ThreeView.js +++ b/js/threeViews/ThreeView.js @@ -93,7 +93,7 @@ ThreeView = Backbone.View.extend({ if(this.mouseProjection.intersectObject(this.highlighter.mesh, false).length > 0) return; } - var intersections = this.mouseProjection.intersectObjects(this.model.cells.concat(this.model.basePlane), true); + var intersections = this.mouseProjection.intersectObjects(this.model.cells.concat(this.model.basePlane), false); if (intersections.length == 0) {//no intersections this.highlighter.setNothingHighlighted(); this._setNoPartIntersections(); -- GitLab