[Three] 09. Loader - GLTF

2025. 6. 16. 22:49·Frontend

Mesh를 생성할 때 Three.js에서 제공하는 geometry를 선택하여 생성하는 방법 외에도,

 

외부 모델링 파일을 불러와 생성하는 방법이 있습니다. 이 때 외부 파일을 불러오는 역할을 하는 것이 Loader입니다.

 

GLTFLoader는 glTF(GL Transmission Format) 형식으로 데이터를 불러오는 방식이며,

 

JSON 형식(.gltf) 또는 이진파일 형식(.glb)을 입력값으로 받습니다.

import { GLTFLoader } from "three/examples/jsm/Addons.js";

const gltfLoader = new GLTFLoader();

Load ( )

Loader를 통해 파일을 불러오는 작업은 load( ) 함수를 통해 이루어집니다.

loader.load(url: string, onLoad: Function, onProgress: Function, onError: Function);

url  |  불러오고자 하는 .gltf 또는 .glb 파일의 경로 (public 폴더를 root로 합니다)

onLoad  |  불러오기가 성공적으로 완료된 후 실행되는 함수. Scene에 추가하기 까지의 주요 작업들이 여기서 수행됩니다.

onProgress  |  불러오기가 진행되는 동안 실행되는 함수. (optional)

onError  |  불러오기 중 에러 발생시 실행되는 함수. (optional)

loader.load(
    // url
    '/table.glb',
    // onLoad
    (gltf: GLTF) => {
    	const mesh = new Mesh();
        
        mesh = gltf.scene as Group;
        mesh.castShadow = true;
        mesh.receiveShadow = true;
        
        info.scene.add(mesh);
    },
    // onProgress
    (xhr: ProgressEvent<EventTarget>) => {
        console.log((xhr.loaded / xhr.total * 100) + '% loaded');
    },
    // onError
    (error: any) => {
        console.error('An error happened');
    }
)

실행시 다음과 같이 모델링 파일을 scene에 불러올 수 있습니다.

Traverse( )

모델링 파일이 하나의 강체로 되어 있지 않고 여러 개의 강체로 구성되어 있거나, 어떤 것이 다른 것을 포함하는 계층적 구조를 가질 때도 있습니다.

 

이 경우 모델링 전체에 설정을 적용하기 위해서는 모든 하위 mesh들에 접근해야합니다.

 

onLoad( ) 함수로서 gltf.scene.traverse( )함수를 사용하면 모델링 mesh의 모든 하위 자식 mesh들에 접근할 수 있습니다.

 

※ traverse( ) : Object3D 객체의 메소드로, 매개변수로 받는 callback을 자기 자신과 자신의 모든 하위 Object3D에게 시행합니다.

// onLoad()
(gltf: GLTF) => {
    gltf.scene.traverse((child: Ojbect3D) => {
    	// child는 모든 하위 자식 object들을 나타냅니다.
        
        const mesh = child as Mesh;
        //...
    }
}
728x90

'Frontend' 카테고리의 다른 글

[Three] 1인칭 화면 회전 만들기  (0) 2025.07.09
[Three] 윈도우 크기에 따라 반응형으로 만들기  (0) 2025.07.05
[Three] 08. Material  (0) 2025.05.16
[Three] 07. Geometry  (0) 2025.05.16
[Three] 06. Mesh  (0) 2025.05.16
'Frontend' 카테고리의 다른 글
  • [Three] 1인칭 화면 회전 만들기
  • [Three] 윈도우 크기에 따라 반응형으로 만들기
  • [Three] 08. Material
  • [Three] 07. Geometry
Rayi
Rayi
  • Rayi
    아카이브
    Rayi
  • 전체
    오늘
    어제
    • 분류 전체보기 (276)
      • CS (40)
        • CV (2)
        • PS (34)
      • Reveiw (18)
        • Paper (18)
        • Github (0)
      • ML (8)
        • Pytorch (5)
      • Language (59)
        • Python (8)
        • JavaScript (32)
        • TypeScript (16)
        • C++ (3)
      • IDE (12)
      • Git (13)
      • Frontend (77)
        • React (8)
        • ReactNative (6)
        • SolidJS (20)
        • CSS (12)
      • Backend (44)
        • DB (18)
        • Node.js (11)
      • UI (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    DB
    Express
    python
    CSS
    nodejs
    figma
    GAN
    vscode
    deploy
    react
    ReactNative
    ps
    backend
    frontend
    CV
    mongo
    ML
    Git
    review
    PRISMA
    postgresql
    modal
    SOLID
    API
    expo
    CS
    PyTorch
    Three
    ts
    js
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
Rayi
[Three] 09. Loader - GLTF
상단으로

티스토리툴바