Come ho alleggerito un modello 3D del 28% senza toccare il rendering
L’asset più pesante di un sito recente era un modello 3D: 3,8 MB di GLB con avatar animato. Bello, ma quasi 4 MB sono tanti — soprattutto su mobile. Obiettivo: dimagrirlo senza che l’occhio se ne accorga.
Prima si misura, poi si taglia
Ispezionando il file, la sorpresa: due terzi del peso erano texture JPEG e PNG, non geometria. È lì che conviene lavorare.
Texture in WebP, con giudizio
La conversione delle texture in WebP (estensione EXT_texture_webp, decodificata nativamente dal browser) ha fatto quasi tutto il lavoro. Un’accortezza: le normal map le ho lasciate intatte — la compressione lossy sulle normali produce artefatti di shading visibili.
gltf-transform dedup avatar.glb tmp.glb
gltf-transform prune tmp.glb tmp2.glb
gltf-transform webp tmp2.glb out.glb --quality 90
--slots "(baseColor|metallicRoughness|occlusion)"
Risultato
Da 3,78 a 2,73 MB: −28%, animazioni verificate identiche al byte, zero decoder aggiuntivi lato client. La lezione è sempre la stessa: prima di ottimizzare, guardare di cosa è fatto il peso. Spesso il colpevole non è dove si pensa.