Aggiornato 13 settembre 2026
Cosa conserva una conversione 3D e quanto costa
Convertire una mesh non è gratis né è un'operazione senza perdite. GLB e glTF conservano tutto. OBJ conserva gli oggetti separati e i loro nomi di materiale, ma scarta il colore per vertice. STL conserva solo i triangoli. PLY conserva il colore per vertice, ma appiattisce la scena in un'unica mesh. USDZ ha conservato i due oggetti e le UV, ha perso il colore per vertice e i nomi dei materiali quando l'ha letto di nuovo, e scrive un zip di USDA. Le cifre sotto sono state misurate, non stimate.
Ogni cifra di questa pagina proviene dall'esecuzione dello stesso convertitore utilizzato da questo sito, con file reali, e dalla lettura degli attributi direttamente dai byte che ha scritto. Misurato il 13 settembre 2026 con three.js r 179. Il metodo è alla fine della pagina e lo script è nel repository.

Cosa conserva ogni formato?#
Una scena di riferimento con due cubi con nomi diversi, ciascuno con il proprio materiale metallico nominato, colore per vertice, coordinate UV e normali, è stata convertita nei sei formati di destinazione. GLB e glTF sono tornati completi. Tutti gli altri formati hanno perso qualcosa, e ciascuno ha perso qualcosa di diverso.
| Destinazione | Due oggetti | Coordinate UV | Colore per vertice | Nomi dei materiali | Numero di vertici |
|---|---|---|---|---|---|
| GLB | Si conservano i 2 | Si conserva | Si conserva | Si conserva | 48 vertici |
| glTF | Si conservano i 2 | Si conserva | Si conserva | Si conserva | 48 vertici |
| OBJ | Si conservano i 2 | Si conserva | Si perde | Si conserva | 72 vertici |
| STL | Fusi in 1 | Si perde | Si perde | Si perde | 72 vertici |
| PLY | Fusi in 1 | Si conserva | Si conserva | Si perde | 48 vertici |
| USDZ | Si conservano i 2 | Si conserva | Si perde | Si perde | 72 vertici |
Perché STL e PLY fondono una scena in un'unica mesh?#
Nessuno dei due formati ha un grafo di scena. GLB, glTF e OBJ possono descrivere diversi oggetti nominati nello stesso file; STL descrive un unico solido e PLY una singola lista di elementi, quindi i due cubi arrivano come un'unica mesh e non c'è modo di separarli di nuovo.
È la perdita che sorprende di più, perché non si vede. Il modello convertito appare identico in un visualizzatore. Solo quando provi a selezionare, cambiare il materiale o animare una delle sue parti scopri che le parti non esistono più.
Se il modello deve rimanere separabile, la destinazione deve essere GLB, glTF o OBJ. Se va a un laminatore o a una stampa di un unico materiale, la fusione non ti costa nulla.
Quanto cresce il file?#
Più di quanto la maggior parte si aspetti. In una mesh generata reale, lo OBJ occupava 5,6 volte quello dello GLB di origine, e lo PLY 1,4 volte. Entrambi hanno la stessa geometria.
| Conversione | Origine | Risultato | Proporzione | Vertici scritti |
|---|---|---|---|---|
| mug.glb a GLB | 880 KB | 1173 KB | 1,3x | 25.000 |
| mug.glb a glTF | 880 KB | 1564 KB | 1,8x | 25.000 |
| mug.glb a OBJ | 880 KB | 4928 KB | 5,6x | 150.000 |
| mug.glb a STL | 880 KB | 2441 KB | 2,8x | 150.000 |
| mug.glb a PLY | 880 KB | 1221 KB | 1,4x | 25.000 |
| mug.glb a USDZ | 880 KB | 2927 KB | 3,3x | 150.000 |
| lion.glb a GLB | 8768 KB | 11.690 KB | 1,3x | 249.369 |
| lion.glb a glTF | 8768 KB | 15.587 KB | 1,8x | 249.369 |
| lion.glb a OBJ | 8768 KB | 51.880 KB | 5,9x | 1.496.202 |
| lion.glb a STL | 8768 KB | 24.352 KB | 2,8x | 1.496.202 |
| lion.glb a PLY | 8768 KB | 12.176 KB | 1,4x | 249.369 |
| lion.glb a USDZ | 8768 KB | 30.487 KB | 3,5x | 1.496.202 |
Perché OBJ e STL moltiplicano il numero di vertici?#
Perché nessuno dei due condivide vertici tra triangoli. Una mesh ben indicizzata conserva ogni angolo una sola volta e lo riferisce da tutti i triangoli che lo toccano; OBJ e STL, così come sono scritti qui, conservano separatamente i tre angoli di ogni triangolo. Nel test con lion.glb, questo ha trasformato 249.369 vertici in 1.496.202, circa 6 volte di più.
La geometria non cambia. La stessa superficie, gli stessi triangoli, la stessa silhouette; cambia solo la contabilità, e il file cresce più o meno nella stessa proporzione.
PLY è l'esempio contrario utile. Mantiene l'indice, quindi la stessa mesh si scrive con una dimensione vicina a quella originale e continua a portare il colore per vertice. Per una mesh grande in cui occorre solo conservare la geometria, PLY è la destinazione onesta più economica di questa lista.
Il testo rispetto al binario lo peggiora. glTF è JSON con i buffer codificati in base64, il che costa circa un 33 per cento in più rispetto all'GLB identico, perché il base64 converte ogni tre byte in quattro.
Perché è cresciuto il file anche convertendo da GLB a GLB?#
Perché il convertitore calcola le normali dei vertici di qualsiasi mesh che arriva senza di esse e poi le scrive. Una mesh generata spesso non ha alcun attributo di normali, quindi il viaggio di andata e ritorno aggiunge un vettore completo in più per vertice.
La prova con mug.glb è un esempio chiaro: entrano 880 KB eu escono 1173 KB, senza alcun cambiamento nella geometria. Le normali aggiunte sono la differenza.
È una decisione deliberata, non un difetto. Una mesh senza normali appare con shading piatto e sfaccettato nella maggior parte dei visualizzatori, quindi il convertitore le calcola una volta al caricamento invece di lasciare che ogni strumento successivo debba indovinarle.
La conversione cambia la forma?#
No. Ogni destinazione è stata convertita e poi riletta, e la superficie è risultata identica: lo stesso numero di triangoli e la stessa area superficiale totale, fino al limite della misurazione, in una mesh di 498.734 triangoli. La geometria è la parte di un file 3D che sopravvive intatta alla conversione.
| Destinazione | Triangoli dopo | Errore di area superficiale | Come vengono salvate le coordinate |
|---|---|---|---|
| GLB | senza cambiamenti | 0% | float32 binario |
| glTF | senza cambiamenti | 0% | buffer in base64 |
| OBJ | senza cambiamenti | 0% | testo con 17 decimali |
| STL | senza cambiamenti | 0% | float32 binario |
| PLY | senza cambiamenti | 0% | float32 binario |
| USDZ | senza cambiamenti | 0% | zip di USDA |
Allora, la conversione 3D ha perdite o no?#
Entrambe le cose, e la distinzione è quanto sia utile. La geometria non perde nulla: la forma che entra è la forma che esce. Tutto ciò che avvolge la geometria sì, si perde, e quali parti perdi dipende completamente dalla destinazione che hai scelto.
Qui nulla tronca le coordinate. GLB, STL e PLY scrivono float binari a 32 bit. glTF inserisce lo stesso buffer binario come base64 all'interno del suo JSON. USDZ scrive uno zip di USDA. OBJ è l'unico che scrive le posizioni come testo decimale, e le scrive con precisione completa invece di arrotondarle, il che è in parte la ragione per cui i suoi file sono molto più grandi.
Questo significa che la preoccupazione abituale, che ogni conversione degrada un po' il modello, come salvare di nuovo un JPEG, non si applica. Convertire da GLB a OBJ e ritorno non ammorbidisce la mesh.
Ciò che fa è scartare ciò che appare più in alto in questa pagina: il grafo di scena in STL e PLY, il colore per vertice in OBJ, STL e USDZ, i nomi dei materiali in STL, PLY e USDZ, e le UV in STL. Queste perdite sono permanenti, nel senso che riconvertire non può inventarle di nuovo.
Quale destinazione dovresti scegliere?#
Scegli la destinazione in base a ciò che deve sopravvivere, non in base all'estensione che lo strumento ricevente mette per prima nella sua lista. Queste sono le scelte difendibili a partire da ciò che è stato misurato sopra.
| Se hai bisogno | Scegli | Perché |
|---|---|---|
| Tutto conservato, in un unico file | GLB | L'unica destinazione che ha mantenuto insieme il grafo della scena, i nomi dei materiali, le UV e il colore per vertice, con la dimensione più piccola dei formati completi. |
| Tutto conservato, leggibile da una persona | glTF | Lo stesso contenuto di GLB, circa un 33 percento più grande perché i buffer sono in base64 all'interno del JSON. |
| Oggetti separati con nome in un programma desktop | OBJ | Ha mantenuto i due oggetti e i due nomi dei materiali. Scarta il colore per vertice e scrive il file più grande dei sei. |
| Stampa 3D | STL | Triangoli e nient'altro, che è tutto ciò che legge un slicer. La più piccola delle destinazioni che non sono glTF in una mesh reale. |
| Geometria e colore per vertice, con poco peso | PLY | L'unica destinazione che non è glTF che ha mantenuto il colore per vertice, e mantiene l'indice, quindi resta vicino alla dimensione dell'origine. |
| Quick Look di Apple / AR su iPhone | USDZ | Ha mantenuto i due oggetti e le UV nella scena di riferimento. Ha perso il colore per vertice e i nomi dei materiali rileggendolo. Uno zip di USDA che un telefono può aprire. |
Cosa definisce questi formati#
Le misurazioni sopra sono nostre; ciò che ogni formato può contenere non lo decidiamo noi. Queste sono le specifiche e le referenze del formato che lo decidono, così che ciò che dice questa pagina possa essere verificato alla fonte invece di credervi senza ulteriori prove.
- Specificazione di glTF 2.0The Khronos Group
Definisci il grafo della scena, i materiali e gli accessori portati da GLB e glTF, e spiega perché sono state le uniche destinazioni a sopravvivere integre qui.
- Tipo di media model/gltf-binaryIANA
Il tipo registrato per GLB, il contenitore binario misurato sopra.
- Tipo di media model/stlIANA
STL così come registrato: triangoli e normali delle facce, senza alcun campo per colore, UV, materiali o nomi degli oggetti.
- Il formato di file Wavefront OBJPaul Bourke
Il riferimento di sempre per OBJ, che non ha un campo proprio per il colore per vertice, il che coincide con quanto scartato dalla conversione.
- Il formato di file dei poligoni PLYPaul Bourke
Documenta le proprietà per vertice, colore incluso, che fanno di PLY l'unica destinazione che non è glTF a conservarle qui.
- Specificazione del formato di file USDZPixar / OpenUSD
USDZ è uno zip la cui prima voce è la scena USDA. Questo è il pacchetto che questo convertitore scrive e legge.
Come è stato misurato#
La misurazione esegue il prodotto, non una descrizione di esso. Lo script importa gli stessi loader ed exporter del convertitore del browser, con le stesse opzioni, ed è nel repository affinché i dati possano essere riprodotti o discussi.
- Costruire una scena di riferimento con due cubi nominati, ciascuno con un materiale metallico nominato, colore per vertice, coordinate UV e normali.
- Caricare mesh generate reali nello stesso modo in cui il convertitore carica il file che gli dai, incluso il passaggio che calcola le normali dei vertici quando una mesh arriva senza di esse.
- Esportare in GLB, glTF, OBJ, STL, PLY e USDZ con gli stessi esportatori che chiama il convertitore e le stesse impostazioni binarie.
- Registrare la dimensione in byte di ogni risultato.
- Leggere gli attributi direttamente dai byte scritti e non da una scena ricaricata, perché un caricatore inventa ciò che il file non contiene: un OBJ senza linee vn si ricarica comunque con un attributo di normali sintetiche.
- Pubblicare la tabella direttamente da quel risultato. Misurato il 13 settembre 2026 con three.js r 179.
Domande
- Convertire un file 3D fa perdere qualità?
- La forma no. Ogni destinazione è stata convertita e riletta, e il numero di triangoli e l'area della superficie totale sono rimasti identici in una mesh di 498.734 triangoli, senza troncare le coordinate in nessun formato. Ciò che si perde è tutto ciò che circonda la geometria, e dipende dalla destinazione: STL scarta le UV, il colore, i materiali e il grafo della scena; OBJ scarta il colore per vertice; PLY scarta i nomi dei materiali e unisce la scena; USDZ scarta il colore per vertice e i nomi dei materiali al rileggere; GLB e glTF hanno conservato tutto.
- Quale formato 3D occupa meno spazio?
- GLB, in una mesh reale. In questi test GLB ha scritto 1173 KB dove OBJ ha scritto 4928 KB per lo stesso modello, perché GLB è binario e mantiene un indice di vertici condiviso, mentre l'OBJ risultante è testo e conserva separatamente ogni angolo di ogni triangolo.
- Perché il mio OBJ occupa molto più dell'GLB da cui è stato generato?
- Per due ragioni, entrambe misure: OBJ è testo e non binario, e l'OBJ che si scrive qui non condivide vertici tra triangoli, quindi il numero di vertici si moltiplica per alcune 6 in una mesh ben indicizzata. La superficie è identica; la contabilità no.
- STL conserva il colore?
- No. Un STL binario conserva una normale di faccia e tre angoli per triangolo, e non ha alcun campo per colore, UV, materiali o nomi di oggetto. Questo è stato rispettato in tutti gli STL scritti in questi test.
- Posso conservare il colore per vertice senza usare GLB?
- Sì, con PLY. In questi test è stata l'unica destinazione che non è glTF a dichiarare una proprietà di colore nell'intestazione. Certo, appiattisce una scena con più oggetti in un'unica mesh, quindi conservi il colore ma perdi le parti.
- Convertire un modello 3D più volte lo degrada?
- No. A differenza del salvare di nuovo un JPEG, una conversione 3D non accumula errori: le coordinate si copiano come float binari o, nel caso di OBJ, si scrivono come decimali con precisione completa. Un viaggio di andata e ritorno attraverso uno di questi formati ha restituito la superficie identica. Quello che non torna è l'informazione sui materiali e sulla scena che la destinazione non poteva portare dall'inizio.
- Posso riprodurre queste cifre?
- Sì. Lo script di misurazione è nel repository, in scripts/measure-conversions.mjs, e scrive il JSON che legge questa pagina. È stato eseguito per l'ultima volta il 13 settembre 2026 con three.js r 179.