From f97ee12c96d96e2f529e4248695d643245ec4243 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期二, 20 八月 2024 15:21:56 +0800 Subject: [PATCH] # --- /dev/null | 0 src/components/path.jsx | 70 +++++++++++++++++++++++++++++++++++ src/config/setting.js | 2 + public/models/agv/fork.fbx | 0 public/models/agv/loader.fbx | 0 src/core/warehouse.jsx | 17 ++++++++ src/components/agv.jsx | 4 ++ public/models/agv/body.fbx | 0 8 files changed, 93 insertions(+), 0 deletions(-) diff --git a/public/models/agv/aa/SE-1.FBX b/public/models/agv/aa/SE-1.FBX deleted file mode 100644 index 32d9c48..0000000 --- a/public/models/agv/aa/SE-1.FBX +++ /dev/null Binary files differ diff --git a/public/models/agv/aa/SE-2.FBX b/public/models/agv/aa/SE-2.FBX deleted file mode 100644 index 4afb581..0000000 --- a/public/models/agv/aa/SE-2.FBX +++ /dev/null Binary files differ diff --git a/public/models/agv/aa/SE-3.FBX b/public/models/agv/aa/SE-3.FBX deleted file mode 100644 index ff3e21d..0000000 --- a/public/models/agv/aa/SE-3.FBX +++ /dev/null Binary files differ diff --git a/public/models/agv/body.fbx b/public/models/agv/body.fbx index 0c4f0f2..618f057 100644 --- a/public/models/agv/body.fbx +++ b/public/models/agv/body.fbx Binary files differ diff --git a/public/models/agv/fork.fbx b/public/models/agv/fork.fbx index 401934d..05a3597 100644 --- a/public/models/agv/fork.fbx +++ b/public/models/agv/fork.fbx Binary files differ diff --git a/public/models/agv/loader.fbx b/public/models/agv/loader.fbx index 5754224..15f3ac3 100644 --- a/public/models/agv/loader.fbx +++ b/public/models/agv/loader.fbx Binary files differ diff --git a/src/components/agv.jsx b/src/components/agv.jsx index 73e1d51..856455b 100644 --- a/src/components/agv.jsx +++ b/src/components/agv.jsx @@ -9,6 +9,7 @@ import { INTERVAL_TIME, MODEL_AGV_SCALE, + MODEL_AGV_COLOR, REAL_COMPARE_MAP_SCALE, REAL_COMPARE_MAP_OFFSET_X, REAL_COMPARE_MAP_OFFSET_Z, @@ -276,6 +277,7 @@ const fbx = useFBX('/models/agv/body.fbx'); if (!fbx.castShadow) { Common.setShadow(fbx); + Common.setColor(fbx, MODEL_AGV_COLOR); } fbx.scale.set(MODEL_AGV_SCALE, MODEL_AGV_SCALE * 0.97, MODEL_AGV_SCALE); return fbx.clone(); @@ -285,6 +287,7 @@ const fbx = useFBX('/models/agv/loader.fbx'); if (!fbx.castShadow) { Common.setShadow(fbx); + Common.setColor(fbx, MODEL_AGV_COLOR); } fbx.scale.set(MODEL_AGV_SCALE, MODEL_AGV_SCALE, MODEL_AGV_SCALE); return fbx.clone(); @@ -294,6 +297,7 @@ const fbx = useFBX('/models/agv/fork.fbx'); if (!fbx.castShadow) { Common.setShadow(fbx); + Common.setColor(fbx, MODEL_AGV_COLOR); } fbx.scale.set(MODEL_AGV_SCALE, MODEL_AGV_SCALE, MODEL_AGV_SCALE); return fbx.clone(); diff --git a/src/components/path.jsx b/src/components/path.jsx new file mode 100644 index 0000000..dc73bd5 --- /dev/null +++ b/src/components/path.jsx @@ -0,0 +1,70 @@ +import { useState, useMemo, useRef, useEffect } from 'react'; +import { useFrame } from '@react-three/fiber'; +import { useFBX, useAnimations } from '@react-three/drei'; +import * as THREE from 'three'; +import * as Common from '../utils/common'; +import * as TWEEN from "@tweenjs/tween.js"; +import { useStore } from '@/store'; +import { + INTERVAL_TIME, + MODEL_AGV_SCALE, + REAL_COMPARE_MAP_SCALE, + REAL_COMPARE_MAP_OFFSET_X, + REAL_COMPARE_MAP_OFFSET_Z, +} from '../config/setting' + +const width = 20; + +const getMajorPos = (position) => { + return { + x: position?.[2] * REAL_COMPARE_MAP_SCALE + REAL_COMPARE_MAP_OFFSET_X, + y: position?.[1] * REAL_COMPARE_MAP_SCALE, + z: position?.[0] * REAL_COMPARE_MAP_SCALE + REAL_COMPARE_MAP_OFFSET_Z, + } +} + +const Path = (props) => { + const { list } = props; + + const lineRef = useRef(); + + // Convert list of positions to THREE.Vector3 objects + const points = useMemo(() => { + return list.map(item => { + const { x, y, z } = getMajorPos(item.position); + return new THREE.Vector3(x, y, z); + }); + }, [list]); + + useEffect(() => { + if (lineRef.current) { + lineRef.current.geometry.setFromPoints(points); + } + console.log(points); + + }, [points]); + + useEffect(() => { + console.log(JSON.stringify(props.list)); + //[{"code":"00000052","position":[4961,0,2420],"serial":6},{"code":"00000053","position":[5491,0,2420],"serial":7},{"code":"00000054","position":[6021,0,2420],"serial":8}] + }, [props]) + + return ( + <> + <group> + {/* <mesh position={} rotation={[]}> + <planeGeometry + args={[width, height]} + ></planeGeometry> + <meshBasicMaterial color="rgb(23,146,247)"></meshBasicMaterial> + </mesh> */} + <line ref={lineRef}> + <bufferGeometry attach="geometry" /> + <lineBasicMaterial attach="material" color="rgb(23,146,247)" linewidth={width} /> + </line> + </group> + </> + ) +} + +export default Path; \ No newline at end of file diff --git a/src/config/setting.js b/src/config/setting.js index 300aaef..b2afd0d 100644 --- a/src/config/setting.js +++ b/src/config/setting.js @@ -18,6 +18,8 @@ export const BATCH_SCALE = 1.3; +export const MODEL_AGV_COLOR = 0x4b4b4b; + export const MODEL_AGV_SCALE = .7; export const MODEL_BOX_SCALE = .7; diff --git a/src/core/warehouse.jsx b/src/core/warehouse.jsx index b37c8ae..b8af939 100644 --- a/src/core/warehouse.jsx +++ b/src/core/warehouse.jsx @@ -7,6 +7,7 @@ import Shelf from '../components/shelf'; import Box from '../components/box'; import Agv from '../components/agv'; +import Path from '../components/path' import tunnelData from '@/assets/data/tunnel'; import areaData from '@/assets/data/area'; @@ -23,6 +24,7 @@ const [agv1Data, setAgv1Data] = useState({}); const [agv2Data, setAgv2Data] = useState({}); const [boxData, setBoxData] = useState([]); + const [path1Data, setPath1Data] = useState([]); useEffect(() => { const websocket = new WebSocketClient('/ws/digitalTwin/websocket'); @@ -36,6 +38,17 @@ break; case "2": setAgv2Data(data.obj); + break; + default: + break; + } + } + if (data.type === 'path') { + switch (data.no) { + case "1": + setPath1Data(data.obj); + break; + case "2": break; default: break; @@ -93,6 +106,9 @@ return <Agv key={2} {...agv2Data} /> }, [agv2Data]); + const path1El = useMemo(() => { + return <Path list={path1Data} /> + }, [path1Data]) useFrame((state, delta) => { @@ -107,6 +123,7 @@ {agv1El} {agv2El} {boxEl} + {path1El} </group> </> ) -- Gitblit v1.9.1