Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 26 |
27 | 28 | 29 | 30 |
Tags
- js
- form
- Pr
- zustand
- Fe
- Study
- barrel export
- frontend
- react
- CSS
- 비제어
- 협업
- JWT
- javascript
- react-query
- next.js
- 개발
- 티스토리챌린지
- 개발자
- turporepo
- 회고록
- tailwind css
- 오블완
- svelte
- 브라우저 동작
- SWR
- 사과게임
- 프레임 워크
- github
- monorepo
Archives
- Today
- Total
ougi FE
three.js에 대해서 알아보자! 본문
728x90
저는 최근에 프로젝트에서 3D를 구현해야 할 일이 생겨
이렇게 three.js에 대해서 공부하고 사용하고자 글을 쓰게 되었습니다

❓ three.js란?

three.js는 웹페이지에 3D 객체를 더욱더 쉽게 렌더링 할 수 있도록 도움을 주는 JavaScript의 3D 라이브러리입니다
3D 객체를 렌더링하기 위해서 webGL이라는 것을 사용합니다
webGL이 있지만 three.js를 쓰는 이유는
webGL이 점, 선, 삼각형만 그릴 수 있어 코드양이 굉장히 많아지기 때문입니다
🏗️ three.js의 기본 구조

Renderer
- three.js의 핵심 객체입니다
- Scene과 Camera 객체를 넘겨 받아서 3D 장면을 2D 화면에 그려주는 역할을 합니다
- Three.js에서는 WebGLRenderer를 이용하여 웹 페이지의 canvas에 3D 장면을 렌더링합니다
Scene graph
- Scene Graph는 트리(Tree) 구조를 기반으로 구성되며 주요 요소로는 Scene, Mesh, Light, Group, Object3D, Camera 등이 있습니다
- 위 사진에서 파란 배경입니다
- Scene이 최상위 노드입니다
- 부모 요소가 움직이면 자식도 함께 움직입니다
Camera
- Scene객체를 촬영하여 어떻게 보여줄 것인가를 결정합니다
- 같은 Scene이라도 카메라의 위치 및 기타 설정값들을 통해서 다른 화면을 보여줄 수 있습니다
- 다른 객체와 달리 굳이 Scene graph에 포함될 필요가 없습니다
- 만약 Scene graph에 포함된다면 마찬가지로 부모 요소가 움직입니다
Mesh
- 3D화면을 구성하는 물체입니다
- 어떤 Material로 하나의 Geometry를 그리는 객체입니다
Geometry
- 객체의 정점(꼭짓점) 데이터입니다
- 아주 다양한 모양이 될 수 있습니다
Material
- Material은 메쉬의 표면을 정의합니다
- Three.js에서는 다양한 종류의 재질을 제공합니다
- 색, 밝기, 텍스처, 반질거림, 투명도 등을 설정할 수 있습니다
- 하나의 Material은 여러 개의 Texture를 사용할 수 있습니다
Light
- 주변광이나 집중광 등 다양한 광원을 통해 물체들을 3D 공간에서 볼 수 있습니다
- 생동감을 올려줍니다
Texture
- Mesh의 표면을 덮는 이미지입니다
- Mesh에 현실감 있는 외관을 부여할 수 있습니다
🎯 사용하기
1. 설치하기
npm install three # npm
yarn add three # yarn
// react에서 사용하기 필수 X
npm install @react-three/fiber
npm install @react-three/drei
2. 불러오기
// option 1: 다 불러오기
import * as THREE from 'three';
const scene = new THREE.Scene();
// option 2: 필요한 부분 불러오기
import { Scene } from 'three';
const scene = new Scene();
3. 사용하기 ( 예시 코드 )
import { Canvas } from "@react-three/fiber";
import { OrbitControls } from "@react-three/drei";
export default function App() {
return (
<Canvas
id="root"
style={{ width: "100%", height: "100%" }}
camera={{ position: [0, 0, 5] }} // 카메라 위치
>
<OrbitControls /> {/* 터치 (카메라 컨트롤) */}
<ambientLight /> {/* 빛 */}
<mesh position={[0, 0, 0]}>{/* 큐브 MESH */}
<boxGeometry args={[5, 5, 5]} /> {/* GEOMETRY 큐브 크기 */}
<meshStandardMaterial color="hotpink" /> {/* MATERIAL 색상 */}
</mesh>
</Canvas>
);
}
✨ 글을 마치며
이렇게 three.js에 대해서 배워보았는데 모르는 개념들이 많아서 학습하기 매우 힘들었던거 같습니다
여러분들도 three.js를 사용해서 좋은 결과물을 내셨으면 좋겠습니다
글을 읽어주셔서 감사합니다
728x90
'라이브러리' 카테고리의 다른 글
터보레포(Turborepo) 사용기 (with. monorepo) (0) | 2025.04.18 |
---|---|
[Library] 🔧 json-server??? 그게 뭐고 어떻게 사용하는건데!! (1) | 2024.08.19 |