Cookie di statistica e di pubblicità
Usiamo cookie di statistica e di pubblicità, entrambi inviati a Google. Rifiutare non cambia niente di quello che vedi.Leggi la pagina sulla privacy
Qui converti GLB in GLTF gratis e senza account: trascina il file qui sopra e in un paio di secondi il risultato è pronto da scaricare. La conversione avviene dentro il tuo browser, quindi il file non viene mai caricato. Funziona allo stesso modo su Windows, macOS e Linux e anche su iPhone e Android, e continua a funzionare anche se stacchi la connessione.
Fino a 100 file alla volta. Formati diversi insieme non sono un problema.
Vengono convertiti uno dopo l’altro e scaricati insieme in uno ZIP.
GLB in GLTF
Legge la geometria fuori dal GLB e scrive un nuovo glTF attorno ad essa. È una ricostruzione, non un re-imballaggio. Gli strumenti che re-imballano — gltf-pipeline con --binary=false, o gltf-transform — mantengono il documento originale intatto e spostano solo il buffer fuori dal contenitore binario, il che significa che le definizioni dei materiali, i riferimenti alle texture e i canali di animazione sopravvivono verbatim.
Qui non lo fanno. Il convertitore cammina nel grafo di scena, estrae posizioni dei vertici e indici dei triangoli, e costruisce un documento fresco con un mesh per primitiva e un nodo per mesh. Se il motivo della conversione è «voglio modificare il baseColorFactor e salvarlo», questo è lo strumento sbagliato e gltf-transform è quello appropriato. Se il motivo è «voglio vedere cosa c'è in questo file», continuare a leggere.
Entrambi sono glTF 2.0, la specifica del Khronos Group pubblicata nel giugno 2017 con il contenitore binario incluso fin dall’inizio. Un .gltf è JSON, con i dati dei vertici o in un file .bin accanto o incorporati come data URI. Un .glb è lo stesso JSON con lo stesso buffer, concatenati in un singolo file binario dietro un header di dodici byte i cui primi quattro caratteri sono glTF.
Dentro un GLB il contenuto sta in chunk: un chunk JSON taggato JSON e un chunk binario taggato BIN, ciascuno riempito con padding fino a un confine di quattro byte con il padding contato nella lunghezza dichiarata, ed è per questo che ogni lunghezza di chunk in un GLB valido è un multiplo di quattro. Questa è l’intera differenza tra le due estensioni. Nulla del modello cambia quando ci si sposta tra esse — il che è proprio perché un convertitore che ricostruisce il modello, come fa questo, sta facendo più di quanto il cambio di estensione implichi.
Un file solo, sempre. I dati dei vertici sono codificati in base64 in un data URI sulla singola voce buffer, quindi non c'è .bin laterale da perdere e nessun percorso relativo che si rompa quando si sposta il file. Una conversione produce un download, e dividere l’output in due file renderebbe questo falso.
Base64 costa quattro caratteri per ogni tre byte, quindi il buffer incorporato è circa il 33 percento più grande del binario che codifica, e il JSON attorno è stampato in modo leggibile con indentazione a due spazi sopra a quello. Per un file che si aprirà in un editor è un compromesso equo. Per un file che verrà servito a un browser non lo è, e il GLB che si ha già è l’artefatto migliore.
La lista è lunga e vale la pena leggerla intera: materiali PBR metallic-roughness, texture di colore base, normali, occlusion, emissive e metallic-roughness, sampler e immagini, coordinate UV, normali di vertice, colori di vertice, tangenti, morph target, skin e joint, sampler e canali di animazione, camere, luci, e ogni estensione che il file dichiara.
Ciò che sopravvive sono le posizioni dei vertici, gli indici dei triangoli e i nomi dei mesh. La gerarchia di scena sopravvive solo nel senso che il suo effetto lo fa — vedi la prossima sezione. Non è una limitazione del formato glTF, che contiene tutto quanto sopra comodamente; è una limitazione di questo convertitore, che porta geometria tra sei formati che concordano su quasi nient’altro.
Un glTF di solito colloca un mesh diverse volte con matrici diverse — quattro ruote che fanno riferimento a un mesh ruota è l’esempio standard. Il convertitore cammina nel grafo di scena dalla scena di default, moltiplica ciascuna matrice di nodo per il suo genitore, e applica la matrice mondo risultante ai vertici prima di scriverli.
La conseguenza è che la forma che si vede è corretta e la struttura non lo è. Quattro ruote arrivano come quattro mesh con quattro insiemi di vertici in quattro posti diversi, piuttosto che un mesh istanziato quattro volte. La rotazione, la traslazione e la scala del nodo fornite come proprietà TRS separate sono composte in una matrice prima, nell’ordine dei quaternioni che glTF definisce, così un modello costruito in quel modo atterra nello stesso posto di uno costruito con una matrice esplicita.
La geometria compressa con Draco si ferma con un errore nominato anziché un file rotto. KHR_draco_mesh_compression memorizza i dati dei vertici in un flusso compresso che ha bisogno del proprio decoder, e quel decoder non è distribuito qui. Ri-esportare da Blender o eseguire gltf-transform con Draco disabilitato e il file legge normalmente.
Le primitive che non sono liste di triangoli vengono saltate silenziosamente anziché guastate. La modalità 4 di glTF è triangoli; le modalità da 0 a 3 sono punti, linee, line loop e line strip, e le modalità 5 e 6 sono triangle strip e fan. Un GLB che contiene solo geometria a linee — una sovrapposizione wireframe, un percorso di debug — produce il messaggio che nessuna geometria a triangoli è stata trovata, il che è accurato.
Aprire l’output e l’array accessors risponde alla maggior parte delle domande per cui la gente converte un GLB. Ciascun mesh contribuisce un accessor VEC3 float per le posizioni e un accessor SCALAR unsigned-int per gli indici; dividere il conteggio degli indici per tre per il conteggio dei triangoli, e leggere il conteggio dei vertici direttamente dall’accessor di posizione.
L’accessor POSITION porta anche min e max, che la specifica richiede e che i visualizzatori usano per inquadrare il modello. Quei sei numeri sono la bounding box, e sono il modo più veloce per scoprire che un modello che qualcuno vi ha mandato è mille volte troppo grande o che sta fermo lontano dall’origine. I nomi dei mesh arrivano dalla sorgente, quindi un modello multi-parte resta leggibile.
Se il file andrà su una pagina web, tenere il GLB. È più piccolo, è una richiesta sola, e three.js, Babylon.js e model-viewer lo caricano direttamente. Convertirlo in glTF per la consegna rende il file più grande e, attraverso questo convertitore, spoglia i materiali che lo rendevano degno di essere mostrato.
Se serve modificare qualcosa e salvare indietro, usare gltf-transform o l’esportatore glTF di Blender. Se serve ispezionare rapidamente un file senza installare nulla, o serve un artefatto di testo da confrontare con un altro export, questa pagina è la strada corta. Essere espliciti su quel confine è più utile di una pagina che implica che ogni GLB dovrebbe diventare un glTF.
La conversione è puro JavaScript in esecuzione nella pagina — nessun modulo WebAssembly da scaricare, nessun upload, nessuna coda. Il file è letto con API in stile FileReader e il risultato è assemblato in un Blob che poi si salva. Il tetto gratuito è 100 MB, che è un GLB molto grande per gli standard di qualcosa destinato al web.
Poiché l’output incorpora il suo buffer come base64 dentro JSON stampato in modo leggibile, aspettarsi che il .gltf sia più grande del .glb da cui è venuto anche dopo che i materiali sono stati scartati — la geometria è la massa della maggior parte dei modelli, e base64 la gonfia. Un GLB da 12 MB la cui geometria ne occupa 9 atterra di nuovo intorno a 12 MB come glTF, senza nessuna delle texture.
| GLB | GLTF | |
|---|---|---|
| Nome completo | Binary glTF | GL Transmission Format |
| Estensione del file | .glb | .gltf |
| Tipo di media | model/gltf-binary | model/gltf+json |
| Prima pubblicazione | 2016 | 2015 |
| Pubblicato da | Khronos Group | Khronos Group |
| Specifica | glTF 2.0 | glTF 2.0 |
| Licenza | Standard aperto | Standard aperto |
| Situazione attuale | Attuale | Attuale |
| Si apre nel browser | Nessun browser | Nessun browser |
| Valutato al suo posto | OBJ | OBJ |
L'animazione resta. GLB e GLTF ammettono più fotogrammi, quindi il risultato continua a muoversi.
Blender, three.js e Babylon.js leggono sia GLB sia GLTF, quindi puoi confrontare il risultato con l'originale senza un secondo programma.
GLB è il formato di Khronos Group, pubblicato nel 2016. È descritto in glTF 2.0, e vale la pena conoscerlo se il file deve sopravvivere allo strumento che lo ha scritto.
GLTF viene da Khronos Group e risale al 2015, descritto in glTF 2.0. Blender, three.js e Babylon.js lo leggono.
No. Questa conversione avviene interamente nel tuo browser, quindi il file non esce dal tuo dispositivo. Puoi controllarlo da solo: apri la scheda di rete degli strumenti per sviluppatori e converti qualcosa. Vedrai la pagina stessa e le richieste di statistica e di pubblicità con cui questo servizio si paga, e nemmeno una che porti il tuo file.
Sì. Senza account, senza filigrana e senza una quota giornaliera da consumare: gira sulla tua macchina, quindi puoi tornare quante volte vuoi. Il browser lavora file fino a 100 MB, 100 per volta.
GLB e GLTF descrivono il contenuto in modi radicalmente diversi. La conversione è quindi una ricostruzione e non una copia: fedele, ma non identica byte per byte. Solo la geometria. Materiali, colori, texture e animazione non passano, e un modello collocato più volte torna con ogni copia fissata nella propria posizione.
L'animazione resta. GLB e GLTF ammettono più fotogrammi, quindi il risultato continua a muoversi.