From afffa232a88db23a0fd050aad413e36115002381 Mon Sep 17 00:00:00 2001
From: whycq <whycq>
Date: 星期六, 11 十二月 2021 16:03:41 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.97.1.152:5880/r/ASRS-3D into dev
---
static/js/app.js | 102 +++++++++++-----
/dev/null | 64 ----------
static/js/utils.js | 0
static/js/object/StoreShelf.js | 129 ++++++++-------------
static/js/object/StoreCrn.js | 44 +++++++
5 files changed, 162 insertions(+), 177 deletions(-)
diff --git a/static/js/app.js b/static/js/app.js
index e8dedd1..6bede19 100644
--- a/static/js/app.js
+++ b/static/js/app.js
@@ -29,15 +29,14 @@
this.initLight();
this.initFloor();
this.initModel();
- // 鍙栨暟鎹�
- this.initStoreData();
+ this.initModel0();
+ 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 +57,7 @@
// this.camera.position.z = 600;
// //鐩告満鐨勬湞鍚�
// this.camera.lookAt(0, 0, 0);
- this.camera.position.set( - 550, 670, 950 );
+ this.camera.position.set( - 350, 1070, 1550 );
this.camera.lookAt( this.scene.position );
//灏嗙浉鏈烘斁鍒板満鏅腑
this.scene.add(this.camera);
@@ -75,12 +74,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 +120,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 +150,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 +175,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 +183,38 @@
}
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) {
+ let crn = new StoreCrn(group.crn, object);
+ 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);
+ // }
+ // }
+
}
}
+
+
+
+
+
+
+
+
+
@@ -228,6 +259,9 @@
this.firstTime = 0;
}
}
+ }
+ this.initModel0 = function () {
+
}
this.getExistedGoodType=function(state){
for (let i=0;i<this.goodTypes.length;i++) {
@@ -274,6 +308,9 @@
.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 );
@@ -311,9 +348,6 @@
});
}
this.modelMove = function () {
-
- }
- this.initStoreData = function () {
}
},
diff --git a/static/js/object/StoreCrn.js b/static/js/object/StoreCrn.js
new file mode 100644
index 0000000..e37d9eb
--- /dev/null
+++ b/static/js/object/StoreCrn.js
@@ -0,0 +1,44 @@
+function StoreCrn(option, object) {
+ console.log(option);
+ this.crnBodyLength = option.crnBody.length||50;//搴撲綅闀垮害
+ this.crnBodyWidth = option.crnBody.width||50;//搴撲綅瀹�
+ this.crnBodyHeight = option.crnBody.height||500;//搴撲綅楂�
+ this.crnLoadLength = option.crnLoad.length||60;//搴撲綅闀垮害
+ this.crnLoadWidth = option.crnLoad.width||60;//搴撲綅瀹�
+ this.crnLoadHeight = option.crnLoad.height||40;//搴撲綅楂�
+ this.crnForkLength = option.crnFork.length||80;//搴撲綅闀垮害
+ this.crnForkWidth = option.crnFork.width||20;//搴撲綅瀹�
+ this.crnForkHeight = option.crnFork.height||30;//搴撲綅楂�
+
+ // 绔嬫煴
+ var a = new THREE.Mesh(new THREE.BoxBufferGeometry(this.crnBodyLength, this.crnBodyHeight, this.crnBodyWidth), new THREE.MeshBasicMaterial({
+ color: 0xff0000,
+ transparent: true,
+ opacity: .3
+ }))
+ a.position.x = option.crnBody.position.x;
+ a.position.y = option.crnBody.position.y + this.crnBodyHeight/2;
+ a.position.z = option.crnBody.position.z - this.crnBodyWidth/2;
+ object.addObject(a);
+ // 杞借揣鍙�
+ var b = new THREE.Mesh(new THREE.BoxBufferGeometry(this.crnLoadLength, this.crnLoadHeight, this.crnLoadWidth), new THREE.MeshBasicMaterial({
+ color: 0x00ff00,
+ transparent: true,
+ opacity: .5
+ }))
+ b.position.x = option.crnLoad.position.x;
+ b.position.y = option.crnLoad.position.y + this.crnLoadHeight/2;
+ b.position.z = option.crnLoad.position.z - this.crnLoadWidth/2 + 5;
+ object.addObject(b);
+ // 鍙夌墮
+ var c = new THREE.Mesh(new THREE.BoxBufferGeometry(this.crnForkLength, this.crnForkWidth, this.crnForkHeight), new THREE.MeshBasicMaterial({
+ color: 0xff00ff,
+ transparent: true,
+ opacity: 1
+ }))
+ c.position.x = option.crnFork.position.x;
+ c.position.y = option.crnFork.position.y + this.crnLoadHeight/2;
+ c.position.z = option.crnFork.position.z - this.crnLoadWidth/2;
+ object.addObject(c);
+
+}
diff --git a/static/js/object/StoreShelf.js b/static/js/object/StoreShelf.js
index d5d039a..98bea40 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;//搴撲綅浣嶇疆
+ 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 shelfHeight=this.bottomHight+(this.binYNum)*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 + 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 + 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/static/js/utils.js b/static/js/utils.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/static/js/utils.js
--
Gitblit v1.9.1