From ac3a17007eba343238d4b8916e46d64c58b0db9c Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期二, 23 四月 2024 14:17:12 +0800 Subject: [PATCH] # --- src/assets/data/agv.js | 432 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- src/components/box.jsx | 31 --- src/config/setting.js | 2 src/components/agv.jsx | 11 + 4 files changed, 433 insertions(+), 43 deletions(-) diff --git a/src/assets/data/agv.js b/src/assets/data/agv.js index 76c06ed..49bc8a5 100644 --- a/src/assets/data/agv.js +++ b/src/assets/data/agv.js @@ -7,7 +7,32 @@ height: 0, loaderTheta: 0, forkLength: 0, - trayList: [], + trayList: [ + { + no: 1, + hasBox: false + }, + { + no: 2, + hasBox: false + }, + { + no: 3, + hasBox: false + }, + { + no: 4, + hasBox: false + }, + { + no: 5, + hasBox: false + }, + { + no: 6, + hasBox: false + }, + ], hasBox: false } ], @@ -19,7 +44,32 @@ height: 0, loaderTheta: 0, forkLength: 0, - trayList: [], + trayList: [ + { + no: 1, + hasBox: false + }, + { + no: 2, + hasBox: false + }, + { + no: 3, + hasBox: false + }, + { + no: 4, + hasBox: false + }, + { + no: 5, + hasBox: false + }, + { + no: 6, + hasBox: false + }, + ], hasBox: false } ], @@ -31,7 +81,32 @@ height: 0, loaderTheta: 0, forkLength: 0, - trayList: [], + trayList: [ + { + no: 1, + hasBox: false + }, + { + no: 2, + hasBox: false + }, + { + no: 3, + hasBox: false + }, + { + no: 4, + hasBox: false + }, + { + no: 5, + hasBox: false + }, + { + no: 6, + hasBox: false + }, + ], hasBox: false } ], @@ -43,7 +118,32 @@ height: 100, loaderTheta: 0, forkLength: 0, - trayList: [], + trayList: [ + { + no: 1, + hasBox: false + }, + { + no: 2, + hasBox: false + }, + { + no: 3, + hasBox: false + }, + { + no: 4, + hasBox: false + }, + { + no: 5, + hasBox: false + }, + { + no: 6, + hasBox: false + }, + ], hasBox: false } ], @@ -55,7 +155,32 @@ height: 150, loaderTheta: 0, forkLength: 0, - trayList: [], + trayList: [ + { + no: 1, + hasBox: false + }, + { + no: 2, + hasBox: false + }, + { + no: 3, + hasBox: false + }, + { + no: 4, + hasBox: false + }, + { + no: 5, + hasBox: false + }, + { + no: 6, + hasBox: false + }, + ], hasBox: false } ], @@ -67,7 +192,32 @@ height: 200, loaderTheta: 0, forkLength: 0, - trayList: [], + trayList: [ + { + no: 1, + hasBox: false + }, + { + no: 2, + hasBox: false + }, + { + no: 3, + hasBox: false + }, + { + no: 4, + hasBox: false + }, + { + no: 5, + hasBox: false + }, + { + no: 6, + hasBox: false + }, + ], hasBox: false } ], @@ -79,7 +229,32 @@ height: 100, loaderTheta: 0, forkLength: 0, - trayList: [], + trayList: [ + { + no: 1, + hasBox: false + }, + { + no: 2, + hasBox: false + }, + { + no: 3, + hasBox: false + }, + { + no: 4, + hasBox: false + }, + { + no: 5, + hasBox: false + }, + { + no: 6, + hasBox: false + }, + ], hasBox: false } ], @@ -91,7 +266,32 @@ height: 100, loaderTheta: 0, forkLength: 40, - trayList: [], + trayList: [ + { + no: 1, + hasBox: false + }, + { + no: 2, + hasBox: false + }, + { + no: 3, + hasBox: false + }, + { + no: 4, + hasBox: false + }, + { + no: 5, + hasBox: false + }, + { + no: 6, + hasBox: false + }, + ], hasBox: false } ], @@ -103,7 +303,32 @@ height: 100, loaderTheta: 0, forkLength: 40, - trayList: [], + trayList: [ + { + no: 1, + hasBox: false + }, + { + no: 2, + hasBox: false + }, + { + no: 3, + hasBox: false + }, + { + no: 4, + hasBox: false + }, + { + no: 5, + hasBox: false + }, + { + no: 6, + hasBox: false + }, + ], hasBox: true } ], @@ -115,7 +340,32 @@ height: 100, loaderTheta: 0, forkLength: 0, - trayList: [], + trayList: [ + { + no: 1, + hasBox: false + }, + { + no: 2, + hasBox: false + }, + { + no: 3, + hasBox: false + }, + { + no: 4, + hasBox: false + }, + { + no: 5, + hasBox: false + }, + { + no: 6, + hasBox: false + }, + ], hasBox: true } ], @@ -127,7 +377,32 @@ height: 0, loaderTheta: 0, forkLength: 0, - trayList: [], + trayList: [ + { + no: 1, + hasBox: false + }, + { + no: 2, + hasBox: false + }, + { + no: 3, + hasBox: false + }, + { + no: 4, + hasBox: false + }, + { + no: 5, + hasBox: false + }, + { + no: 6, + hasBox: false + }, + ], hasBox: true } ], @@ -139,7 +414,32 @@ height: 0, loaderTheta: 270, forkLength: 0, - trayList: [], + trayList: [ + { + no: 1, + hasBox: false + }, + { + no: 2, + hasBox: false + }, + { + no: 3, + hasBox: false + }, + { + no: 4, + hasBox: false + }, + { + no: 5, + hasBox: false + }, + { + no: 6, + hasBox: false + }, + ], hasBox: true } ], @@ -151,7 +451,32 @@ height: 0, loaderTheta: 270, forkLength: 40, - trayList: [], + trayList: [ + { + no: 1, + hasBox: false + }, + { + no: 2, + hasBox: false + }, + { + no: 3, + hasBox: false + }, + { + no: 4, + hasBox: false + }, + { + no: 5, + hasBox: false + }, + { + no: 6, + hasBox: false + }, + ], hasBox: true } ], @@ -163,7 +488,32 @@ height: 0, loaderTheta: 270, forkLength: 40, - trayList: [], + trayList: [ + { + no: 1, + hasBox: true + }, + { + no: 2, + hasBox: false + }, + { + no: 3, + hasBox: false + }, + { + no: 4, + hasBox: false + }, + { + no: 5, + hasBox: false + }, + { + no: 6, + hasBox: false + }, + ], hasBox: false } ], @@ -175,7 +525,32 @@ height: 0, loaderTheta: 270, forkLength: 0, - trayList: [], + trayList: [ + { + no: 1, + hasBox: true + }, + { + no: 2, + hasBox: false + }, + { + no: 3, + hasBox: false + }, + { + no: 4, + hasBox: false + }, + { + no: 5, + hasBox: false + }, + { + no: 6, + hasBox: false + }, + ], hasBox: false } ], @@ -187,7 +562,32 @@ height: 0, loaderTheta: 0, forkLength: 0, - trayList: [], + trayList: [ + { + no: 1, + hasBox: true + }, + { + no: 2, + hasBox: true + }, + { + no: 3, + hasBox: true + }, + { + no: 4, + hasBox: true + }, + { + no: 5, + hasBox: true + }, + { + no: 6, + hasBox: true + }, + ], hasBox: false } ], diff --git a/src/components/agv.jsx b/src/components/agv.jsx index 31e88be..bb7e222 100644 --- a/src/components/agv.jsx +++ b/src/components/agv.jsx @@ -20,6 +20,7 @@ if (!props || Object.keys(props).length === 0) { return; } + // group position const pos = { x: position?.[0], @@ -67,9 +68,7 @@ // loader theta if (integrateTheta !== loaderTheta) { - console.log(integrateTheta, loaderTheta); const minTheta = Common.minDiffTheta(integrateTheta, loaderTheta); - console.log(minTheta); new TWEEN.Tween({ value: integrateTheta }) .to({ value: minTheta }, INTERVAL_TIME) .easing(TWEEN.Easing.Linear.None) @@ -144,6 +143,14 @@ {hasBox && <Box position={[0, 24, 0]} />} </group> </group> + <group> + {trayList?.[0]?.hasBox && <Box rotationY={Math.PI / 2} position={[-43, 25, 0]} />} + {trayList?.[1]?.hasBox && <Box rotationY={Math.PI / 2} position={[-43, 48, 0]} />} + {trayList?.[2]?.hasBox && <Box rotationY={Math.PI / 2} position={[-43, 71, 0]} />} + {trayList?.[3]?.hasBox && <Box rotationY={Math.PI / 2} position={[-43, 94, 0]} />} + {trayList?.[4]?.hasBox && <Box rotationY={Math.PI / 2} position={[-43, 117, 0]} />} + {trayList?.[5]?.hasBox && <Box rotationY={Math.PI / 2} position={[-43, 140, 0]} />} + </group> </group> </> ) diff --git a/src/components/box.jsx b/src/components/box.jsx index 5ca3bba..69b0481 100644 --- a/src/components/box.jsx +++ b/src/components/box.jsx @@ -2,37 +2,18 @@ import { useFrame } from '@react-three/fiber'; import { useFBX, useAnimations } from '@react-three/drei'; import * as THREE from 'three'; - -const setShadow = (obj) => { - obj.castShadow = true; - obj.receiveShadow = true; - - if (obj.children) { - obj.children.forEach((child) => { - setShadow(child); - }); - } -}; - -const setColor = (obj) => { - if (obj.material) { - obj.material.color.set(0x4680BF); - } - if (obj.children) { - obj.children.forEach((child) => { - setColor(child); - }); - } -}; +import { MODEL_BOX_SCALE } from '@/config/setting' +import * as Common from '../utils/common'; const Box = (props) => { - const { position = [0, 300, 0] } = props; + const { position = [0, 300, 0], rotationY = 0 } = props; const boxModel = useMemo(() => { const fbx = useFBX('/models/box/box.fbx'); if (!fbx.castShadow) { - setShadow(fbx); + Common.setShadow(fbx); } + fbx.scale.set(MODEL_BOX_SCALE, MODEL_BOX_SCALE, MODEL_BOX_SCALE); return fbx.clone(); }, []) @@ -42,7 +23,7 @@ return ( <> - <group rotation={[0, 0, 0]} scale={0.5} position={position}> + <group rotation-y={rotationY} scale={0.5} position={position}> <primitive object={boxModel} castShadow /> </group> </> diff --git a/src/config/setting.js b/src/config/setting.js index c3424c8..94e6d7a 100644 --- a/src/config/setting.js +++ b/src/config/setting.js @@ -9,3 +9,5 @@ export const INTERVAL_TIME = 500; export const MODEL_AGV_SCALE = .5; + +export const MODEL_BOX_SCALE = 1; \ No newline at end of file -- Gitblit v1.9.1