What makes a model look better?
Most dull Three.js previews need color management, tone mapping, and balanced key, fill, and rim lights before they need complex post-processing.
Scene lighting
Preview practical light setups and copy the exact HemisphereLight, DirectionalLight, tone mapping, and exposure code.
The studio rig values remain below. Apply them to a known-good material before tuning intensity for a production asset.
Use this as a starting point, then tune intensities after your real material and environment map are in place.
renderer.outputColorSpace = THREE.SRGBColorSpace; renderer.toneMapping = THREE.ACESFilmicToneMapping; renderer.toneMappingExposure = 1; scene.background = new THREE.Color(0xf2f6fb); const hemi = new THREE.HemisphereLight( 0xffffff, 0x263342, 1.7 ); scene.add(hemi); const key = new THREE.DirectionalLight(0xffffff, 2.8); key.position.set(3, 4.5, 4); scene.add(key); const rim = new THREE.DirectionalLight(0x8ff7e8, 1.2); rim.position.set(-4, 2.8, -3); scene.add(rim);
Most dull Three.js previews need color management, tone mapping, and balanced key, fill, and rim lights before they need complex post-processing.
DirectionalLight works well for simple static viewers. For physically accurate product shots, add an environment map and tune material roughness.
Use studio product for balanced previews, softbox neutral for inspection, dusk contrast for dark interfaces, and matte clay when shape matters more than material finish.
If a GLB still looks wrong, inspect it in the GLB Viewer and read the GLTFLoader guide before changing every light value.