import { useGLTF, Float } from '@react-three/drei'; import { useLoader } from '@react-three/fiber'; import { JSX, useMemo } from 'react'; import { useMediaQuery } from 'react-responsive'; import * as THREE from 'three'; import { DRACOLoader, GLTF, GLTFLoader } from 'three-stdlib'; type GLTFResult = GLTF & { nodes: { Object_4: THREE.Mesh; Object_6: THREE.Mesh; Object_8: THREE.Mesh; Object_10: THREE.Mesh; Object_12: THREE.Mesh; Object_14: THREE.Mesh; Object_16: THREE.Mesh; }; materials: { main: THREE.MeshStandardMaterial; material: THREE.MeshStandardMaterial; yellow: THREE.MeshStandardMaterial; blue: THREE.MeshStandardMaterial; glass: THREE.MeshPhysicalMaterial; }; }; const BocchiRubbishBin = (props: JSX.IntrinsicElements['group']) => { const { nodes, materials } = useLoader( GLTFLoader, '/models/bocchi_the_rock-processed.glb', (loader) => { const dracoLoader = new DRACOLoader(); dracoLoader.setDecoderPath('/libs/draco/'); loader.setDRACOLoader(dracoLoader); }, ) as unknown as GLTFResult; const isMobile = useMediaQuery({ query: '(max-width: 768px)' }); const position = useMemo(() => { if (isMobile) { return [5, 3, 0] as const; } return [-12, 7, 0] as const; }, [isMobile]); return ( ); }; useGLTF.preload('/models/bocchi_the_rock-processed.glb'); export default BocchiRubbishBin;