From b1a6ae4f052409d0c4c3a846bfad1a9b24a2c696 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期二, 23 四月 2024 13:30:31 +0800 Subject: [PATCH] # --- src/assets/data/agv.js | 72 +++++++++++++++++++++++++++++++++--- src/config/setting.js | 4 + src/components/agv.jsx | 39 +++++++++++++------ 3 files changed, 95 insertions(+), 20 deletions(-) diff --git a/src/assets/data/agv.js b/src/assets/data/agv.js index affd012..6e3c479 100644 --- a/src/assets/data/agv.js +++ b/src/assets/data/agv.js @@ -4,7 +4,7 @@ no: 1, position: [0, 0, 0], theta: 0, - height: 100, + height: 0, loaderTheta: 180, forkLength: 0, trayList: [], @@ -16,7 +16,7 @@ no: 1, position: [100, 0, 0], theta: 0, - height: 100, + height: 0, loaderTheta: 180, forkLength: 0, trayList: [], @@ -28,7 +28,7 @@ no: 1, position: [100, 0, 0], theta: 270, - height: 100, + height: 0, loaderTheta: 180, forkLength: 0, trayList: [], @@ -40,7 +40,7 @@ no: 1, position: [100, 0, 200], theta: 90, - height: 200, + height: 100, loaderTheta: 180, forkLength: 0, trayList: [], @@ -52,7 +52,7 @@ no: 1, position: [100, 0, 300], theta: 90, - height: 300, + height: 150, loaderTheta: 180, forkLength: 0, trayList: [], @@ -64,11 +64,71 @@ no: 1, position: [100, 0, 400], theta: 90, - height: 400, + height: 200, loaderTheta: 180, forkLength: 0, trayList: [], hasBox: false } ], + [ + { + no: 1, + position: [100, 0, 400], + theta: 180, + height: 100, + loaderTheta: 180, + forkLength: 0, + trayList: [], + hasBox: false + } + ], + [ + { + no: 1, + position: [100, 0, 400], + theta: 180, + height: 100, + loaderTheta: 180, + forkLength: 40, + trayList: [], + hasBox: false + } + ], + [ + { + no: 1, + position: [100, 0, 400], + theta: 180, + height: 100, + loaderTheta: 180, + forkLength: 40, + trayList: [], + hasBox: true + } + ], + [ + { + no: 1, + position: [100, 0, 400], + theta: 180, + height: 100, + loaderTheta: 180, + forkLength: 0, + trayList: [], + hasBox: true + } + ], + [ + { + no: 1, + position: [100, 0, 400], + theta: 180, + height: 0, + loaderTheta: 180, + forkLength: 0, + trayList: [], + hasBox: true + } + ], ] \ No newline at end of file diff --git a/src/components/agv.jsx b/src/components/agv.jsx index 89041bb..dfd5ea8 100644 --- a/src/components/agv.jsx +++ b/src/components/agv.jsx @@ -5,7 +5,7 @@ import Box from './box'; import * as Common from '../utils/common'; import * as TWEEN from "@tweenjs/tween.js"; -import { INTERVAL_TIME } from '@/config/setting' +import { INTERVAL_TIME, MODEL_AGV_SCALE } from '@/config/setting' const Agv = (props) => { const { position, theta, height, loaderTheta, forkLength, trayList, hasBox } = props; @@ -13,6 +13,7 @@ const [groupPos, setGroupPos] = useState({ x: 0, y: 0, z: 0 }); const [groupTheta, setGroupTheta] = useState(0); const [loaderHeight, setLoaderHeight] = useState(0); + const [forkDis, setForkDis] = useState(0); useEffect(() => { if (!props || Object.keys(props).length === 0) { @@ -26,11 +27,7 @@ } if (!Common.deepEqual(groupPos, pos)) { new TWEEN.Tween(groupPos) - .to({ - x: position[0], - y: position[1], - z: position[2] - }, INTERVAL_TIME) + .to(pos, INTERVAL_TIME) .easing(TWEEN.Easing.Linear.None) .onUpdate((e) => { setGroupPos({ ...e }); @@ -67,6 +64,20 @@ }).start(); } + // fork lenght + if (forkDis !== forkLength) { + new TWEEN.Tween({ value: forkDis }) + .to({ value: forkLength }, INTERVAL_TIME) + .easing(TWEEN.Easing.Linear.None) + .onUpdate((e) => { + setForkDis(e.value) + }) + .onComplete((e) => { + setForkDis(e.value) + console.log(e.value); + }).start(); + } + }, [props]); useFrame((state, delta) => { @@ -78,6 +89,7 @@ if (!fbx.castShadow) { Common.setShadow(fbx); } + fbx.scale.set(MODEL_AGV_SCALE, MODEL_AGV_SCALE, MODEL_AGV_SCALE); return fbx.clone(); }, []) @@ -86,6 +98,7 @@ if (!fbx.castShadow) { Common.setShadow(fbx); } + fbx.scale.set(MODEL_AGV_SCALE, MODEL_AGV_SCALE, MODEL_AGV_SCALE); return fbx.clone(); }, []) @@ -94,6 +107,7 @@ if (!fbx.castShadow) { Common.setShadow(fbx); } + fbx.scale.set(MODEL_AGV_SCALE, MODEL_AGV_SCALE, MODEL_AGV_SCALE); return fbx.clone(); }, []) @@ -101,16 +115,15 @@ <> <group rotation-y={Common.rotationParseNum(groupTheta)} - scale={0.5} position={[groupPos.x, groupPos.y, groupPos.z]} > <primitive object={bodyModel} castShadow /> - <group - position-y={loaderHeight} - > - <primitive object={loaderModel} castShadow position={[0, 50, 0]} /> - <primitive object={forkModel} castShadow position={[0, 61, 0]} /> - <Box position={[100, 100, 300]} /> + <group position-y={loaderHeight}> + <primitive object={loaderModel} castShadow position={[0, 30, 0]} /> + <group position-z={forkDis}> + <primitive object={forkModel} castShadow position={[0, 35, 0]} /> + {hasBox && <Box position={[0, 34, 0]} />} + </group> </group> </group> </> diff --git a/src/config/setting.js b/src/config/setting.js index 7a49028..c3424c8 100644 --- a/src/config/setting.js +++ b/src/config/setting.js @@ -6,4 +6,6 @@ export const DEBUG = false; -export const INTERVAL_TIME = 1500; +export const INTERVAL_TIME = 500; + +export const MODEL_AGV_SCALE = .5; -- Gitblit v1.9.1