#
luxiaotao1123
2024-04-23 794d8a8a7de3bcfad9d6f813a0372bf46a3956eb
#
2个文件已添加
1 文件已重命名
3个文件已修改
71 ■■■■■ 已修改文件
public/models/shelf/row.glb 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/data/shelf.js 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/box.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/shelf.jsx 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/config/setting.js 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/core/warehouse.jsx 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/models/shelf/row.glb
Binary files differ
src/assets/data/shelf.js
New file
@@ -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;
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>
        </>
src/components/shelf.jsx
New file
@@ -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;
src/config/setting.js
@@ -10,4 +10,6 @@
export const MODEL_AGV_SCALE = .5;
export const MODEL_BOX_SCALE = 1;
export const MODEL_BOX_SCALE = .5;
export const MODEL_SHELF_SCALE = 1;
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>