Hva er en GLB-fil?
GLB er den binære filformatrepresentasjonen av 3D-modeller lagret i GL-overføringsformatet (glTF). Informasjon om 3D-modeller som nodehierarki, kameraer, materialer, animasjoner og mesh i binært format. Dette binære formatet lagrer glTF-elementet (JSON, .bin og bilder) i en binær blob. Det unngår også problemet med økning i filstørrelse som skjer i tilfelle glTF. GLB-filformat resulterer i kompakte filstørrelser, rask lasting, komplett 3D-scenerepresentasjon og utvidbarhet for videre utvikling. Formatet bruker model/gltf-binary som MIME-type.
GLB-filformat – mer informasjon
Innholdsleveringsmetodene som brukes av glTF resulterer i ekstra prosessering for å dekode de base-64-kodede binære dataene og øker også filstørrelsen med 33 %. Disse leveringsmetodene, som bidro til dannelsen av GLB-filformat, inkluderer:
- glTF JSON peker på eksterne binære data (geometri, nøkkelrammer, skinn) og bilder.
- glTF JSON bygger inn base64-kodede binære data og bilder inline ved hjelp av data-URIer.
GLB som et beholderformat ble introdusert som binært filformat for representasjon av glTF-aktiva i en binær blob for å unngå problemene forårsaket av glTF. GLB-filformat spesifikasjoner bør henvises til enhver leser/skriverimplementering av det samme for applikasjonsutvikling .
GLB-filstruktur
GLB-filformatet er basert på little endian og strukturen viser at den inneholder:
- En 12-byte ingress med tittelen overskriften.
- En eller flere biter som inneholder JSON-innhold og binære data.
GLB Header
GLB-filformatoverskriften består av tre 4-byte-oppføringer:
- uint32 magic - magic er lik 0x46546C67. Det er ASCII-streng glTF, og kan brukes til å identifisere data som binær glTF
- uint32-versjon - indikerer versjonen av binært glTF-beholderformat
- uin32-lengde - den totale lengden på binær glTF, inkludert topptekst og alle biter i byte
biter
Hver del av en GLB-fil har følgende struktur:
uint32 | uint32 | ubyte[] |
---|---|---|
chunkLength | chunkType | chunkData |
chunkLength
- length of chunkData in byteschunkType
- indicates indicates the type of chunkchunkData
- binary payload of chunk
where the chunk types are:
# | Chunk Type | ASCII | Description | Occurrences |
---|---|---|---|---|
1. | 0x4E4F534A | JSON | Structured JSON content | 1 |
2. | 0x004E4942 | BIN | Binary buffer | 0 or 1 |
Starten og slutten av hver del må justeres til 4-byte-grensen, og utfylling bør brukes til dette formålet.
Strukturert JSON-innhold
Dette bør være den aller første delen av binær glTF-aktiva og gjør det mulig for implementeringen å gradvis hente ressurser fra påfølgende biter. Dette gir også muligheten til å lese bare et utvalgt delsett av ressurser fra et binært glTF-element, for eksempel den groveste LOD-en til en maske. For å oppfylle kravene til justering, må denne delen polstres med etterfølgende mellomromstegn (0x20).
Binær buffer
Denne delen inneholder den binære nyttelasten for geometri, animasjonsnøkkelrammer, skins og bilder. Det bør være den andre delen av det binære glTF-elementet og må være polstret med etterfølgende nuller (0x00) for å tilfredsstille justeringskravene.