diff --git a/js/cam/assemblers/Assembler.js b/js/cam/assemblers/Assembler.js index 2ff0a44f5fd26977a16e18b36a9bacfec1d5ede5..b08fdab417658bbd6a052f20b15aca302d68ced4 100644 --- a/js/cam/assemblers/Assembler.js +++ b/js/cam/assemblers/Assembler.js @@ -8,17 +8,15 @@ define(['underscore', 'appState', 'lattice', 'three', 'threeModel', 'cam', 'comp function Assembler(){ - var self = this; this.stock = this._buildStock(); this._positionStockRelativeToEndEffector(this.stock); this.object3D = new THREE.Object3D(); three.sceneAdd(this.object3D); - this._buildAssemblerComponents(function(){ - self._configureAssemblerMovementDependencies(); - three.render(); - }); - + this._buildAssemblerComponents(); + this._configureAssemblerMovementDependencies(); + three.render(); + this.setVisibility(cam.isVisible()); } @@ -29,32 +27,16 @@ define(['underscore', 'appState', 'lattice', 'three', 'threeModel', 'cam', 'comp Assembler.prototype._positionStockRelativeToEndEffector = function(stock){ }; - Assembler.prototype._buildAssemblerComponents = function(callback){ - var numMeshes = this._getTotalNumMeshes(); - if (numMeshes == 0) { - callback(); - return; - } - - function allLoaded(){ - numMeshes -= 1; - return numMeshes <= 0; - } - + Assembler.prototype._buildAssemblerComponents = function(){ + var allSTLs = this._getSTLs(); var self = this; - function doAdd(geometry, name){ + _.each(allSTLs, function(geometry, name){ self[name] = new Component(geometry, assemblerMaterial); - if (allLoaded()) callback(); - } - - this._loadSTls(doAdd); - }; - - Assembler.prototype._getTotalNumMeshes = function(){ - return 0; + }); }; Assembler.prototype._configureAssemblerMovementDependencies = function(){ + //override in subclasses }; Assembler.prototype.setVisibility = function(visible){ @@ -64,12 +46,7 @@ define(['underscore', 'appState', 'lattice', 'three', 'threeModel', 'cam', 'comp }; Assembler.prototype._setTranslucent = function(){ - //todo make stock transparent - if (appState.get("currentTab") == "cam"){ - assemblerMaterial.transparent = true; - } else { - assemblerMaterial.transparent = false; - } + assemblerMaterial.transparent = (appState.get("currentTab") == "cam"); }; @@ -143,9 +120,9 @@ define(['underscore', 'appState', 'lattice', 'three', 'threeModel', 'cam', 'comp + //animation methods - - Assembler.prototype.updateCellMode = function(){ + Assembler.prototype.updateCellMode = function(){//message from cam this.stock.setMode(); }; diff --git a/js/cam/assemblers/StaplerAssembler.js b/js/cam/assemblers/StaplerAssembler.js index 70ab8dcb547595444a37d18d0ac695c5fc17d4f7..e340f95283a6144ac439d8db5ce9f7004568799c 100644 --- a/js/cam/assemblers/StaplerAssembler.js +++ b/js/cam/assemblers/StaplerAssembler.js @@ -3,7 +3,30 @@ */ -define(['underscore', 'assembler', 'stlLoader', 'gikSuperCell'], function(_, Assembler, THREE, StockClass){ +define(['underscore', 'assembler', 'stlLoader', 'gikSuperCell', + 'bin!assets/stls/stapler/frame.stl', + 'bin!assets/stls/stapler/xAxis.stl', + 'bin!assets/stls/stapler/yAxis.stl', + 'bin!assets/stls/stapler/zAxis.stl', + 'bin!assets/stls/stapler/substrate.stl'], + function(_, Assembler, THREE, StockClass, frame, xAxis, yAxis, zAxis, substrate){ + + function geometryPreProcess(geometry){ + geometry.applyMatrix(new THREE.Matrix4().makeTranslation(-4.0757, -4.3432, -6.2154)); + geometry.applyMatrix(new THREE.Matrix4().makeRotationX(Math.PI/2)); + + var unitScale = 20; + geometry.applyMatrix(new THREE.Matrix4().makeScale(unitScale, unitScale, unitScale)); + geometry.applyMatrix(new THREE.Matrix4().makeTranslation(-21, -0.63, 0)); + return geometry; + } + + var loader = new THREE.STLLoader(); + var _frameGeo = geometryPreProcess(loader.parse(frame)); + var _xAxisGeo = geometryPreProcess(loader.parse(xAxis)); + var _yAxisGeo = geometryPreProcess(loader.parse(yAxis)); + var _zAxisGeo = geometryPreProcess(loader.parse(zAxis)); + var _substrateGeo = geometryPreProcess(loader.parse(substrate)); function StaplerAssembler(){ this.stockAttachedToEndEffector = true;//no need for "stock position" @@ -15,7 +38,7 @@ define(['underscore', 'assembler', 'stlLoader', 'gikSuperCell'], function(_, Ass return new StockClass({}); }; - StaplerAssembler.prototype._positionStockRelativeToEndEffector = function(stock){ + StaplerAssembler.prototype._positionStockRelativeToEndEffector = function(stock){//relative position between stock and end effector var object3D = stock.getObject3D(); object3D.position.set((2.4803+0.2)*20, (-1.9471+0.36)*20, 1.7*20); }; @@ -29,44 +52,14 @@ define(['underscore', 'assembler', 'stlLoader', 'gikSuperCell'], function(_, Ass this.object3D.add(this.substrate.getObject3D()); }; - StaplerAssembler.prototype._getTotalNumMeshes = function(){ - return 5; - }; - - StaplerAssembler.prototype._loadSTls = function(doAdd){ - - function geometryScale(geometry){ - geometry.applyMatrix(new THREE.Matrix4().makeTranslation(-4.0757, -4.3432, -6.2154)); - geometry.applyMatrix(new THREE.Matrix4().makeRotationX(Math.PI/2)); - - var unitScale = 20; - geometry.applyMatrix(new THREE.Matrix4().makeScale(unitScale, unitScale, unitScale)); - geometry.applyMatrix(new THREE.Matrix4().makeTranslation(-21, -0.63, 0)); - return geometry; + StaplerAssembler.prototype._getSTLs = function(){ + return { + xAxis: _xAxisGeo, + yAxis: _yAxisGeo, + zAxis: _zAxisGeo, + frame: _frameGeo, + substrate: _substrateGeo } - - var loader = new THREE.STLLoader(); - loader.load("assets/stls/stapler/frame.stl", function(geometry){ - doAdd(geometryScale(geometry), "frame"); - }); - loader.load(this._headSTLFile(), function(geometry){ - doAdd(geometryScale(geometry), "zAxis"); - }); - loader.load("assets/stls/stapler/yAxis.stl", function(geometry){ - doAdd(geometryScale(geometry), "yAxis"); - }); - loader.load("assets/stls/stapler/xAxis.stl", function(geometry){ - doAdd(geometryScale(geometry), "xAxis"); - }); - loader.load("assets/stls/stapler/substrate.stl", function(geometry){ - // geometry.applyMatrix(new THREE.Matrix4().makeRotationY(Math.PI/2)); - // geometry.applyMatrix(new THREE.Matrix4().makeTranslation(0, 1.8545, -1.2598)); - doAdd(geometryScale(geometry), "substrate"); - }); - }; - - StaplerAssembler.prototype._headSTLFile = function(){ - return "assets/stls/stapler/zAxis.stl"; }; StaplerAssembler.prototype._moveXAxis = function(startingPos, target, axis, speed, callback){ diff --git a/js/lattice/Lattice.js b/js/lattice/Lattice.js index 06cd6f9612dedf31255c9efb45b41bf3d6d788b5..a9822cf2d8e7c3a33579ebc98fadda7738a7ebc3 100644 --- a/js/lattice/Lattice.js +++ b/js/lattice/Lattice.js @@ -13,7 +13,7 @@ define(['underscore', 'backbone', 'appState', 'globals', 'plist', 'three', 'thre units: "mm", cellType: "cube", - connectionType: "face", + connectionType: "gik", partType: null, nodes: [],