| | |
| | | [ |
| | | { |
| | | no: 1, |
| | | position: [0, 0, 0], |
| | | position: [3300, 0, 100], |
| | | theta: 0, |
| | | height: 0, |
| | | height: 2320, |
| | | loaderTheta: 0, |
| | | forkLength: 0, |
| | | forkLength: -500, |
| | | trayList: [ |
| | | { |
| | | no: 1, |
| | |
| | | hasBox: false |
| | | }, |
| | | ], |
| | | hasBox: false |
| | | hasBox: true, |
| | | finger1: true, |
| | | finger2: true, |
| | | finger3: true, |
| | | finger4: true, |
| | | } |
| | | ], |
| | | [ |
| | |
| | | const Agv = (props) => { |
| | | const { agvNo, position, trayList, hasBox, finger1, finger2, finger3, finger4 } = props; |
| | | const theta = -props.theta; |
| | | const height = props.height * 0.06; |
| | | const height = props.height * 0.0655; |
| | | const forkLength = props.forkLength * 0.1; |
| | | // console.log(props.forkLength); |
| | | const loaderTheta = Number(props.loaderTheta?.toFixed(1)); |
| | | |
| | | const [groupPos, setGroupPos] = useState({ x: 0, y: 0, z: 0 }); |
| | |
| | | if (!fbx.castShadow) { |
| | | Common.setShadow(fbx); |
| | | } |
| | | fbx.scale.set(MODEL_AGV_SCALE, MODEL_AGV_SCALE, MODEL_AGV_SCALE); |
| | | fbx.scale.set(MODEL_AGV_SCALE, MODEL_AGV_SCALE * 0.97, MODEL_AGV_SCALE); |
| | | return fbx.clone(); |
| | | }, []) |
| | | |
| | |
| | | position-y={loaderHeight} |
| | | rotation-y={Common.rotationParseNum(loaderAngle)} |
| | | > |
| | | <primitive object={loaderModel} castShadow position={[0, 20, 0]} /> |
| | | <primitive object={loaderModel} castShadow position={[0, 0, 0]} /> |
| | | <group position-z={forkDis}> |
| | | <primitive object={forkModel} castShadow position={[0, 25, 0]} /> |
| | | {(hasBox || getLoaderHasBox(loaderAngle, finger1, finger2, finger3, finger4)) && <Box position={[0, 26, 0]} />} |
| | | <primitive object={forkModel} castShadow position={[0, 6, 0]} /> |
| | | {(hasBox || getLoaderHasBox(loaderAngle, finger1, finger2, finger3, finger4)) && <Box position={[0, 6, 0]} />} |
| | | </group> |
| | | </group> |
| | | <group> |