From 0f0ec877f3c4d05aa92e5f436cbac30b4ca71744 Mon Sep 17 00:00:00 2001 From: lizw-2015 <1183409807@qq.com> Date: Fri, 13 Jun 2025 14:02:25 +0800 Subject: [PATCH 1/3] =?UTF-8?q?docs(yvan-lcc):=20=E6=9B=B4=E6=96=B0OBB=20?= =?UTF-8?q?=E7=9F=A9=E5=BD=A2=E5=8C=85=E5=9B=B4=E7=9B=92=20API=20=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在文档中添加了"选择框"标题 - 优化了文档结构,增加了空行 --- doc/OBB矩形包围盒API.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/OBB矩形包围盒API.md b/doc/OBB矩形包围盒API.md index 6f924a6..f80de84 100644 --- a/doc/OBB矩形包围盒API.md +++ b/doc/OBB矩形包围盒API.md @@ -77,6 +77,7 @@ getItemsByPositionDistance(x:number, z:number, distance:number): {item:ItemJson, --- +(选择框) ### getItemsByRect(x1,y1,x2,y2): ItemJson[] 根据矩形,获取与矩形有碰撞的所有物品集合 From 58bd25e6c748d86a7d99452185df06155edbc734 Mon Sep 17 00:00:00 2001 From: liupeng <511646242@qq.com> Date: Fri, 13 Jun 2025 14:54:57 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=8F=8C=E7=AE=AD=E5=A4=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/images/conveyor/shapes/triangle-double.png | Bin 0 -> 5377 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/assets/images/conveyor/shapes/triangle-double.png diff --git a/src/assets/images/conveyor/shapes/triangle-double.png b/src/assets/images/conveyor/shapes/triangle-double.png new file mode 100644 index 0000000000000000000000000000000000000000..a0db2fa5f715962a41fbd01a6fd3f989b86c2b4d GIT binary patch literal 5377 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 Date: Fri, 13 Jun 2025 16:38:41 +0800 Subject: [PATCH 3/3] shuttle Rack --- src/assets/Models/shuttle.glb | Bin 0 -> 118028 bytes src/core/manager/WorldModel.ts | 2 + src/example/example1.js | 252 ++++- src/modules/shuttle_rack/ShuttleRackEntity.ts | 5 + src/modules/shuttle_rack/ShuttleRackInteraction.ts | 22 + .../shuttle_rack/ShuttleRackPropertySetter.ts | 65 ++ src/modules/shuttle_rack/ShuttleRackRenderer.ts | 1022 ++++++++++++++++++++ src/modules/shuttle_rack/index.ts | 15 + 8 files changed, 1373 insertions(+), 10 deletions(-) create mode 100644 src/assets/Models/shuttle.glb create mode 100644 src/modules/shuttle_rack/ShuttleRackEntity.ts create mode 100644 src/modules/shuttle_rack/ShuttleRackInteraction.ts create mode 100644 src/modules/shuttle_rack/ShuttleRackPropertySetter.ts create mode 100644 src/modules/shuttle_rack/ShuttleRackRenderer.ts create mode 100644 src/modules/shuttle_rack/index.ts diff --git a/src/assets/Models/shuttle.glb b/src/assets/Models/shuttle.glb new file mode 100644 index 0000000000000000000000000000000000000000..45d1b62083912f18ca7fa418d42ddd9355aec236 GIT binary patch literal 118028 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
  • >S-(?Ps{B=bXLd*txX0kM%6syJj?0f|4S|QB9 z{i1B#|0=r~y$F{cIDrlm36njW9yVMA2@}e_3Tvme!fe21y20OEpjne=@vkTW?VE`N z&e2x>9!PidBA)ACI%9&(4uOJ}C;r>=zf{7F^#5|me|N|K$b$b$hB+BI9kcrH?)b0n znA5L71^;(<{C9WEvcvy7l7WZGFn7MWu&&9j00RH)b~^1S*ya@nK}T>-=D*tG<+(ZH<=MH| z%xhCQuYS5b+rCo%?#(%vHh6ii@4WiyHgojB>*x2KKkkQ|hH3oqdCisaxzCmHInI^m zwW*xfW_ql-HuzYxcaFC6 z+E3#@H|{*T&4*t(AGi5)$Lr_z!u+|-_QSTt~_%cC74n1|9C5KWzCiG`YN z@xPV-KDBux5Xs-+y|%dHv>on~(4RfzuqEdHw#6Hmn&8=HUJP_v!n2{pXK| zm*@AJf%Mn9`M>|AFBo_J{r}o`7SH+k&F}xemFMH}KQR8r5C4`o{>mr+X`K1^|ED(d zahPBJSKt31I{(`?^J(&b(RcpX^Ktzjy3C9=*KV%O-2L?4`M0$C>zdB>`#ao!JD2~2 z|9_g}U+RV6{K~np;nyL5fi>c}eaqa4Gi^}nTzmXF_xu0!oB4g;WfuSwf@ZELb?;02 zX}B|2d~PUp_0X#6x_@`=-LTdMum1wBIGnGu*BvAKru)s+?*jKYEZ@5Q)AjfjzxQvT zO!q$yu6X~s`k5;P;qa$Qwol`QUvWI~E8Z8sKI!~+`u@0v{q#NF53k4J&a{J|`R(yB z@OvCT{CaG9+!?&^-{$BuN3WUr%&aj^$C>&3>%Q{u?Qy(7yGr~zM=!kJ34kA7H-|Sq z*3A7Jelz#;;s5=293DPjynb%I=IAvCcmBHJbu;+QU&op9%=~7`IDYu(f4%+>|IFYq z({_G&{`_XvcW(V~XfyC!paqZ`c+&}nRzS*-26O=03N3{|VjDyR<^A9{1xN;R1-~u@ z2dD0Xc0hX2F31Jc?}YY(|2x3lDrh@o1?fWDK%1@LHBKAwp9<<$gVJ}94zvYY3@riI zZ=p?)HDm$4QnU%$04;-LAysG%=;;huf?6j?9s*wwfaIW!kRr4Yv`~T;fszBX9`v_| zOdw-u4`cxP*a2(|ptX=bL;!dygX?a{2vP^*Q$VdIqy>7~LI^170o-;0T=f8^JHg)_ z;C?m04F6>CHh?P)V5$xNQb8?_w+^%!V7mnT)d4tu1F$87zncKA5Wsc~=w}6RB?D~b zA#;GO9ApZxT?l^P0B~Ihuw4&&F9x`(0Bj9F4^@Ec8c@=Q3<0*v;IBTwbsfN#0!nKE eu8RP+2)JrOD*??lzb.bayWidth), this.defaultScale.y, item.dt.rackDepth) + point.rotation.set( + THREE.MathUtils.degToRad(item.tf[1][0]), + THREE.MathUtils.degToRad(item.tf[1][1]), + THREE.MathUtils.degToRad(item.tf[1][2]) + ) + } + + + createLineBasic(start: ItemJson, end: ItemJson, type: LinkType): THREE.Object3D { + throw new Error('not allow store line.') + } + + updateLine(start: ItemJson, end: ItemJson, type: LinkType, option?: RendererCudOption) { + throw new Error('not allow store line.') + } + + + createPoint(item: ItemJson, option?: RendererCudOption): THREE.Object3D { + // 创建平面几何体 + if (!item.dt.bays || !item.dt.aisles) { + system.showErrorDialog('RackRenderer field bays / aisles is null!') + return null + } + + const group = new THREE.Group() + group.name = ShuttleRackRenderer.POINT_NAME + + const meshes = this.createShuttleRack(item, option) + + meshes.forEach(mesh => { + group.add(mesh) + }) + + + // 设置位置 + group.position.set(item.tf[0][0], item.tf[0][1], item.tf[0][2]) + + group.rotation.set( + THREE.MathUtils.degToRad(item.tf[1][0]), + THREE.MathUtils.degToRad(item.tf[1][1]), + THREE.MathUtils.degToRad(item.tf[1][2]) + ) + return group + } + + dispose() { + super.dispose() + this.pointMaterial?.dispose() + } + + createPointBasic(item: ItemJson, option?: RendererCudOption): THREE.Object3D { + throw new Error('Rack createPointBasic not allow!') + } + + shuttleRackVerticalBarWidth = 0.1 + shuttleRackVerticalBarDepth = 0.08 + shuttleRackVerticalBarColor = 0xFF35499C + shuttleRackVerticalBarGeometry: BufferGeometry = null + shuttleRackVerticalBarMaterial: Material = null + + shuttleRackLinkBarColor = 0xFF35499C + shuttleRackLinkBarGeometry: BufferGeometry = null + shuttleRackLinkBarMaterial: Material = null + + shuttleRackHorizontalBarWidth = 0.1 + shuttleRackHorizontalBarDepth = 0.08 + shuttleRackHorizontalBarColor = 0xFFF97F27 + shuttleRackHorizontalBarGeometry: BufferGeometry = null + shuttleRackHorizontalBarMaterial: Material = null + + shuttleRackPlateColor = 0xFFA5BDDC + shuttleRackPlateGeometry: BufferGeometry = null + shuttleRackPlateMaterial: Material = null + + shuttleRailwayColor = 0xFFB6B6B6 + shuttleRailwayGeometry: BufferGeometry = null + shuttleRailwayMaterial: Material = null + + c = '#b6b6b6' + bottomBarHeight = 0.2 + bottomLinkHeight = 0.2 + + vBarSectionPoints = [ + { x: -0.05, y: -0.05 }, + { x: -0.025, y: -0.05 }, + { x: -0.01, y: -0.045 }, + { x: 0.05, y: -0.045 }, + { x: 0.025, y: -0.05 }, + { x: 0.05, y: -0.05 }, + { x: 0.05, y: 0.042 }, + { x: 0.042, y: 0.05 }, + { x: 0.025, y: 0.05 }, + { x: 0.025, y: 0.042 }, + { x: 0.042, y: 0.042 }, + { x: 0.042, y: -0.042 }, + { x: -0.042, y: -0.042 }, + { x: -0.042, y: 0.042 }, + { x: -0.025, y: 0.042 }, + { x: -0.025, y: 0.05 }, + { x: -0.042, y: 0.05 }, + { x: -0.05, y: 0.042 }, + { x: -0.05, y: -0.05 } + ] + hBarSectionPoints = [ + { x: -0.05, y: -0.05 }, + { x: -0.025, y: -0.05 }, + { x: -0.01, y: -0.045 }, + { x: 0.05, y: -0.045 }, + { x: 0.025, y: -0.05 }, + { x: 0.05, y: -0.05 }, + { x: 0.05, y: 0.05 }, + { x: 0.025, y: 0.05 }, + { x: 0.01, y: 0.045 }, + { x: -0.01, y: 0.045 }, + { x: -0.025, y: 0.05 }, + { x: -0.05, y: 0.05 }, + { x: -0.05, y: -0.05 } + ] + + linkSectionPoints = [ + { x: -0.05, y: -0.05 }, + { x: -0.05, y: 0.05 }, + { x: 0, y: 0.05 }, + { x: 0, y: 0.06 }, + { x: -0.06, y: 0.06 }, + { x: -0.06, y: -0.05 }, + { x: -0.05, y: -0.05 } + ] + + linkBarSectionPoints = [ + { x: -0.025, y: -0.025 }, + { x: 0.025, y: -0.025 }, + { x: 0.025, y: 0.025 }, + { x: -0.025, y: 0.025 }, + { x: -0.025, y: -0.025 } + ] + + createVerticalBar(x, y, z, length): THREE.BufferGeometry { + + // 创建一个形状 柱子的截面形状 + const shape = new THREE.Shape() + shape.moveTo(this.vBarSectionPoints[0].x, this.vBarSectionPoints[0].y) + for (let i = 1; i < this.vBarSectionPoints.length; i++) { + shape.lineTo(this.vBarSectionPoints[i].x, this.vBarSectionPoints[i].y) + } + + // 拉伸轨迹线 + const curve = new THREE.CatmullRomCurve3( + [new THREE.Vector3(0, 0, 0), new THREE.Vector3(0, length, 0)], + false, // 闭合曲线 + 'catmullrom', + 0 + ) + + // 挤出几何图形 参数 + const options = { + steps: 1, + bevelEnabled: false, + extrudePath: curve // 设置挤出轨迹 + } + // 创建挤出几何体 + const geometry = new THREE.ExtrudeGeometry(shape, options) + // 调整uv方便正确贴图 + this.resetUVs(geometry) + return geometry + } + + createVerticalBarMaterial(): THREE.Material { + + let textureLoader = new THREE.TextureLoader() + + // 加载纹理 + const textureHole = textureLoader.load(storageBar_PNG) // 孔洞 + const textureMaterial = textureLoader.load(Plastic_Rough_JPG) // 表面材质 + + textureHole.repeat.set(10, 18) // X轴重复,Y轴重复 + textureMaterial.repeat.set(2, 2) // X轴重复,Y轴重复 + // textureHole.offset.set(0.5, 0) + // textureHole.center.set(0.5, 0) + + // 必须设置包裹模式为重复 + textureHole.wrapS = THREE.RepeatWrapping + textureHole.wrapT = THREE.RepeatWrapping + textureMaterial.wrapS = THREE.RepeatWrapping + textureMaterial.wrapT = THREE.RepeatWrapping + + const material = new THREE.MeshPhongMaterial() + material.alphaMap = textureHole + material.normalMap = textureMaterial + material.color.setHex(this.shuttleRackVerticalBarColor, 'srgb') + material.specular.setHex(0xff6d6d6d, 'srgb') + material.transparent = true + material.needsUpdate = true + + return material + } + + createLinkBar(x, y, z, vBarLength, depth, bottomDistance, topDistance): THREE.BufferGeometry { + + const bgs: BufferGeometry[] = [] + const top = vBarLength - topDistance + // 创建一个形状 柱子的截面形状 + const shape = new THREE.Shape() + shape.moveTo(this.linkBarSectionPoints[0].x, this.linkBarSectionPoints[0].y) + for (let i = 1; i < this.linkBarSectionPoints.length; i++) { + shape.lineTo(this.linkBarSectionPoints[i].x, this.linkBarSectionPoints[i].y) + } + + // 拉伸轨迹线 横向 底部 + const curveHBottom = new THREE.CatmullRomCurve3( + [new THREE.Vector3(0, bottomDistance, 0), new THREE.Vector3(0, bottomDistance, depth)], + false, // 闭合曲线 + 'catmullrom', + 0 + ) + + // 挤出几何图形 参数 + const optionsHBottom = { + steps: 1, + bevelEnabled: false, + extrudePath: curveHBottom // 设置挤出轨迹 + } + + // 拉伸轨迹线 横向 底部 + const curveHTop = new THREE.CatmullRomCurve3( + [new THREE.Vector3(0, top, 0), new THREE.Vector3(0, top, depth)], + false, // 闭合曲线 + 'catmullrom', + 0 + ) + + // 挤出几何图形 参数 + const optionsHTop = { + steps: 1, + bevelEnabled: false, + extrudePath: curveHTop // 设置挤出轨迹 + } + + // 创建挤出几何体 + const geometryHBottom = new THREE.ExtrudeGeometry(shape, optionsHBottom) + const geometryHTop = new THREE.ExtrudeGeometry(shape, optionsHTop) + bgs.push(geometryHBottom, geometryHTop) + + let remainingHeight = vBarLength - bottomDistance - topDistance + + // 需要创建斜杆 + + for (let i = 0; i < Math.floor(remainingHeight / depth); i++) { + // 拉伸轨迹线 斜向 + const curveD = new THREE.CatmullRomCurve3( + (i % 2 == 0) ? [new THREE.Vector3(0, bottomDistance + depth * i, 0), new THREE.Vector3(0, bottomDistance + depth * (i + 1), depth)] + : [new THREE.Vector3(0, bottomDistance + depth * (i + 1), 0), new THREE.Vector3(0, bottomDistance + depth * (i), depth)], + false, // 闭合曲线 + 'catmullrom', + 0 + ) + + const optionsD = { + steps: 1, + bevelEnabled: false, + extrudePath: curveD // 设置挤出轨迹 + } + + const geometryD = new THREE.ExtrudeGeometry(shape, optionsD) + bgs.push(geometryD) + } + + if (vBarLength - bottomDistance - topDistance > depth) { + + + } + + // 调整uv方便正确贴图 + // this.resetUVs(geometry); + return mergeGeometries(bgs) + } + + createLinkBarMaterial(): THREE.Material { + + const material = new THREE.MeshPhongMaterial() + material.color.setHex(this.shuttleRackLinkBarColor, 'srgb') + material.specular.setHex(0xff6d6d6d, 'srgb') + material.transparent = true + material.needsUpdate = true + + return material + } + + createHorizontalBar(x, y, z, length): THREE.BufferGeometry { + const geometries: THREE.BufferGeometry[] = [] + // 创建一个形状 柱子的截面形状 + const shape = new THREE.Shape() + shape.moveTo(this.hBarSectionPoints[0].x, this.hBarSectionPoints[0].y) + for (let i = 1; i < this.hBarSectionPoints.length; i++) { + shape.lineTo(this.hBarSectionPoints[i].x, this.hBarSectionPoints[i].y) + } + + // 拉伸轨迹线 + const curve = new THREE.CatmullRomCurve3( + [new THREE.Vector3(0.05, 0, 0), new THREE.Vector3(length - 0.05, 0, 0)], + false, // 闭合曲线 + 'catmullrom', + 0 + ) + + // 挤出几何图形 参数 + const options = { + steps: 1, + bevelEnabled: false, + extrudePath: curve // 设置挤出轨迹 + } + // 创建挤出几何体 + const geometry = new THREE.ExtrudeGeometry(shape, options) + geometries.push(geometry) + + const linkShapeL = new THREE.Shape() + const linkShapeR = new THREE.Shape() + linkShapeL.moveTo(this.linkSectionPoints[0].x, this.linkSectionPoints[0].y) + linkShapeR.moveTo(this.linkSectionPoints[0].x + (length), this.linkSectionPoints[0].y) + for (let i = 1; i < this.linkSectionPoints.length; i++) { + linkShapeL.lineTo(this.linkSectionPoints[i].x, this.linkSectionPoints[i].y) + linkShapeR.lineTo(this.linkSectionPoints[i].x + (length), this.linkSectionPoints[i].y) + } + + // 拉伸轨迹线 + const linkCurve = new THREE.CatmullRomCurve3( + [new THREE.Vector3(0, 0, -0.08), new THREE.Vector3(0, 0, 0.08)], + false, // 闭合曲线 + 'catmullrom', + 0 + ) + + // 挤出几何图形 参数 + const linkOptions = { + steps: 1, + bevelEnabled: false, + extrudePath: linkCurve // 设置挤出轨迹 + } + // 创建挤出几何体 + const linkGeometryL = new THREE.ExtrudeGeometry(linkShapeL, linkOptions) + linkGeometryL.rotateZ(-Math.PI / 2) + const linkGeometryR = new THREE.ExtrudeGeometry(linkShapeR, linkOptions) + linkGeometryR.rotateX(-Math.PI) + linkGeometryR.rotateZ(-Math.PI / 2) + + geometries.push(linkGeometryL) + geometries.push(linkGeometryR) + + // 调整uv方便正确贴图 + // this.resetUVs(geometry); + return mergeGeometries(geometries) + } + + createHorizontalBarMaterial(): THREE.Material { + + const material = new THREE.MeshPhongMaterial() + material.color.setHex(this.shuttleRackHorizontalBarColor, 'srgb') + material.specular.setHex(0xff6d6d6d, 'srgb') + material.transparent = true + material.needsUpdate = true + + return material + } + + createPlate(x, y, z, isPlate): THREE.BufferGeometry { + + const length = 1, depth = 1; + + const geometries: THREE.BufferGeometry[] = [] + + if (isPlate) { + const shapeZ = new THREE.Shape() + shapeZ.moveTo(-(depth)/2, -(length-0.1)/2) + shapeZ.lineTo((depth)/2, -(length-0.1)/2) + shapeZ.lineTo((depth)/2, (length-0.1)/2) + shapeZ.lineTo(-(depth)/2, (length-0.1)/2) + shapeZ.lineTo(-(depth)/2, -(length-0.1)/2) + + const curveZ = new THREE.CatmullRomCurve3( + [new THREE.Vector3(length/2, depth/2, -0.05), new THREE.Vector3(length/2, depth/2, -0.055)], + false, // 闭合曲线 + 'catmullrom', + 0 + ) + // 挤出几何图形 参数 + const optionsZ = { + steps: 1, + bevelEnabled: false, + extrudePath: curveZ // 设置挤出轨迹 + } + // 创建挤出几何体 + const geometryZ = new THREE.ExtrudeGeometry(shapeZ, optionsZ) + geometries.push(geometryZ) + } else { + // 间隔 0.015 到 0.020 + const len = length - 0.1 - 0.2 + const a = length/0.15 + const b = length/0.20 + let c = Math.floor((a+b) / 2) + if (len/c > 0.2) { + c += 1 + } + const dlen = len/c + for (let i = 0; i <= c; i++) { + + const shapeZ = new THREE.Shape() + shapeZ.moveTo(this.linkBarSectionPoints[0].x, this.linkBarSectionPoints[0].y) + for (let i = 1; i < this.linkBarSectionPoints.length; i++) { + shapeZ.lineTo(this.linkBarSectionPoints[i].x, this.linkBarSectionPoints[i].y) + } + + const curveZ = new THREE.CatmullRomCurve3( + [new THREE.Vector3(0.15 + dlen * i, 0, -0.024), new THREE.Vector3(0.15 + dlen * i, depth, -0.024)], + false, // 闭合曲线 + 'catmullrom', + 0 + ) + // 挤出几何图形 参数 + const optionsZ = { + steps: 1, + bevelEnabled: false, + extrudePath: curveZ // 设置挤出轨迹 + } + // 创建挤出几何体 + const geometryZ = new THREE.ExtrudeGeometry(shapeZ, optionsZ) + geometries.push(geometryZ) + } + } + + return mergeGeometries(geometries) + } + + createPlateMaterial(): THREE.Material { + + const material = new THREE.MeshPhongMaterial() + material.color.setHex(this.shuttleRackPlateColor, 'srgb') + material.specular.setHex(0xff6d6d6d, 'srgb') + material.transparent = true + material.needsUpdate = true + + return material + } + + createRailway(x, y, z): THREE.BufferGeometry { + + const shape = new THREE.Shape() + shape.moveTo(this.linkBarSectionPoints[0].x, this.linkBarSectionPoints[0].y) + for (let i = 1; i < this.linkBarSectionPoints.length; i++) { + shape.lineTo(this.linkBarSectionPoints[i].x, this.linkBarSectionPoints[i].y) + } + + const curve = new THREE.CatmullRomCurve3( + [new THREE.Vector3(0, 0, -0.5), new THREE.Vector3(0, 0, 0.5)], + false, // 闭合曲线 + 'catmullrom', + 0 + ) + // 挤出几何图形 参数 + const options = { + steps: 1, + bevelEnabled: false, + extrudePath: curve // 设置挤出轨迹 + } + // 创建挤出几何体 + const geometry = new THREE.ExtrudeGeometry(shape, options) + + return geometry + } + + createRailwayMaterial(): THREE.Material { + + const material = new THREE.MeshPhongMaterial() + material.color.setHex(this.shuttleRailwayColor, 'srgb') + material.specular.setHex(0xff6d6d6d, 'srgb') + material.transparent = true + material.needsUpdate = true + + return material + } + + createShuttleRack(item: ItemJson, option?: RendererCudOption): InstancedMesh[] { + if (!item.dt.bays || !item.dt.aisles) { + system.showErrorDialog('RackRenderer field bays / aisles is null!') + return null + } + + const shuttleRackPoint = { + x: item.tf[0][0], + y: item.tf[0][1], + z: item.tf[0][2] + } + + const shuttleRackWidth = decimalSumBy(item.dt.bays, (b: any) => b.bayWidth) + decimalSumBy(item.dt.bayRail, (b: any) => b.railWidth) + + const shuttleRackDepth = decimalSumBy(item.dt.aisles, (b: any) => b.rail.railWidth) + + decimalSumBy(item.dt.aisles, (b: any) => decimalSumBy(b.railLeft.stores, (b: any) => b.depth)) + + decimalSumBy(item.dt.aisles, (b: any) => decimalSumBy(b.railRight.stores, (b: any) => b.depth)) + + const rackHeight = 1 + + // 计算立住坐标点和长度 + const vBarMatrix: { x: number, y: number, z: number, sx: number, sy: number, sz: number, rx: number, ry: number, rz: number, l: number }[] = [] + + // 计算 + const linkBarMatrix: { x: number, y: number, z: number, sx: number, sy: number, sz: number, rx: number, ry: number, rz: number, l: number }[] = [] + + const hBarMatrix: { x: number, y: number, z: number, sx: number, sy: number, sz: number, rx: number, ry: number, rz: number, l: number }[] = [] + + const plateMatrix: { x: number, y: number, z: number, sx: number, sy: number, sz: number, rx: number, ry: number, rz: number, l: number, depth: number}[] = [] + + const railwayMatrix: { x: number, y: number, z: number, sx: number, sy: number, sz: number, rx: number, ry: number, rz: number, l: number }[] = [] + + let distanceX = 0, distanceY = this.bottomBarHeight, distanceZ = 0 + + for (let i = -1; i < item.dt.bays.length; i++) { + distanceZ = 0 + if (i >= 0) { + const bayRail = _.find(item.dt.bayRail, (b: any) => {return b.afterBay == i}) + + if (bayRail) { + distanceX += bayRail.railWidth + for (let j = 0; j < item.dt.aisles.length; j++) { + const aisle = item.dt.aisles[j] + let rackDepth = decimalSumBy(aisle.railLeft.stores, (b: any) => b.depth) + + distanceZ += rackDepth + if (j == 0) { + vBarMatrix.push({ + x: distanceX - shuttleRackWidth/2, + y: 0, + z: distanceZ - rackDepth - shuttleRackDepth/2, + sx: 0.8, + sy: 1, + sz: 1, + rx: 0, + ry: Math.PI / 2, + rz: 0, + l: rackHeight + }) + } + vBarMatrix.push({ + x: distanceX - shuttleRackWidth/2, + y: 0, + z: distanceZ - shuttleRackDepth/2, + sx: 0.8, + sy: 1, + sz: 1, + rx: 0, + ry: -Math.PI / 2, + rz: 0, + l: rackHeight + }) + linkBarMatrix.push({ + x: distanceX - shuttleRackWidth/2, + y: 0, + z: i % 2 == 0 ? (distanceZ - shuttleRackDepth/2) : (distanceZ - rackDepth - shuttleRackDepth/2), + sx: 1, + sy: 1, + sz: 1, + rx: 0, + ry: i % 2 == 0 ? Math.PI : 0, + rz: 0, + l: rackHeight + }) + + + + distanceZ += aisle.rail.railWidth + + rackDepth = decimalSumBy(aisle.railRight.stores, (b: any) => b.depth) + distanceZ += rackDepth + vBarMatrix.push({ + x: distanceX - shuttleRackWidth/2, + y: 0, + z: distanceZ - rackDepth - shuttleRackDepth/2, + sx: 0.8, + sy: 1, + sz: 1, + rx: 0, + ry: Math.PI / 2, + rz: 0, + l: rackHeight + }) + vBarMatrix.push({ + x: distanceX - shuttleRackWidth/2, + y: 0, + z: distanceZ - shuttleRackDepth/2, + sx: 0.8, + sy: 1, + sz: 1, + rx: 0, + ry: -Math.PI / 2, + rz: 0, + l: rackHeight + }) + linkBarMatrix.push({ + x: distanceX - shuttleRackWidth/2, + y: 0, + z: i % 2 == 0 ? (distanceZ - shuttleRackDepth/2) : (distanceZ - rackDepth - shuttleRackDepth/2), + sx: 1, + sy: 1, + sz: 1, + rx: 0, + ry: i % 2 == 0 ? Math.PI : 0, + rz: 0, + l: rackHeight + }) + + } + + railwayMatrix.push({ + x: distanceX - bayRail.railWidth - shuttleRackWidth/2 + 0.075, + y: 0.1, + z: distanceZ - shuttleRackDepth, + sx: 1, + sy: 1, + sz: shuttleRackDepth, + rx: 0, + ry: 0, + rz: 0, + l: rackHeight + }) + railwayMatrix.push({ + x: distanceX - shuttleRackWidth/2 - 0.075, + y: 0.1, + z: distanceZ - shuttleRackDepth, + sx: 1, + sy: 1, + sz: shuttleRackDepth, + rx: 0, + ry: 0, + rz: 0, + l: rackHeight + }) + + } + const bay = item.dt.bays[i] + distanceX += bay.bayWidth + } + distanceZ = 0 + for (let j = 0; j < item.dt.aisles.length; j++) { + const aisle = item.dt.aisles[j] + let rackDepth = decimalSumBy(aisle.railLeft.stores, (b: any) => b.depth) + + distanceZ += rackDepth + if (j == 0) { + vBarMatrix.push({ + x: distanceX - shuttleRackWidth/2, + y: 0, + z: distanceZ - rackDepth - shuttleRackDepth/2, + sx: 0.8, + sy: 1, + sz: 1, + rx: 0, + ry: Math.PI / 2, + rz: 0, + l: rackHeight + }) + } + vBarMatrix.push({ + x: distanceX - shuttleRackWidth/2, + y: 0, + z: distanceZ - shuttleRackDepth/2, + sx: 0.8, + sy: 1, + sz: 1, + rx: 0, + ry: -Math.PI / 2, + rz: 0, + l: rackHeight + }) + linkBarMatrix.push({ + x: distanceX - shuttleRackWidth/2, + y: 0, + z: i % 2 == 0 ? (distanceZ - shuttleRackDepth/2) : (distanceZ - rackDepth - shuttleRackDepth/2), + sx: 1, + sy: 1, + sz: 1, + rx: 0, + ry: i % 2 == 0 ? Math.PI : 0, + rz: 0, + l: rackHeight + }) + if (i >= 0) { + const bay = item.dt.bays[i] + if (j == 0) { + hBarMatrix.push({ + x: distanceX - bay.bayWidth - shuttleRackWidth / 2, + y: distanceY, + z: distanceZ - rackDepth - shuttleRackDepth / 2, + sx: 1, + sy: 0.8, + sz: 1, + rx: Math.PI / 2, + ry: 0, + rz: 0, + l: bay.bayWidth + }) + } + hBarMatrix.push({ + x: distanceX - bay.bayWidth- shuttleRackWidth / 2, + y: distanceY, + z: distanceZ - shuttleRackDepth / 2, + sx: 1, + sy: 0.8, + sz: 1, + rx: -Math.PI / 2, + ry: 0, + rz: 0, + l: bay.bayWidth + }) + plateMatrix.push({ + x: distanceX - bay.bayWidth - shuttleRackWidth / 2, + y: distanceY, + z: distanceZ - rackDepth - shuttleRackDepth / 2, + sx: bay.bayWidth, + sy: rackDepth, + sz: 1, + rx: Math.PI / 2, + ry: 0, + rz: 0, + l: bay.bayWidth, + depth: rackDepth + }) + + if (i == item.dt.bays.length - 1) { + railwayMatrix.push({ + x: 0, + y: 0.1, + z: distanceZ - shuttleRackDepth / 2 + 0.075, + sx: 1, + sy: 1, + sz: shuttleRackWidth, + rx: 0, + ry: Math.PI/2, + rz: 0, + l: rackHeight + }) + railwayMatrix.push({ + x: 0, + y: 0.1, + z: distanceZ + aisle.rail.railWidth - shuttleRackDepth / 2 - 0.075, + sx: 1, + sy: 1, + sz: shuttleRackWidth, + rx: 0, + ry: Math.PI/2, + rz: 0, + l: rackHeight + }) + } + + } + + distanceZ += aisle.rail.railWidth + + rackDepth = decimalSumBy(aisle.railRight.stores, (b: any) => b.depth) + distanceZ += rackDepth + vBarMatrix.push({ + x: distanceX - shuttleRackWidth/2, + y: 0, + z: distanceZ - rackDepth - shuttleRackDepth/2, + sx: 0.8, + sy: 1, + sz: 1, + rx: 0, + ry: Math.PI / 2, + rz: 0, + l: rackHeight + }) + vBarMatrix.push({ + x: distanceX - shuttleRackWidth/2, + y: 0, + z: distanceZ - shuttleRackDepth/2, + sx: 0.8, + sy: 1, + sz: 1, + rx: 0, + ry: -Math.PI / 2, + rz: 0, + l: rackHeight + }) + linkBarMatrix.push({ + x: distanceX - shuttleRackWidth/2, + y: 0, + z: i % 2 == 0 ? (distanceZ - shuttleRackDepth/2) : (distanceZ - rackDepth - shuttleRackDepth/2), + sx: 1, + sy: 1, + sz: 1, + rx: 0, + ry: i % 2 == 0 ? Math.PI : 0, + rz: 0, + l: rackHeight + }) + if (i >= 0) { + const bay = item.dt.bays[i] + hBarMatrix.push({ + x: distanceX - bay.bayWidth - shuttleRackWidth / 2, + y: distanceY, + z: distanceZ - rackDepth - shuttleRackDepth / 2, + sx: 1, + sy: 0.8, + sz: 1, + rx: Math.PI / 2, + ry: 0, + rz: 0, + l: bay.bayWidth + }) + hBarMatrix.push({ + x: distanceX - bay.bayWidth- shuttleRackWidth / 2, + y: distanceY, + z: distanceZ - shuttleRackDepth / 2, + sx: 1, + sy: 0.8, + sz: 1, + rx: -Math.PI / 2, + ry: 0, + rz: 0, + l: bay.bayWidth + }) + plateMatrix.push({ + x: distanceX - bay.bayWidth - shuttleRackWidth / 2, + y: distanceY, + z: distanceZ - rackDepth - shuttleRackDepth / 2, + sx: bay.bayWidth, + sy: rackDepth, + sz: 1, + rx: Math.PI / 2, + ry: 0, + rz: 0, + l: bay.bayWidth, + depth: rackDepth + }) + } + + } + } + // 计算横梁数量 + + const meshes: InstancedMesh[] = [] + + if (vBarMatrix.length > 0) { + if (!this.shuttleRackVerticalBarGeometry) { + this.shuttleRackVerticalBarGeometry = this.createVerticalBar(vBarMatrix[0].x, vBarMatrix[0].y, vBarMatrix[0].z, vBarMatrix[0].l) + } + if (!this.shuttleRackVerticalBarMaterial) { + this.shuttleRackVerticalBarMaterial = this.createVerticalBarMaterial() + } + const dummy = new THREE.Object3D() + const vBarMesh = new THREE.InstancedMesh(this.shuttleRackVerticalBarGeometry, this.shuttleRackVerticalBarMaterial, vBarMatrix.length) + for (let i = 0; i < vBarMatrix.length; i++) { + const vp = vBarMatrix[i] + dummy.position.set(vp.x, vp.y, vp.z) + dummy.rotation.set(vp.rx, vp.ry, vp.rz) + dummy.scale.set(vp.sx, vp.sy, vp.sz) + dummy.updateMatrix() + vBarMesh.setMatrixAt(i, dummy.matrix) + } + meshes.push(vBarMesh) + } + + if (linkBarMatrix.length > 0) { + if (!this.shuttleRackLinkBarGeometry) { + this.shuttleRackLinkBarGeometry = this.createLinkBar(linkBarMatrix[0].x, linkBarMatrix[0].y, linkBarMatrix[0].z, linkBarMatrix[0].l, 1.5, this.bottomLinkHeight, 0.2) + } + if (!this.shuttleRackLinkBarMaterial) { + this.shuttleRackLinkBarMaterial = this.createLinkBarMaterial() + } + const dummy = new THREE.Object3D() + const linkBarMesh = new THREE.InstancedMesh(this.shuttleRackLinkBarGeometry, this.shuttleRackLinkBarMaterial, linkBarMatrix.length) + for (let i = 0; i < linkBarMatrix.length; i++) { + const lp = linkBarMatrix[i] + dummy.position.set(lp.x, lp.y, lp.z) + dummy.rotation.set(lp.rx, lp.ry, lp.rz) + dummy.scale.set(lp.sx, lp.sy, lp.sz) + dummy.updateMatrix() + linkBarMesh.setMatrixAt(i, dummy.matrix) + } + meshes.push(linkBarMesh) + } + + if (hBarMatrix.length > 0) { + if (!this.shuttleRackHorizontalBarGeometry) { + this.shuttleRackHorizontalBarGeometry = this.createHorizontalBar(hBarMatrix[0].x, hBarMatrix[0].y, hBarMatrix[0].z, hBarMatrix[0].l) + } + if (!this.shuttleRackHorizontalBarMaterial) { + this.shuttleRackHorizontalBarMaterial = this.createHorizontalBarMaterial() + } + const dummy = new THREE.Object3D() + const hBarMesh = new THREE.InstancedMesh(this.shuttleRackHorizontalBarGeometry, this.shuttleRackHorizontalBarMaterial, hBarMatrix.length) + for (let i = 0; i < hBarMatrix.length; i++) { + const hp = hBarMatrix[i] + dummy.position.set(hp.x, hp.y, hp.z) + dummy.rotation.set(hp.rx, hp.ry, hp.rz) + dummy.scale.set(hp.sx, hp.sy, hp.sz) + dummy.updateMatrix() + hBarMesh.setMatrixAt(i, dummy.matrix) + } + meshes.push(hBarMesh) + } + + if (plateMatrix.length > 0) { + + if (!this.shuttleRackPlateGeometry) { + this.shuttleRackPlateGeometry = this.createPlate(plateMatrix[0].x, plateMatrix[0].y, plateMatrix[0].z, false) + } + if (!this.shuttleRackPlateMaterial) { + this.shuttleRackPlateMaterial = this.createPlateMaterial() + } + const dummy = new THREE.Object3D() + const plateMesh = new THREE.InstancedMesh(this.shuttleRackPlateGeometry, this.shuttleRackPlateMaterial, plateMatrix.length) + for (let i = 0; i < plateMatrix.length; i++) { + const hp = plateMatrix[i] + dummy.position.set(hp.x, hp.y, hp.z) + dummy.rotation.set(hp.rx, hp.ry, hp.rz) + dummy.scale.set(hp.sx, hp.sy, hp.sz) + dummy.updateMatrix() + plateMesh.setMatrixAt(i, dummy.matrix) + } + meshes.push(plateMesh) + } + + if (railwayMatrix.length > 0) { + + if (!this.shuttleRailwayGeometry) { + this.shuttleRailwayGeometry = this.createRailway(railwayMatrix[0].x, railwayMatrix[0].y, railwayMatrix[0].z) + } + if (!this.shuttleRailwayMaterial) { + this.shuttleRailwayMaterial = this.createRailwayMaterial() + } + const dummy = new THREE.Object3D() + const railwayMesh = new THREE.InstancedMesh(this.shuttleRailwayGeometry, this.shuttleRailwayMaterial, railwayMatrix.length) + for (let i = 0; i < railwayMatrix.length; i++) { + const hp = railwayMatrix[i] + dummy.position.set(hp.x, hp.y, hp.z) + dummy.rotation.set(hp.rx, hp.ry, hp.rz) + dummy.scale.set(hp.sx, hp.sy, hp.sz) + dummy.updateMatrix() + railwayMesh.setMatrixAt(i, dummy.matrix) + } + meshes.push(railwayMesh) + } + + return meshes + } + + + resetUVs(geometry: THREE.ExtrudeGeometry) { + if (geometry == undefined) return + const pos = geometry.getAttribute('position'), + nor = geometry.getAttribute('normal'), + uvs = geometry.getAttribute('uv') + + for (let i = 0; i < pos.count; i++) { + let x = 0, y = 0 + + const nx = Math.abs(nor.getX(i)), ny = Math.abs(nor.getY(i)), nz = Math.abs(nor.getZ(i)) + + // if facing X + if (nx >= ny && nx >= nz) { + x = pos.getZ(i) + y = pos.getY(i) + } + + // if facing Y + if (ny >= nx && ny >= nz) { + x = pos.getX(i) + y = pos.getZ(i) + } + + // if facing Z + if (nz >= nx && nz >= ny) { + x = pos.getX(i) + y = pos.getY(i) + } + uvs.setXY(i, x, y) + } + } + +} diff --git a/src/modules/shuttle_rack/index.ts b/src/modules/shuttle_rack/index.ts new file mode 100644 index 0000000..95487dd --- /dev/null +++ b/src/modules/shuttle_rack/index.ts @@ -0,0 +1,15 @@ +import { defineModule } from '@/core/manager/ModuleManager.ts' +import ShuttleRackRenderer from './ShuttleRackRenderer.ts' +import ShuttleRackEntity from './ShuttleRackEntity.ts' +import ShuttleRackInteraction from './ShuttleRackInteraction.ts' +import propertySetter from "./ShuttleRackPropertySetter.ts"; + +export const ITEM_TYPE_NAME = 'shuttle_rack' + +export default defineModule({ + name: ITEM_TYPE_NAME, + renderer: new ShuttleRackRenderer(ITEM_TYPE_NAME), + interaction: new ShuttleRackInteraction(ITEM_TYPE_NAME), + setter: propertySetter, + entity: ShuttleRackEntity, +})