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