|  |  | 
 |  |  | import Stats from './lib/stats.module.js'; | 
 |  |  | import {MTLLoader} from './lib/MTLLoader.js'; | 
 |  |  | import {OBJLoader} from './lib/OBJLoader.js'; | 
 |  |  | import {StoreShelf} from './object/StoreShelf.js'; | 
 |  |  | import {StoreCrn} from './object/StoreCrn.js'; | 
 |  |  |  | 
 |  |  | var APP = { | 
 |  |  |  | 
 |  |  | 
 |  |  |          this.stats.begin(); | 
 |  |  |          this.renderer.render(this.scene, this.camera); | 
 |  |  |          this.stats.end(); | 
 |  |  |          // this.queryTask(); | 
 |  |  |          this.queryCrn(); | 
 |  |  |          // this.modelMove(); | 
 |  |  |          this.crnMove(); | 
 |  |  |       } | 
 |  |  |       this.initScene = function () { | 
 |  |  | 
 |  |  |          // plane.position.y = - 200; | 
 |  |  |          // plane.receiveShadow = true; | 
 |  |  |          // this.addObject(plane); | 
 |  |  |          // | 
 |  |  |  | 
 |  |  |          // const helper = new THREE.PolarGridHelper( 2000, 100 ); | 
 |  |  |  | 
 |  |  |          const helper = new THREE.GridHelper( 8000, 300 ); | 
 |  |  |          helper.position.y = - 0; | 
 |  |  |          helper.material.opacity = 0.25; | 
 |  |  |          helper.material.transparent = true; | 
 |  |  |          this.addObject( helper ); | 
 |  |  |  | 
 |  |  |          // this.addObject(new Floor({position: {}})) | 
 |  |  |       } | 
 |  |  |       this.initStoreObjects = function (object) { | 
 |  |  |          if (this.firstTime === 1) { | 
 |  |  |             initStore(); | 
 |  |  |             if (Store3DData !== null) { | 
 |  |  |                for(var group of Store3DData.data.store.groups) { | 
 |  |  |                   let crn = new StoreCrn(group.crn, object); | 
 |  |  |                   new StoreCrn(group.crn, object); | 
 |  |  |                   for (var line of group.lines) { | 
 |  |  |                      let shelf = new StoreShelf(line); | 
 |  |  |                      object.addObject(shelf); | 
 |  |  | 
 |  |  |                      // } | 
 |  |  |  | 
 |  |  |                   } | 
 |  |  |                } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |                //显示仓库区域 | 
 |  |  |                // 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.queryTask = function () { | 
 |  |  |          if (TaskDatas !== null) { | 
 |  |  |             for (let TaskData of TaskDatas) { | 
 |  |  |                let wrkTask = getArrVal(this.wrkTasks, "wrkNo", TaskData.wrkNo); | 
 |  |  |                if (null == wrkTask) { | 
 |  |  |                   this.wrkTasks.push(TaskData); | 
 |  |  |                } | 
 |  |  |             } | 
 |  |  |          } | 
 |  |  | 
 |  |  |       } | 
 |  |  |       this.initModel = function () { | 
 |  |  |          let that = this; | 
 |  |  |          // let object; | 
 |  |  |          // const onProgress = function ( xhr ) { | 
 |  |  |          //    if ( xhr.lengthComputable ) { | 
 |  |  |          //       const percentComplete = xhr.loaded / xhr.total * 100; | 
 |  |  |          //       console.log( Math.round( percentComplete, 2 ) + '% downloaded' ); | 
 |  |  |          //    } | 
 |  |  |          // }; | 
 |  |  |          // const onError = function () { }; | 
 |  |  |          // function loadModel() { | 
 |  |  |          //    object.traverse( function ( child ) { | 
 |  |  |          //       if ( child.isMesh ) child.material.map = texture; | 
 |  |  |          //    } ); | 
 |  |  |          //    object.position.y = 195; | 
 |  |  |          //    that.addObject( object ); | 
 |  |  |          // } | 
 |  |  |          // const manager = new THREE.LoadingManager(loadModel); | 
 |  |  |          // const textureLoader = new THREE.TextureLoader( manager ); | 
 |  |  |          // const texture = textureLoader.load( '../static/model/obj/uv_grid_opengl.jpg' ); | 
 |  |  |          // const loader = new OBJLoader( manager ); | 
 |  |  |          // loader.load( '../static/model/obj/AGV.obj', function ( obj ) { | 
 |  |  |          //    object = obj; | 
 |  |  |          // }, onProgress, onError ); | 
 |  |  |          const manager = new THREE.LoadingManager(); | 
 |  |  |          // manager.addHandler( /\.dds$/i, new DDSLoader() ); | 
 |  |  |          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.position.z = 0; | 
 |  |  |                      // object.position.x = 0; | 
 |  |  |                      // object.position.y = 0; | 
 |  |  |                      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.position.z = 0; | 
 |  |  |                      // object.position.x = 0; | 
 |  |  |                      // object.position.y = 0; | 
 |  |  |                      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 = -480; | 
 |  |  |          //             object.position.x = -1735; | 
 |  |  |          //             object.scale.set(0.03, 0.03, 0.03); | 
 |  |  |          //             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 = -480; | 
 |  |  |          //             object.position.x = -1735; | 
 |  |  |          //             object.scale.set(0.03, 0.03, 0.03); | 
 |  |  |          //             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 = -480; | 
 |  |  |          //             object.position.x = -1735; | 
 |  |  |          //             // object.position.z = 0; | 
 |  |  |          //             // object.position.x = 0; | 
 |  |  |          //             // object.position.y = 0; | 
 |  |  |          //             object.scale.set(0.03, 0.03, 0.03); | 
 |  |  |          //             object.rotateY(- Math.PI / 2) | 
 |  |  |          //             that.addObject( object ); | 
 |  |  |          //          }, null, null ); | 
 |  |  |          //    }); | 
 |  |  |       } | 
 |  |  |       this.initModelMove = function () { | 
 |  |  |          console.log(this.crnTasks) | 
 |  |  | 
 |  |  |          //    this.curve = new Route(points); | 
 |  |  |          // } | 
 |  |  |  | 
 |  |  |       } | 
 |  |  |       this.modelMove = function () { | 
 |  |  |          if (this.curve) { | 
 |  |  |             this.progress += 0.001; | 
 |  |  |             if (this.progress>1.0) { | 
 |  |  |                this.curve = null; | 
 |  |  |             } else { | 
 |  |  |                let point = this.curve.getPoint(this.progress); | 
 |  |  |                if(point&&point.x){ | 
 |  |  |                   this.crnBody.position.set(point.x,point.y,point.z); | 
 |  |  |                } | 
 |  |  |             } | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |       this.crnMove = function (object) { | 
 |  |  |          for (let crnTask of this.crnTasks) { |