From 3cb912e46af76301748b38c8f667adcaba959e8f Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@63.com> Date: 星期六, 11 十二月 2021 07:57:31 +0800 Subject: [PATCH] # --- static/js/app.js | 101 +++++++++++++------- /dev/null | 64 ------------ views/index.html | 1 static/js/object/StoreShelf.js | 129 ++++++++++--------------- 4 files changed, 116 insertions(+), 179 deletions(-) diff --git a/static/js/app.js b/static/js/app.js index e8dedd1..5b4915f 100644 --- a/static/js/app.js +++ b/static/js/app.js @@ -29,15 +29,13 @@ this.initLight(); this.initFloor(); this.initModel(); - // 鍙栨暟鎹� - this.initStoreData(); + this.initStoreObjects(this); } this.animate = function () { requestAnimationFrame(this.animate.bind(this)); this.stats.begin(); this.renderer.render(this.scene, this.camera); this.stats.end(); - this.initStoreObjects(this); this.modelMove(); } this.initScene = function () { @@ -58,7 +56,7 @@ // this.camera.position.z = 600; // //鐩告満鐨勬湞鍚� // this.camera.lookAt(0, 0, 0); - this.camera.position.set( - 550, 670, 950 ); + this.camera.position.set( - 550, 2070, 4550 ); this.camera.lookAt( this.scene.position ); //灏嗙浉鏈烘斁鍒板満鏅腑 this.scene.add(this.camera); @@ -75,12 +73,29 @@ this.dom.appendChild( this.renderer.domElement ); } this.initLight = function () { + + //棣栧厛娣诲姞涓幆澧冨厜 + let ambient = new THREE.AmbientLight(0xffffff, 1); //AmbientLight,褰卞搷鏁翠釜鍦烘櫙鐨勫厜婧� + ambient.position.set(0, 0, 0); + this.addObject(ambient); + //娣诲姞骞宠鍏�,骞宠鍏夌被浼间簬澶槼鍏� + let directionalLight = new THREE.DirectionalLight(0xffffff, 0.3);//妯℃嫙杩滃绫讳技澶槼鐨勫厜婧� + directionalLight.position.set(0, 200, 0); + this.addObject(directionalLight); + //璁剧疆鐐瑰厜婧� + let pointLight1 = new THREE.PointLight(0xffffff, 0.3); + pointLight1.position.set(-500, 200, 0); + this.addObject(pointLight1); + let pointLight2 = new THREE.PointLight(0xffffff, 0.3); + pointLight2.position.set(500, 200, 0); + this.addObject(pointLight2); + // --- - var bulbLight = new THREE.PointLight( 0xffee88, 1, 2000, 2 ); - bulbLight.position.set( 600, 600, 500 ); - bulbLight.castShadow = true; - bulbLight.power = 100; - this.addObject(bulbLight); + // var bulbLight = new THREE.PointLight( 0xffee88, 1, 2000, 2 ); + // bulbLight.position.set( 600, 600, 500 ); + // bulbLight.castShadow = true; + // bulbLight.power = 100; + // this.addObject(bulbLight); // --- // var bulbLight1 = new THREE.PointLight( 0xffee88, 1, 2000, 2 ); // bulbLight1.position.set( -600, 600, 500 ); @@ -104,12 +119,12 @@ // hemiLight.intensity = 0.0001; // this.addObject(hemiLight); - const ambientLight = new THREE.AmbientLight( 0xcccccc, 0.4 ); - this.addObject( ambientLight ); - - const directionalLight = new THREE.DirectionalLight( 0xffffff, 0.6 ); - directionalLight.position.set( - 1, 1, 1 ); - this.addObject( directionalLight ); + // const ambientLight = new THREE.AmbientLight( 0xcccccc, 0.4 ); + // this.addObject( ambientLight ); + // + // const directionalLight = new THREE.DirectionalLight( 0xffffff, 0.6 ); + // directionalLight.position.set( - 1, 1, 1 ); + // this.addObject( directionalLight ); } this.initOrbitControl = function () { this.orbitControl = new OrbitControls(this.camera, this.renderer.domElement); @@ -134,7 +149,7 @@ "posy.jpg", "negy.jpg", "posz.jpg", "negz.jpg" ]); - this.scene.background = new THREE.Color( 0x17c5dc ); + this.scene.background = new THREE.Color( 0xf0f0f0 ); } this.removeObject = function (nameorid) { for (let i = 0; i < this.objects.length; i++) { @@ -159,7 +174,7 @@ // this.addObject(plane); // // const helper = new THREE.PolarGridHelper( 2000, 100 ); - const helper = new THREE.GridHelper( 5000, 300 ); + const helper = new THREE.GridHelper( 8000, 300 ); helper.position.y = - 0; helper.material.opacity = 0.25; helper.material.transparent = true; @@ -167,23 +182,37 @@ } this.initStoreObjects = function (object) { if (this.firstTime === 1) { - // initStore(); + 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(var group of Store3DData.data.store.groups) { + for (var line of group.lines) { + let shelf = new StoreShelf(line); + object.addObject(shelf); + //鏄剧ず搴撲綅涓婄殑璐х墿 + // for (var bin of line.bins) { + // let existGoods=this.getExistedGoodType(bin.State); + // let storeGoods = new StoreGoods(optionGroup, bin); + // if(existGoods==null) { + // let goods=storeGoods.create(); + // object.addObject(goods); + // this.goodTypes.push({type: bin.State, object: goods}); + // } else { + // let goods= storeGoods.clone(existGoods); + // object.addObject(goods); + // } + // } + } } + + + + + + + + + @@ -272,8 +301,11 @@ .setMaterials( materials ) .setPath( '../static/model/obj/' ) .load( '璐у弶.obj', function ( object ) { - object.position.z = -500; - object.position.x = -2060; + // 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 ); @@ -311,9 +343,6 @@ }); } this.modelMove = function () { - - } - this.initStoreData = function () { } }, diff --git a/static/js/object/StoreShelf.js b/static/js/object/StoreShelf.js index d5d039a..3591c4a 100644 --- a/static/js/object/StoreShelf.js +++ b/static/js/object/StoreShelf.js @@ -1,93 +1,64 @@ -function StoreShelf(option) { - this.binLength = option.BinLength||50;//搴撲綅闀垮害 - this.binWidth = option.BinWidth||50;//搴撲綅瀹� - this.binHeight = option.BinHeight||50;//搴撲綅楂� - this.binXNum = option.BinXNum||1;//搴撲綅X杞存柟鍚戝簱浣嶆暟閲� - this.binZNum = option.BinZNum||10;//搴撲綅Z杞存柟鍚戝簱浣嶆暟閲� - this.binYNum = option.BinYNum||10;//搴撲綅Y杞村簱浣嶆暟閲� - this.bottomHight = option.BottomHeight||20;//搴曞眰楂樺害锛屽簳灞� - this.positionX = option.Position.X||0;//搴撲綅浣嶇疆 - this.positionY = option.Position.Y||0;//搴撲綅浣嶇疆 - this.positionZ = option.Position.Z||0;//搴撲綅浣嶇疆 +function StoreShelf0(option) { + this.binLength = option.binLength||50;//搴撲綅闀垮害 + this.binWidth = option.binWidth||50;//搴撲綅瀹� + this.binHeight = option.binHeight||50;//搴撲綅楂� + this.binXNum = option.binXNum||1;//搴撲綅X杞存柟鍚戝簱浣嶆暟閲� + this.binZNum = option.binZNum||10;//搴撲綅Z杞存柟鍚戝簱浣嶆暟閲� + this.binYNum = option.binYNum||10;//搴撲綅Y杞村簱浣嶆暟閲� + this.bottomHight = option.bottomHeight||20;//搴曞眰楂樺害锛屽簳灞� + this.positionX = option.position.x||0;//搴撲綅浣嶇疆 + this.positionY = option.position.y||0;//搴撲綅浣嶇疆 + this.positionZ = option.position.z||0;//搴撲綅浣嶇疆 this.rackLengh = 3;//鏀灦鐨勯暱搴︼紝榛樿璁惧姩涓�3 this.rackWidth = 3;//鏀灦鐨勫搴︼紝榛樿璁惧畾涓�3 - this.intervalRackNum=2;//闂撮殧澶氬皯搴撲綅鏈変竴涓富鏀灦 - // let binHolderPlane=new THREE.BoxGeometry(this.binLength,2,this.binWidth);//瀹氫箟涓�涓窡搴撲綅闀垮鐩稿悓鐨勫嚑浣曚綋锛屼綔涓烘墭鐩� + // 鏉愯川 + let shelfMat = new THREE.MeshLambertMaterial({color:0x175EC0});//瀹氫箟鏀灦鍜屾墭鐩樼殑鏉愯川 + //瀹氫箟涓�涓粍鍚堜綋 + let group = new THREE.Group(); - //瀹氫箟鏀灦鍜屾墭鐩樼殑鏉愯川 - let shlefMat = new THREE.MeshPhysicalMaterial({ - color:0xff0000, - // 鏉愯川鍍忛噾灞炵殑绋嬪害. 闈為噾灞炴潗鏂欙紝濡傛湪鏉愭垨鐭虫潗锛屼娇鐢�0.0锛岄噾灞炰娇鐢�1.0锛屼腑闂存病鏈夛紙閫氬父锛�. - // 榛樿 0.5. 0.0鍒�1.0涔嬮棿鐨勫�煎彲鐢ㄤ簬鐢熼攬鐨勯噾灞炲瑙� - metalness: 1.0, - // 鏉愭枡鐨勭矖绯欑▼搴�. 0.0琛ㄧず骞虫粦鐨勯暅闈㈠弽灏勶紝1.0琛ㄧず瀹屽叏婕弽灏�. 榛樿 0.5 - roughness: 0.6, - // 璁剧疆鐜璐村浘 - // 鍙嶅皠绋嬪害, 浠� 0.0 鍒�1.0.榛樿0.5. - // 杩欐ā鎷熶簡闈為噾灞炴潗鏂欑殑鍙嶅皠鐜囥�� 褰搈etalness涓�1.0鏃舵棤鏁� - // reflectivity: 0.5, - }) - - let group = new THREE.Group();//瀹氫箟涓�涓粍鍚堜綋 - //鍚堝苟妯″瀷锛屽垯浣跨敤merge鏂规硶鍚堝苟 - let combineGeometry = new THREE.BufferGeometry(); - /* - 鏀灦鐨勯珮=鏈�搴曞眰鐨勯珮搴�+(搴撲綅鏁�-1)*搴撲綅鐨勯珮搴� - */ + // 璐ф灦鎬婚珮 let shelfHeight=this.bottomHight+(this.binYNum-1)*this.binHeight; - /* - 鏀灦鐨勫=搴撲綅鏁颁箻浠ュ簱浣嶇殑瀹藉害 - */ + // 璐ф灦鎬诲 let shelfWidth=this.binZNum*this.binWidth; - let rackBoxGeometry=new THREE.BoxGeometry(this.rackLengh,shelfHeight,this.rackWidth);//瀹氫箟涓�涓敮鏋剁綉鏍� - let rackObject=new THREE.Mesh( rackBoxGeometry, shlefMat, 0 ); + // 鏀灦妯″瀷 + 鏉愯川 + let rackBoxGeometry=new THREE.BoxGeometry(this.rackLengh,shelfHeight,this.rackWidth); + let rackObject=new THREE.Mesh(rackBoxGeometry, shelfMat, 0); + // 鎵樻澘妯″瀷 + 鏉愯川 + let planeBoxGeometry = new THREE.BoxGeometry(this.binLength, 2, this.binWidth+this.rackWidth); // 瑕嗙洊澶氫竴鏍规敮鏋跺搴� + let planeObject=new THREE.Mesh(planeBoxGeometry, shelfMat, 0); - let plane = new THREE.BoxGeometry(this.binLength, 2, this.binWidth); - let holderObject = new THREE.Mesh(plane, shlefMat,0); + // Y杞村畾浣� + let positionY = this.positionY + shelfHeight / 2; - let leftPositionX=this.positionX-this.binLength/2+this.rackLengh/2;//宸︿晶鏀灦鏌辩殑X杞存潯鐮� - let rightPositionX=this.positionX+this.binLength/2-this.rackLengh/2;//鍙充晶鏀灦鏌辩殑X杞存潯鐮� + //宸︿晶鏀灦鏌辩殑X杞村畾浣� + let leftPositionX=this.positionX-this.binLength/2; + //鍙充晶鏀灦鏌辩殑X杞村畾浣� + let rightPositionX=this.positionX+this.binLength/2 - this.rackLengh; // 缂╄繘鏀灦闀垮害 + // 鍒濆鍖栨敮鏋舵ā鍨� + for(let i=0;i<=this.binZNum;i++) { + let leftRack = rackObject.clone(); + let positionZ = this.positionZ - shelfWidth/2 + i*this.binWidth; + leftRack.position.set(leftPositionX,positionY,positionZ); + leftRack.updateMatrix(); + group.add(leftRack); - let positionY=this.positionY-this.binHeight/2;//鏀灦鏌辩殑Y杞村潗鏍� - - for(let i=0;i<this.binZNum+this.intervalRackNum;i++) { - let isRack=i%this.intervalRackNum; - if(isRack===0) { - let PositionZ=this.positionZ-shelfWidth/2+i*this.binWidth+this.rackWidth/2; - if(i>=this.binZNum) { - PositionZ=PositionZ-this.rackWidth; - } - - let leftRack=rackObject.clone(); - group.add(leftRack); - leftRack.position.set(leftPositionX,positionY,PositionZ); - leftRack.updateMatrix(); - combineGeometry.merge(leftRack.geometry, leftRack.matrix); - let rightRack=rackObject.clone(); - group.add(rightRack); - rightRack.position.set(rightPositionX,positionY,PositionZ); - rightRack.updateMatrix(); - combineGeometry.merge(rightRack.geometry, rightRack.matrix); + let rightRack = rackObject.clone(); + rightRack.position.set(rightPositionX,positionY,positionZ); + rightRack.updateMatrix(); + group.add(rightRack); + } + // 鍒濆鍖栨墭鏉挎ā鍨� + for(let i = 0;i < this.binZNum;i++) { + for (let j = 0;j < this.binYNum;j++) { + let plane = planeObject.clone(); + let positionY= this.positionY + this.bottomHight + j*this.binHeight + 1; + let positionZ= this.positionZ - shelfWidth/2 + i * this.binWidth + this.binWidth/2; + plane.position.set(this.positionX-this.rackLengh/2,positionY,positionZ); + plane.updateMatrix(); + group.add(plane); } } - //鍒涘缓鎵樻澘 - for(let i=0;i<this.binZNum;i++) { - for (let j = 0; j < this.binYNum; j++) { - - let positionY=this.positionY-this.binHeight/2-shelfHeight/2+this.bottomHight+j*this.binHeight; - let positionZ=this.positionZ-shelfWidth/2+this.binWidth/2 + i * this.binWidth - let holderObj= holderObject.clone(); - group.add(holderObj); - holderObj.position.set(this.positionX,positionY,positionZ); - holderObj.updateMatrix(); - combineGeometry.merge(holderObj.geometry, holderObj.matrix); - } - } - let shelf= new THREE.Mesh(combineGeometry, shlefMat); - shelf.uuid=option.No; - shelf.name=option.Name; - shelf.type="StoreShelf"; return group; } diff --git a/static/js/object/StoreShelf0.js b/static/js/object/StoreShelf0.js deleted file mode 100644 index 3591c4a..0000000 --- a/static/js/object/StoreShelf0.js +++ /dev/null @@ -1,64 +0,0 @@ -function StoreShelf0(option) { - this.binLength = option.binLength||50;//搴撲綅闀垮害 - this.binWidth = option.binWidth||50;//搴撲綅瀹� - this.binHeight = option.binHeight||50;//搴撲綅楂� - this.binXNum = option.binXNum||1;//搴撲綅X杞存柟鍚戝簱浣嶆暟閲� - this.binZNum = option.binZNum||10;//搴撲綅Z杞存柟鍚戝簱浣嶆暟閲� - this.binYNum = option.binYNum||10;//搴撲綅Y杞村簱浣嶆暟閲� - this.bottomHight = option.bottomHeight||20;//搴曞眰楂樺害锛屽簳灞� - this.positionX = option.position.x||0;//搴撲綅浣嶇疆 - this.positionY = option.position.y||0;//搴撲綅浣嶇疆 - this.positionZ = option.position.z||0;//搴撲綅浣嶇疆 - this.rackLengh = 3;//鏀灦鐨勯暱搴︼紝榛樿璁惧姩涓�3 - this.rackWidth = 3;//鏀灦鐨勫搴︼紝榛樿璁惧畾涓�3 - - // 鏉愯川 - let shelfMat = new THREE.MeshLambertMaterial({color:0x175EC0});//瀹氫箟鏀灦鍜屾墭鐩樼殑鏉愯川 - //瀹氫箟涓�涓粍鍚堜綋 - let group = new THREE.Group(); - - // 璐ф灦鎬婚珮 - let shelfHeight=this.bottomHight+(this.binYNum-1)*this.binHeight; - // 璐ф灦鎬诲 - let shelfWidth=this.binZNum*this.binWidth; - // 鏀灦妯″瀷 + 鏉愯川 - let rackBoxGeometry=new THREE.BoxGeometry(this.rackLengh,shelfHeight,this.rackWidth); - let rackObject=new THREE.Mesh(rackBoxGeometry, shelfMat, 0); - // 鎵樻澘妯″瀷 + 鏉愯川 - let planeBoxGeometry = new THREE.BoxGeometry(this.binLength, 2, this.binWidth+this.rackWidth); // 瑕嗙洊澶氫竴鏍规敮鏋跺搴� - let planeObject=new THREE.Mesh(planeBoxGeometry, shelfMat, 0); - - // Y杞村畾浣� - let positionY = this.positionY + shelfHeight / 2; - - //宸︿晶鏀灦鏌辩殑X杞村畾浣� - let leftPositionX=this.positionX-this.binLength/2; - //鍙充晶鏀灦鏌辩殑X杞村畾浣� - let rightPositionX=this.positionX+this.binLength/2 - this.rackLengh; // 缂╄繘鏀灦闀垮害 - - // 鍒濆鍖栨敮鏋舵ā鍨� - for(let i=0;i<=this.binZNum;i++) { - let leftRack = rackObject.clone(); - let positionZ = this.positionZ - shelfWidth/2 + i*this.binWidth; - leftRack.position.set(leftPositionX,positionY,positionZ); - leftRack.updateMatrix(); - group.add(leftRack); - - let rightRack = rackObject.clone(); - rightRack.position.set(rightPositionX,positionY,positionZ); - rightRack.updateMatrix(); - group.add(rightRack); - } - // 鍒濆鍖栨墭鏉挎ā鍨� - for(let i = 0;i < this.binZNum;i++) { - for (let j = 0;j < this.binYNum;j++) { - let plane = planeObject.clone(); - let positionY= this.positionY + this.bottomHight + j*this.binHeight + 1; - let positionZ= this.positionZ - shelfWidth/2 + i * this.binWidth + this.binWidth/2; - plane.position.set(this.positionX-this.rackLengh/2,positionY,positionZ); - plane.updateMatrix(); - group.add(plane); - } - } - return group; -} diff --git a/views/index.html b/views/index.html index ca60737..7abb321 100644 --- a/views/index.html +++ b/views/index.html @@ -18,6 +18,7 @@ display: block; } #sidebar{ + display: none; /*瀹氫綅*/ position: absolute; top: 50%; -- Gitblit v1.9.1