3D로 웹을 열다: Three.js 입문

발행: (2025년 12월 25일 오전 04:41 GMT+9)
7 min read
원문: Dev.to

Source: Dev.to

번역을 진행하려면 번역하고자 하는 전체 텍스트(코드 블록을 제외한 본문)를 제공해 주시겠어요? 텍스트를 주시면 요청하신 대로 한국어로 번역해 드리겠습니다.

Three.js가 실제로 하는 일

WebGL은 브라우저가 3D 그래픽을 렌더링할 수 있게 해주는 기본 기술입니다. 강력하지만 매우 저수준입니다. Three.js는 WebGL 위에 구조화된 개발자 친화적인 레이어를 제공하며, 다음을 처리합니다:

  • 씬 생성
  • 카메라 시스템
  • 조명 모델
  • 재질 및 셰이더
  • 기하학 생성
  • 모델 로드
  • 애니메이션 시스템
  • 렌더링 파이프라인

Three.js 없이 개발자는 셰이더, 버퍼, 행렬, GPU 상태 등을 직접 관리해야 합니다. Three.js는 이러한 세부 사항을 추상화하면서도 필요할 때 기본 성능에 완전히 접근할 수 있게 합니다.

핵심 구성 요소

Scene

모든 객체, 조명 및 카메라를 포함하는 컨테이너입니다.

const scene = new THREE.Scene();

Camera

시점을 정의합니다. 가장 일반적인 것은 인간의 시야를 모방하는 퍼스펙티브 카메라입니다.

const camera = new THREE.PerspectiveCamera(60, aspect, 0.1, 100);

Renderer

WebGL을 사용하여 씬을 화면에 그리는 역할을 합니다.

const renderer = new THREE.WebGLRenderer({ antialias: true });

이 세 가지 요소는 간단한 데모부터 대규모 인터랙티브 경험에 이르기까지 모든 Three.js 프로젝트의 핵심을 이룹니다.

기하학, 재료 및 메쉬

Three.js는 객체를 정의하기 위해 모듈식 시스템을 사용합니다:

  • Geometry는 형태를 설명합니다
  • Material는 외관을 설명합니다
  • Mesh는 이를 결합하여 렌더링 가능한 객체를 만듭니다

예시:

const geometry = new THREE.SphereGeometry(1, 32, 32);
const material = new THREE.MeshStandardMaterial({ color: 0x6699ff });
const sphere = new THREE.Mesh(geometry, material);

이러한 분리를 통해 개발자는 재료를 재사용하고, 기하학을 교체하거나, 전체 객체를 다시 작성하지 않고도 커스텀 셰이더를 적용할 수 있습니다.

조명과 현실감

Three.js는 실제 물리학에서 영감을 받은 완전한 조명 시스템을 포함하고 있습니다. 지원되는 조명 종류는 다음과 같습니다:

  • 주변광
  • 방향광
  • 점광
  • 스포트라이트
  • 반구광
  • 거칠기와 금속성을 가진 물리 기반 재질
const light = new THREE.DirectionalLight(0xffffff, 1);
light.position.set(2, 2, 2);

이러한 기능들을 통해 자연스럽고 역동적인 느낌의 장면을 만들 수 있습니다.

Animation and Motion

Three.js는 다음을 지원하는 애니메이션 시스템을 포함합니다:

  • 키프레임 애니메이션
  • 모프 타깃
  • 스켈레탈 애니메이션
  • 프로시저럴 모션
  • 커스텀 렌더 루프

이는 미묘한 UI 모션부터 전체 캐릭터 애니메이션까지 모든 것에 적합합니다.

모델 로드

Three.js는 다양한 3D 포맷을 지원하지만, 권장되는 포맷은 glTF이며, 웹 친화적인 최신 3D 자산 표준입니다.

const loader = new THREE.GLTFLoader();
loader.load("model.glb", (gltf) => {
  scene.add(gltf.scene);
});

개발자는 Blender, Maya, Cinema 4D 등 다양한 3D 툴에서 자산을 가져올 수 있습니다.

포스트 프로세싱 및 효과

Three.js는 다음을 지원하는 확장 가능한 포스트‑프로세싱 파이프라인을 포함합니다:

  • 블룸
  • 심도 흐림
  • 모션 블러
  • 컬러 그레이딩
  • 커스텀 셰이더 패스

이러한 효과를 통해 개발자는 브라우저에서 직접 시네마틱한 비주얼을 만들 수 있습니다.

Three.js가 사용되는 곳

Three.js는 다양한 실제 애플리케이션에 활용됩니다:

  • 제품 구성기
  • 인터랙티브 박물관 전시
  • 데이터 시각화
  • 음악 시각화
  • 과학 시뮬레이션
  • 포트폴리오 사이트
  • 아트 설치
  • 교육 도구

그 유연성 덕분에 기술적 작업과 창의적 작업 모두에 유용합니다.

Three.js가 중요한 이유

  • WebGL을 쉽게 사용할 수 있게 함
  • 실험을 장려함
  • 다양한 프레임워크(React, Vue, Svelte, vanilla JS)에서 작동함
  • 예제와 플러그인의 방대한 생태계를 보유함
  • 간단한 데모부터 복잡한 애플리케이션까지 확장 가능

전통적인 웹 디자인으로는 달성할 수 없는, 살아있고, 인터랙티브하며, 표현력이 풍부한 경험을 개발자들이 만들 수 있게 합니다.

Final Thoughts

Three.js는 단순한 라이브러리가 아니라 웹을 바라보는 새로운 사고 방식을 열어주는 관문입니다. 예술, 수학, 물리학, 디자인을 결합하여 개발자에게 브라우저가 존재하는 어디서든 실행되는 몰입형 경험을 만들 수 있는 도구를 제공합니다.

웹의 창의적인 측면을 탐구하고 싶다면, Three.js는 배워야 할 가장 강력한 도구 중 하나입니다.

Back to Blog

관련 글

더 보기 »

별 HTML

Renderer 설정 javascript // 3. Renderer 설정 const renderer = new THREE.WebGLRenderer{ antialias: true }; renderer.setSize(window.innerWidth, window.innerHeight);