Home [three.js] React에서 three.js 사용(useControls)
Post
Cancel

[three.js] React에서 three.js 사용(useControls)


useControls란?

useControls는 leva 라이브러리에서 제공하는 함수로, UI 컴포넌트를 생성하고 웹화면에서 실시간으로 상호작용적으로 값을 변경할 수 있게 해줍니다. 3D 객체의 속성을 조작하기 위해 사용할 수 있으며, 이를 R3F에서 사용하면 편리한 UI를 제공할 수 있습니다.

설치

1
npm install leva

useControls 사용

여러가지 속성을 사용할 수 있지만 기본적인 position으로 사용해보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import { Canvas } from "@react-three/fiber";
import { OrbitControls } from "@react-three/drei";
import { useControls } from "leva";
import React from "react";

function MyScene() {
  // useControls로 UI 컴포넌트 생성 및 초기값 설정
  const { positionX, positionY, positionZ } = useControls({
    positionX: { value: 0, min: -10, max: 10 },
    positionY: { value: 0, min: -10, max: 10 },
    positionZ: { value: 0, min: -10, max: 10 },
  });

  return (
    <Canvas>
      <OrbitControls />
      <mesh position={[positionX, positionY, positionZ]}>
        <boxGeometry />
        <meshBasicMaterial color="red" />
      </mesh>
    </Canvas>
  );
}

export default MyScene;

그러면 아래와 같이 물체 옆에 못 보던 조작패드가 생긴걸 볼 수 있다.
아까 지정해줬던 속성에 이름과 value 값으로 구성되어 있으며 수치를 마우스를 통해서 드래그하면 실시간으로 mesh에 position에 값이 적용되는 걸 볼 수 있다.

useControls 적용


마치며

혹시 잘못된 정보나 궁금하신 게 있다면 편하게 댓글 달아주세요.
지적이나 피드백은 언제나 환영입니다.

This post is licensed under CC BY 4.0 by the author.