# GLB Loading Starter Use this as the canonical minimal pattern for loading shipped 3D content. ## Vanilla Three.js ```ts import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader.js"; import { DRACOLoader } from "three/examples/jsm/loaders/DRACOLoader.js"; const draco = new DRACOLoader(); draco.setDecoderPath("/draco/"); const gltfLoader = new GLTFLoader(); gltfLoader.setDRACOLoader(draco); gltfLoader.load("/assets/hero.glb", (gltf) => { const root = gltf.scene; root.traverse((node) => { if ("castShadow" in node) { node.castShadow = true; node.receiveShadow = true; } }); scene.add(root); }); ``` ## React Three Fiber ```tsx import { useGLTF } from "@react-three/drei"; function HeroModel() { const gltf = useGLTF("/assets/hero.glb"); return ; } ``` ## Notes - Default shipping format is GLB or glTF 2.0. - Keep optimization upstream in the asset pipeline; loader code should stay boring.