From 794d8a8a7de3bcfad9d6f813a0372bf46a3956eb Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期二, 23 四月 2024 15:25:39 +0800 Subject: [PATCH] # --- src/components/box.jsx | 2 src/config/setting.js | 4 + public/models/shelf/row.glb | 0 src/assets/data/shelf.js | 18 +++++++++ src/core/warehouse.jsx | 16 ++++++-- src/components/shelf.jsx | 31 +++++++++++++++ 6 files changed, 65 insertions(+), 6 deletions(-) diff --git a/public/models/shlef/row.glb b/public/models/shelf/row.glb similarity index 100% rename from public/models/shlef/row.glb rename to public/models/shelf/row.glb Binary files differ diff --git a/src/assets/data/shelf.js b/src/assets/data/shelf.js new file mode 100644 index 0000000..3b944b5 --- /dev/null +++ b/src/assets/data/shelf.js @@ -0,0 +1,18 @@ +const shelfData = [ + { + x: 200, + y: -1000, + width: 200, + height: 2000, + tunnelNumber: 'T1', + }, + { + x: 200, + y: -50, + width: 1300, + height: 100, + tunnelNumber: 'T2', + }, +]; + +export default shelfData; diff --git a/src/components/box.jsx b/src/components/box.jsx index 69b0481..425e6d5 100644 --- a/src/components/box.jsx +++ b/src/components/box.jsx @@ -23,7 +23,7 @@ return ( <> - <group rotation-y={rotationY} scale={0.5} position={position}> + <group rotation-y={rotationY} position={position}> <primitive object={boxModel} castShadow /> </group> </> diff --git a/src/components/shelf.jsx b/src/components/shelf.jsx new file mode 100644 index 0000000..c084e7c --- /dev/null +++ b/src/components/shelf.jsx @@ -0,0 +1,31 @@ +import { useState, useMemo, useRef, useEffect } from 'react'; +import { useGLTF } from '@react-three/drei'; +import { MODEL_SHELF_SCALE } from '@/config/setting'; +import * as Common from '../utils/common'; + +const Shelf = (props) => { + const { position = [0, 300, 0], rotationY = 0 } = props; + + const model = useMemo(() => { + const fbx = useGLTF('/models/shelf/row.glb'); + if (!fbx.castShadow) { + Common.setShadow(fbx); + } + fbx.scale.set(MODEL_SHELF_SCALE, MODEL_SHELF_SCALE, MODEL_SHELF_SCALE); + return fbx.clone(); + }, []) + + useEffect(() => { + + }, []); + + return ( + <> + <group rotation-y={rotationY} position={position}> + <primitive object={model} castShadow /> + </group> + </> + ) +} + +export default Shelf; \ No newline at end of file diff --git a/src/config/setting.js b/src/config/setting.js index 94e6d7a..b37e7f6 100644 --- a/src/config/setting.js +++ b/src/config/setting.js @@ -10,4 +10,6 @@ export const MODEL_AGV_SCALE = .5; -export const MODEL_BOX_SCALE = 1; \ No newline at end of file +export const MODEL_BOX_SCALE = .5; + +export const MODEL_SHELF_SCALE = 1; \ No newline at end of file diff --git a/src/core/warehouse.jsx b/src/core/warehouse.jsx index 89a95c8..3e5524c 100644 --- a/src/core/warehouse.jsx +++ b/src/core/warehouse.jsx @@ -1,10 +1,13 @@ import { useState, useEffect, useRef, useMemo } from 'react'; import { useFrame } from '@react-three/fiber'; import * as THREE from 'three'; -import Agv from '../components/agv'; -import Box from '../components/box'; -import tunnelData from '../assets/data/tunnel'; import Tunnel from '../components/tunnel'; +import Shelf from '../components/shelf'; +import Box from '../components/box'; +import Agv from '../components/agv'; + +import tunnelData from '@/assets/data/tunnel'; +import shelfData from '@/assets/data/shelf'; import agvRealDataList from '@/assets/data/agv'; import { INTERVAL_TIME } from '@/config/setting' @@ -34,7 +37,11 @@ }, []) const tunnelEl = useMemo(() => { - return tunnelData.map((tunnel, index) => <Tunnel key={index} {...tunnel} />) + return tunnelData.map((data, index) => <Tunnel key={index} {...data} />) + }, []); + + const shelfEl = useMemo(() => { + return shelfData.map((data, index) => <Shelf key={index} {...data} />) }, []); const agvEl = useMemo(() => { @@ -53,6 +60,7 @@ <> <group> {tunnelEl} + {shelfEl} {agvEl} {boxEl} </group> -- Gitblit v1.9.1