game
// ==================== REAL 3D MODEL LOADER (improved) ==================== function loadRealModels() { function setupCharacter(gltf, name) { const model = gltf.scene; model.traverse(c => { if (c.isMesh) { c.castShadow = true; c.receiveShadow = true; if (c.material) { const mats = Array.isArray(c.material) ? c.material : [c.material]; mats.forEach(m => { if (m) { m.roughness = Math.min(0.85, (m.roughness ?? 0.65) + 0.05); m.metalness = Math.max(0.02, (m.metalness ?? 0) * 0.5); m.envMapIntensity = 1.0; } }); } } }); // Both models are authored ~1 unit tall → scale to ~1.8 m const targetHeight = 1.8; const box = new THREE.Box3().setFromObject(model); const size = box.getSize(new THREE.Vector3()); const scale = targetHeight / Math.max(size.y, 0.01); model.scale.setScalar(scale); // Put feet on the gro...