| | |
| | | this.initStats(); |
| | | this.initLight(); |
| | | this.initFloor(); |
| | | // this.initModel(); |
| | | this.initModel(); |
| | | // 取数据 |
| | | this.initStoreData(); |
| | | } |
| | | this.animate = function () { |
| | | requestAnimationFrame(this.animate.bind(this)); |
| | |
| | | this.renderer.render(this.scene, this.camera); |
| | | this.stats.end(); |
| | | this.initStoreObjects(this); |
| | | this.modelMove(); |
| | | } |
| | | this.initScene = function () { |
| | | this.scene = new THREE.Scene(); |
| | |
| | | // 纵横比aspect:全屏,使用的是浏览器的宽度/高度 |
| | | //近平面near:0.1 |
| | | //远平面视角far:10000 |
| | | this.camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 0.1, 10000); |
| | | this.camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 0.1, 50000); |
| | | /* |
| | | 设置相机位置,注意threejs中的坐标系采用的是右手坐标系 |
| | | */ |
| | |
| | | } |
| | | this.initStats = function () { |
| | | this.stats = new Stats(); |
| | | this.dom.appendChild( this.stats.dom ); |
| | | // this.dom.appendChild( this.stats.dom ); |
| | | } |
| | | this.initBackground = function () { |
| | | const cubeTextureLoader = new THREE.CubeTextureLoader(); |
| | |
| | | "posy.jpg", "negy.jpg", |
| | | "posz.jpg", "negz.jpg" |
| | | ]); |
| | | // this.scene.background = new THREE.Color( 0xf0f0f0 ); |
| | | this.scene.background = new THREE.Color( 0x17c5dc ); |
| | | } |
| | | this.removeObject = function (nameorid) { |
| | | for (let i = 0; i < this.objects.length; i++) { |
| | |
| | | helper.material.opacity = 0.25; |
| | | helper.material.transparent = true; |
| | | this.addObject( helper ); |
| | | } |
| | | this.initStoreObjects = function (object) { |
| | | if (this.firstTime === 1) { |
| | | // initStore(); |
| | | if (Store3DData !== null) { |
| | | for(let i = 0;i<Store3DData.data.length;i++){ |
| | | let optionArea = Store3DData.data[i]; |
| | | let area = new Store3DData(optionArea); |
| | | object.addObject(area); |
| | | for (let j = 0; j<optionArea.store.length;j++){ |
| | | let optionStore = optionArea[j]; |
| | | optionStore.position=CommonFunction.transPosition(optionStore.position,optionArea.position) |
| | | let store =new Store(optionStore); |
| | | object.addObject(store); |
| | | for (let k = 0; k < optionStore.groups.length;k++){ |
| | | let optionGroup = optionStore.groups[k]; |
| | | optionGroup.position |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | //显示仓库区域 |
| | | // for (let i = 0; i < Store3DData.Areas.length; i++) { |
| | | // let optionArea = Store3DData.Areas[i]; |
| | | // let area = new StoreArea(optionArea); |
| | | // object.addObject(area); |
| | | // //显示仓库 |
| | | // for (let j = 0; j < optionArea.Stores.length; j++) { |
| | | // let optionStore = optionArea.Stores[j]; |
| | | // optionStore.Position = CommonFunction.transPosition(optionStore.Position, optionArea.Position); |
| | | // let store = new Store(optionStore); |
| | | // // object.addObject(store); |
| | | // //显示每行信息 |
| | | // for (let k = 0; k < optionStore.Groups.length; k++) { |
| | | // let optionGroup = optionStore.Groups[k]; |
| | | // optionGroup.Position = CommonFunction.transPosition(optionGroup.Position, optionStore.Position); |
| | | // let shelf = new StoreShelf(optionGroup); |
| | | // let group=new StoreGroup(optionGroup,1); |
| | | // object.addObject(shelf); |
| | | // // object.addObject(group); |
| | | // //显示库位上的货物 |
| | | // for (let m = 0; m < optionGroup.Bins.length; m++) { |
| | | // let optionBin = optionGroup.Bins[m]; |
| | | // let existGoods=this.getExistedGoodType(optionBin.State); |
| | | // let storeGoods = new StoreGoods(optionGroup, optionBin); |
| | | // if(existGoods==null) { |
| | | // let goods=storeGoods.create(); |
| | | // object.addObject(goods); |
| | | // this.goodTypes.push({type: optionBin.State, object: goods}); |
| | | // } else { |
| | | // let goods= storeGoods.clone(existGoods); |
| | | // object.addObject(goods); |
| | | // } |
| | | // } |
| | | // } |
| | | // |
| | | // } |
| | | // } |
| | | this.firstTime = 0; |
| | | } |
| | | } |
| | | } |
| | | this.getExistedGoodType=function(state){ |
| | | for (let i=0;i<this.goodTypes.length;i++) { |
| | | let type=this.goodTypes[i]; |
| | | if(type.type===state) { |
| | | return type.object; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | this.initModel = function () { |
| | | let that = this; |
| | |
| | | new OBJLoader( manager ) |
| | | .setMaterials( materials ) |
| | | .setPath( '../static/model/obj/' ) |
| | | .load( 'AGV.obj', function ( object ) { |
| | | object.position.y = 0; |
| | | .load( '货叉.obj', function ( object ) { |
| | | object.position.z = -500; |
| | | object.position.x = -2060; |
| | | object.scale.set(0.025, 0.025, 0.025); |
| | | object.rotateY(- Math.PI / 2) |
| | | that.addObject( object ); |
| | | }, null, null ); |
| | | }); |
| | | }); |
| | | new MTLLoader(manager) |
| | | .setPath( '../static/model/obj/' ) |
| | | .load( '载货台.mtl', function ( materials ) { |
| | | materials.preload(); |
| | | new OBJLoader( manager ) |
| | | .setMaterials( materials ) |
| | | .setPath( '../static/model/obj/' ) |
| | | .load( '载货台.obj', function ( object ) { |
| | | object.position.z = -500; |
| | | object.position.x = -2060; |
| | | object.scale.set(0.025, 0.025, 0.025); |
| | | object.rotateY(- Math.PI / 2) |
| | | that.addObject( object ); |
| | | }, null, null ); |
| | | }); |
| | | new MTLLoader(manager) |
| | | .setPath( '../static/model/obj/' ) |
| | | .load( '堆垛机本体.mtl', function ( materials ) { |
| | | materials.preload(); |
| | | new OBJLoader( manager ) |
| | | .setMaterials( materials ) |
| | | .setPath( '../static/model/obj/' ) |
| | | .load( '堆垛机本体.obj', function ( object ) { |
| | | object.position.z = -500; |
| | | object.position.x = -2060; |
| | | object.scale.set(0.025, 0.025, 0.025); |
| | | object.rotateY(- Math.PI / 2) |
| | | that.addObject( object ); |
| | | }, null, null ); |
| | | }); |
| | | } |
| | | this.initStoreObjects = function (object) { |
| | | if (this.firstTime === 1) { |
| | | if (Store3DData !== null) { |
| | | //显示仓库区域 |
| | | for (let i = 0; i < Store3DData.Areas.length; i++) { |
| | | let optionArea = Store3DData.Areas[i]; |
| | | let area = new StoreArea(optionArea); |
| | | object.addObject(area); |
| | | //显示仓库 |
| | | for (let j = 0; j < optionArea.Stores.length; j++) { |
| | | let optionStore = optionArea.Stores[j]; |
| | | optionStore.Position = CommonFunction.transPosition(optionStore.Position, optionArea.Position); |
| | | let store = new Store(optionStore); |
| | | object.addObject(store); |
| | | //显示每行信息 |
| | | for (let k = 0; k < optionStore.Groups.length; k++) { |
| | | let optionGroup = optionStore.Groups[k]; |
| | | optionGroup.Position = CommonFunction.transPosition(optionGroup.Position, optionStore.Position); |
| | | let shelf = new StoreShelf(optionGroup); |
| | | let group=new StoreGroup(optionGroup,1); |
| | | object.addObject(shelf); |
| | | // object.addObject(group); |
| | | //显示库位上的货物 |
| | | for (let m = 0; m < optionGroup.Bins.length; m++) { |
| | | let optionBin = optionGroup.Bins[m]; |
| | | let existGoods=this.getExistedGoodType(optionBin.State); |
| | | let storeGoods = new StoreGoods(optionGroup, optionBin); |
| | | if(existGoods==null) { |
| | | let goods=storeGoods.create(); |
| | | object.addObject(goods); |
| | | this.goodTypes.push({type: optionBin.State, object: goods}); |
| | | } else { |
| | | let goods= storeGoods.clone(existGoods); |
| | | object.addObject(goods); |
| | | } |
| | | } |
| | | } |
| | | this.modelMove = function () { |
| | | |
| | | } |
| | | } |
| | | this.firstTime = 0; |
| | | } |
| | | } |
| | | } |
| | | this.getExistedGoodType=function(state){ |
| | | for (let i=0;i<this.goodTypes.length;i++) { |
| | | let type=this.goodTypes[i]; |
| | | if(type.type===state) { |
| | | return type.object; |
| | | } |
| | | } |
| | | return null; |
| | | this.initStoreData = function () { |
| | | |
| | | } |
| | | }, |