Vad är GLB fil?
GLB är den binära filformatsrepresentationen av 3D-modeller sparade i GL Transmission Format (glTF). Information om 3D-modeller som nodhierarki, kameror, material, animationer och mesh i binärt format. Detta binära format lagrar glTF-tillgången (JSON, .bin och bilder) i en binär blob. Det undviker också problemet med ökning av filstorleken som händer i händelse av glTF. GLB-filformat resulterar i kompakta filstorlekar, snabb laddning, komplett 3D-scenerepresentation och utökningsmöjligheter för vidareutveckling. Formatet använder model/gltf-binary som MIME-typ.
GLB-filformat - Mer information
Innehållsleveransmetoderna som används av glTF resulterar i extra bearbetning för att avkoda bas-64-kodade binära data och ökar även filstorleken med 33 %. Dessa leveransmetoder, som bidrog till bildandet av GLB-filformat, inkluderar:
- glTF JSON pekar på externa binära data (geometri, nyckelramar, skal) och bilder.
- glTF JSON bäddar in base64-kodad binär data och bilder inline med hjälp av data-URI.
GLB som containerformat introducerades som binärt filformat för representation av glTF-tillgång i en binär blob för att undvika problem som orsakas av glTF. GLB-filformat specifikationer bör hänvisas till alla läsare/skrivare-implementeringar av detsamma för applikationsutveckling .
GLB-filstruktur
GLB-filformatet är baserat på little endian och dess struktur visar att det innehåller:
- En 12-byte ingress med titeln rubriken.
- En eller flera bitar som innehåller JSON-innehåll och binär data.
GLB Header
GLB-filformatshuvudet består av tre 4-byte-poster:
- uint32 magi - magi är lika med 0x46546C67. Det är ASCII-sträng glTF och kan användas för att identifiera data som binär glTF
- uint32 version - indikerar versionen av binärt glTF containerformat
- uin32 längd - den totala längden av binär glTF, inklusive Header och alla bitar i byte
Bitar
Varje bit i en GLB-fil har följande struktur:
uint32 | uint32 | ubyte[] |
---|---|---|
chunkLength | chunkType | chunkData |
chunkLength
- längden på chunkData i bytechunkType
- indikerar indikerar typen av chunkchunkData
- binär nyttolast av chunk
där chunktyperna är:
# | Chunk Type | ASCII | Beskrivning | Förekomster |
---|---|---|---|---|
1. | 0x4E4F534A | JSON | Strukturerat JSON-innehåll | 1 |
2. | 0x004E4942 | BIN | Binär buffert | 0 eller 1 |
Början och slutet av varje del måste anpassas till 4-byte-gränsen och utfyllnad bör användas för detta ändamål.
Strukturerat JSON-innehåll
Detta bör vara den allra första biten av binär glTF-tillgång och gör det möjligt för implementeringen att successivt hämta resurser från efterföljande bitar. Detta ger också möjligheten att endast läsa en vald delmängd av resurser från en binär glTF-tillgång, såsom den grövsta LOD av ett nät. För att uppfylla inriktningskraven måste denna bit vara vadderad med efterföljande mellanrumstecken (0x20).
Binär buffert
Den här biten innehåller den binära nyttolasten för geometri, animerade nyckelramar, skal och bilder. Det bör vara den andra biten av den binära glTF-tillgången och måste fyllas med efterföljande nollor (0x00) för att uppfylla inriktningskraven.