Use when loading 3D models (GLTF, FBX, OBJ), textures, or HDR environment maps in Three.js. Prevents the common mistake of not setting up DRACOLoader, wrong WASM path, or missing error handling. Covers GLTFLoader, DRACOLoader, KTX2Loader, TextureLoader, RGBELoader, FBXLoader, OBJLoader, LoadingManager. Keywords: GLTFLoader, GLTF, GLB, load model, DRACOLoader, texture, FBXLoader, OBJLoader, RGBELoader, HDR, LoadingManager, progress, export, GLTFExporter, save model, download 3D, import 3D file.
Use when loading 3D models (GLTF, FBX, OBJ), textures, or HDR environment maps in Three.js. Prevents the common mistake of not setting up DRACOLoader, wrong WASM path, or missing error handling. Covers GLTFLoader, DRACOLoader, KTX2Loader, TextureLoader, RGBELoader, FBXLoader, OBJLoader, LoadingManager. Keywords: GLTFLoader, GLTF, GLB, load model, DRACOLoader, texture, FBXLoader, OBJLoader, RGBELoader, HDR, LoadingManager, progress, export, GLTFExporter, save model, download 3D, import 3D file.
license
MIT
compatibility
Designed for Claude Code. Requires Three.js r160+.
metadata
{"author":"OpenAEC-Foundation","version":"1.0"}
threejs-syntax-loaders
Quick Reference
Loader Architecture
All Three.js loaders extend the Loader base class and share two loading patterns:
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
DRACOLoader
import { DRACOLoader } from 'three/addons/loaders/DRACOLoader.js';
KTX2Loader
import { KTX2Loader } from 'three/addons/loaders/KTX2Loader.js';
FBXLoader
import { FBXLoader } from 'three/addons/loaders/FBXLoader.js';
OBJLoader
import { OBJLoader } from 'three/addons/loaders/OBJLoader.js';
MTLLoader
import { MTLLoader } from 'three/addons/loaders/MTLLoader.js';
RGBELoader
import { RGBELoader } from 'three/addons/loaders/RGBELoader.js';
MeshoptDecoder
import { MeshoptDecoder } from 'three/addons/libs/meshopt_decoder.module.js';
Format Recommendation
ALWAYS prefer glTF/GLB over other 3D formats. glTF is the recommended format for Three.js. It supports PBR materials, animations, cameras, lights, and scene hierarchy in a single file. Use .glb (binary glTF) for single-file distribution.
Critical Warnings
NEVER call loader.load() inside requestAnimationFrame or any render loop. Load assets once at initialization and cache the result.
NEVER forget to set the DRACOLoader decoder path before loading Draco-compressed models. The path MUST point to a directory containing draco_decoder.wasm.
NEVER skip error handling on loadAsync calls. ALWAYS wrap in try/catch. Failed loads without error handlers crash silently.
NEVER forget to dispose loaded models when removing them. GLTF models contain meshes, materials, and textures that ALL require disposal.
ALWAYS set texture.colorSpace = THREE.SRGBColorSpace on diffuse/color textures (map, emissiveMap). NEVER set SRGBColorSpace on data textures (normalMap, roughnessMap, metalnessMap, aoMap).
ALWAYS call dracoLoader.dispose() after all Draco-compressed models are loaded to free the WASM decoder memory.
Loader Base Class
Every loader inherits these methods from Loader:
Method
Signature
Purpose
load
(url, onLoad, onProgress, onError)
Callback-based loading
loadAsync
(url, onProgress) => Promise
Promise-based loading
setPath
(path: string)
Set base URL prefix for all loads
setResourcePath
(path: string)
Set resource resolution path
setCrossOrigin
(value: string)
Set CORS mode
setWithCredentials
(value: boolean)
Enable credentials for cross-origin
setRequestHeader
(header: object)
Set custom HTTP headers
LoadingManager
Coordinates multiple loaders and tracks overall progress.