From 5558da2487fc367badb01a9feb4c9e0e9ffa76f3 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@63.com> Date: 星期五, 17 十二月 2021 13:14:28 +0800 Subject: [PATCH] # --- static/js/object/StoreShelf.js | 60 +++++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 45 insertions(+), 15 deletions(-) diff --git a/static/js/object/StoreShelf.js b/static/js/object/StoreShelf.js index 3d093b3..63262ba 100644 --- a/static/js/object/StoreShelf.js +++ b/static/js/object/StoreShelf.js @@ -1,3 +1,5 @@ +import * as BufferGeometryUtils from '../utils/BufferGeometryUtils.js'; + function StoreShelf(option) { this.binLength = option.binLength||50;//搴撲綅闀垮害 this.binWidth = option.binWidth||50;//搴撲綅瀹� @@ -16,7 +18,7 @@ let shelfMat = new THREE.MeshLambertMaterial({ color: 0x175EC0, transparent: true, - opacity: .2 + opacity: .6 });//瀹氫箟鏀灦鍜屾墭鐩樼殑鏉愯川 //瀹氫箟涓�涓粍鍚堜綋 let group = new THREE.Group(); @@ -40,29 +42,57 @@ //鍙充晶鏀灦鏌辩殑X杞村畾浣� let rightPositionX=this.positionX+this.binLength/2 - this.rackLengh; // 缂╄繘鏀灦闀垮害 + let geometries = []; + let transform = new THREE.Object3D(); // 鍒濆鍖栨敮鏋舵ā鍨� 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 leftRack = rackObject.clone(); + // let positionZ = - ( this.positionZ + 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); - let rightRack = rackObject.clone(); - rightRack.position.set(rightPositionX,positionY,positionZ); - rightRack.updateMatrix(); - group.add(rightRack); + let positionZ = - ( this.positionZ + i*this.binWidth ); + // ----- + let leftClone = rackBoxGeometry.clone(); + transform.position.set(leftPositionX,positionY,positionZ); + transform.updateMatrix(); + leftClone.applyMatrix4(transform.matrix); + geometries.push(leftClone); + + let rightClone = rackBoxGeometry.clone(); + transform.position.set(rightPositionX,positionY,positionZ); + transform.updateMatrix(); + rightClone.applyMatrix4(transform.matrix); + geometries.push(rightClone); } // 鍒濆鍖栨墭鏉挎ā鍨� for(let i = 0;i < this.binZNum;i++) { for (let j = 0;j <= this.binYNum;j++) { - let plane = planeObject.clone(); + // 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); + + let clone = planeBoxGeometry.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); + transform.position.set(this.positionX-this.rackLengh/2,positionY,positionZ); + transform.updateMatrix(); + clone.applyMatrix4(transform.matrix); + geometries.push(clone); } } - return group; + + let mergedGeometry = BufferGeometryUtils.mergeBufferGeometries(geometries); + return new THREE.Mesh(mergedGeometry, shelfMat); } + +export {StoreShelf} -- Gitblit v1.9.1