GLB

Che cos’è un file GLB?

glTF con le texture dentro. Un file invece di una cartella piena di dipendenze.

Che cos’è GLB

GLB è un formato binario, che ha senso solo per un programma che lo conosce. Conserva forme e coordinate invece che pixel, quindi resta nitido a qualsiasi dimensione: un logo portato alla misura di un cartellone non perde nulla. Si usa per il web e consegnare un file finito.

L’estensione è .glb e il nome per esteso è Binary glTF. Contano entrambi meno di ciò che il file può contenere, ed è di questo che parla il resto della pagina.

Da dove viene GLB

Khronos Group lo ha pubblicato nel 2016. La specifica è glTF 2.0.

L’età serve saperla per un motivo pratico: più un formato è vecchio, più programmi hanno avuto tempo di impararlo.

La specifica è pubblica

È pubblicata per intero, quindi la si può implementare partendo dal documento invece che per osservazione: è per questo che il formato compare in così tanti programmi, ed è per questo che file scritti vent’anni fa si aprono ancora. Una specifica pubblicata però non è la stessa cosa di una esente da royalty: dove un formato incapsula un codec, le licenze sui brevetti restano una questione a parte che lo standard non risolve.

Non si butta via niente

GLB conserva il suo contenuto esattamente. Risalvarlo non cambia nulla, quindi puoi aprirlo, modificarlo e risalvarlo quante volte vuoi senza accumulare danni: è questo che ne fa un formato di lavoro e non di consegna.

Può contenere più di un fotogramma

GLB può conservare un’animazione anziché una singola immagine ferma. Vale la pena saperlo prima di convertire: una destinazione che tiene un solo fotogramma si tiene il primo e lascia cadere il resto, di solito senza dirlo.

Che cosa apre GLB

Blender, three.js e Babylon.js lo leggono, e così fanno quasi tutti i programmi dello stesso tipo.

Quando un file non si apre, il formato è raramente il problema: più spesso è il programma a essere più vecchio di lui. Convertire in qualcosa di più vecchio è la via d’uscita affidabile, ed è a questo che serve il resto di questo sito.

Aprirlo nel browser

Nessun browser lo legge.

È di gran lunga il motivo più comune per convertirlo: non che il formato sia scadente, ma che il posto in cui vuoi mostrare il file non sappia leggerlo.

È un formato di lavoro

GLB è pensato per essere aperto e modificato. Tieni il file in questo formato per tutto il tempo in cui il lavoro va avanti, ed esporta da lì ogni volta che serve una copia finita.

Lo stesso modello, in un solo file

Il GLB è il glTF impacchettato in un unico contenitore binario: la descrizione della scena in JSON, il buffer di geometria e ogni texture, in un file con una piccola intestazione. Nulla è aggiunto e nulla è lasciato fuori — scompattate un GLB e avete il .gltf, il .bin e le immagini che altrimenti starebbero in una cartella.

È tutta la differenza, ed è il motivo per cui quasi tutto ciò che viene pubblicato come 3D sul web è un GLB. Un .gltf senza i suoi compagni è una descrizione di scena che fa riferimento a dati che non ci sono, e inviarne uno è lo stesso errore di inviare un OBJ senza il suo MTL.

Perché un solo file conta più qui che altrove

Un modello 3D ha più parti sciolte della maggior parte degli asset: un buffer binario, una texture di colore base, una mappa delle normali, una mappa di rugosità, una mappa di occlusione, una mappa emissiva. Un singolo oggetto può essere otto file, e una scena può esserne decine.

Un solo file elimina un’intera classe di guasti — una texture mancante, un percorso relativo rotto, una cartella zippata un livello troppo in alto. Elimina anche i giri di rete: un browser che scarica un GLB fa una richiesta dove l’equivalente .gltf ne fa otto, e su una connessione mobile la differenza nel tempo al primo rendering è maggiore della differenza in byte.

Cosa si aspetta la realtà aumentata

Su Android, Scene Viewer prende un GLB, e l’elemento model-viewer che la maggior parte dei siti usa per il 3D prende GLB come sorgente principale. Puntate un telefono verso una pagina prodotto e il modello che appare nella stanza viene da lì.

iOS è l’eccezione da conoscere: la Quick Look di Apple usa USDZ, il proprio formato, quindi un sito che supporta la realtà aumentata su entrambe le piattaforme pubblica un GLB e un USDZ fianco a fianco. L’elemento model-viewer prende entrambi e sceglie in base alla piattaforma, motivo per cui le pagine prodotto portano due file invece di uno.

Tenerlo abbastanza piccolo per una pagina web

Le texture dominano, non la geometria. Un modello con quattro mappe 4K pesa trenta megabyte prima di contare qualunque altra cosa, e ridurle a 1K o 2K di solito non costa nulla di visibile alla dimensione a cui il modello viene effettivamente mostrato. Fatelo per primo.

Poi Draco per la mesh, che spesso porta la geometria a un quinto o un decimo della dimensione, e KTX2 con Basis Universal per le texture, che in più lascia che la scheda grafica le mantenga compresse in memoria invece di espanderle. Insieme trasformano regolarmente un’esportazione da quaranta megabyte in qualcosa sotto i tre, ed entrambe sono estensioni — un visualizzatore che non le implementa non può aprire il file, quindi appartengono alla fine della pipeline piuttosto che al file principale.

L’unica cosa in cui il GLB è peggiore

Modificare e ispezionare. Un .gltf è JSON leggibile, quindi un valore di materiale sbagliato o un nodo scalato male si può trovare e correggere in un editor di testo, e un sistema di controllo versione può mostrare un diff significativo fra due revisioni.

Un GLB è opaco. Qualunque modifica significa scompattare, modificare e riimpacchettare, e un repository che conserva file GLB memorizza un nuovo binario completo a ogni commit. L’assetto sensato è lo stesso di altrove su questo sito: tenere il .gltf e i suoi asset come originale di lavoro, e produrre il GLB come passaggio di build per la consegna.

Dove il GLB è accettato

Ampiamente, per un formato di dieci anni. Ogni libreria 3D per il web, Blender, Unity, Unreal, Godot, Substance, Sketchfab, il visualizzatore AR di Android, e i principali marketplace di asset. Microsoft Office può perfino incorporarne uno in un documento o una diapositiva.

Dove non è accettato è tutto ciò che è costruito attorno a pipeline più vecchie: la stampa 3D vuole STL o 3MF, il CAD vuole i propri formati, e cinema ed effetti visivi usano USD o Alembic. Il GLB è un formato di consegna in tempo reale, e chiedergli un lavoro di produzione industriale o cinematografico è chiedere al file sbagliato.

Convertire da e verso di esso

GLB e glTF si convertono l’uno nell’altro senza perdite in entrambe le direzioni, perché sono gli stessi dati con un imballaggio diverso. Qualunque cosa legga uno legge l’altro, e la conversione è impacchettare o scompattare piuttosto che tradurre.

Da OBJ, FBX o un programma di modellazione, aspettatevi che i materiali richiedano attenzione: il vocabolario fisicamente basato che il GLB usa non ha equivalente nell’MTL dell’OBJ, quindi un modello importato arriva grigio e corretto invece che texturizzato e corretto. In STL per la stampa, tutto tranne la forma viene scartato — materiali, texture, animazione, gerarchia della scena — e la mesh di solito avrà bisogno di riparazione prima che uno slicer la accetti.

I dati, in un posto solo

Identificativi e provenienza del formato GLB.
Estensione.glb
Tipo di mediamodel/gltf-binary
Pubblicato daKhronos Group
Prima pubblicazione2016
SpecificaglTF 2.0

File GLB: domande frequenti

Qual è la differenza fra GLB e glTF?

Solo l’imballaggio. Un .gltf è JSON che fa riferimento a un buffer binario separato e a file texture, quindi un modello è una cartella; un .glb impacchetta tutto in un unico file binario. Convertire fra i due è senza perdite in entrambe le direzioni.

Come si apre un file GLB?

Blender ne apre uno direttamente, come Unity, Unreal e Godot. Per un’occhiata rapida, qualunque visualizzatore glTF basato sul web va bene, e Microsoft Office può incorporarne uno in un documento o una diapositiva.

Perché il mio file GLB è così grande?

Le texture, quasi sempre, non la geometria. Quattro mappe 4K pesano trenta megabyte prima di contare qualunque altra cosa. Riducetele a 1K o 2K per prima cosa, poi applicate Draco per la mesh e KTX2 per le texture.

Posso usare un GLB per la realtà aumentata?

Su Android sì — Scene Viewer prende GLB direttamente. iOS usa il proprio formato USDZ di Apple, quindi un sito che supporta entrambe le piattaforme pubblica un GLB e un USDZ fianco a fianco e lascia scegliere all’elemento model-viewer.

Dovrei conservare i miei modelli come GLB?

Come copia di consegna, sì. Come originale di lavoro, no — un .gltf è JSON leggibile che si può ispezionare, correggere in un editor di testo e confrontare significativamente nel controllo versione, dove un GLB è opaco e memorizza un intero nuovo binario a ogni commit.

Posso stampare in 3D un GLB?

Convertitelo prima in STL o 3MF, e aspettatevi di dover riparare la mesh. I modelli costruiti per il rendering in tempo reale spesso non sono a tenuta stagna — superfici senza spessore appaiono perfette a schermo e non sono stampabili.