1. 마우스를 따라오는 3D 객체
import React, { useEffect, useRef } from "react";
import { useFrame, useLoader } from "@react-three/fiber";
import { STLLoader } from "three/examples/jsm/loaders/STLLoader";
import {
CANVAS_FILE_PATH,
CanvasObjectConstants,
} from "@/constants/canvasConst";
import * as THREE from "three";
const CanvasObject = () => {
const obj = useLoader(STLLoader, CANVAS_FILE_PATH);
const meshRef = useRef(null) as any;
const {
mesh,
material: { color, emissiveIntensity, roughness, metalness },
} = CanvasObjectConstants;
useFrame(
({ pointer }) =>
(meshRef.current.rotation.y = THREE.MathUtils.lerp(
meshRef.current.rotation.y,
pointer.x * (Math.PI / 5),
0.01
))
);
return (
<mesh ref={meshRef} geometry={obj} position={mesh.position}>
<meshStandardMaterial
color={color}
emissiveIntensity={emissiveIntensity}
roughness={roughness}
metalness={metalness}
/>
</mesh>
);
};
export default CanvasObject;