Ano ang GLB file?
Ang GLB ay ang binary file format na representasyon ng mga 3D na modelo na naka-save sa GL Transmission Format (glTF). Impormasyon tungkol sa mga modelong 3D gaya ng hierarchy ng node, camera, materyales, animation at mesh sa binary na format. Iniimbak ng binary format na ito ang glTF asset (JSON, .bin at mga larawan) sa isang binary blob. Iniiwasan din nito ang isyu ng pagtaas sa laki ng file na nangyayari sa kaso ng glTF. Ang GLB file format ay nagreresulta sa mga compact na laki ng file, mabilis na paglo-load, kumpletong representasyon ng eksena sa 3D, at extensibility para sa karagdagang pag-unlad. Gumagamit ang format ng modelo/gltf-binary bilang uri ng MIME.
GLB File Format - Higit pang Impormasyon
Ang mga paraan ng paghahatid ng nilalaman na ginagamit ng glTF ay nagreresulta sa karagdagang pagpoproseso upang i-decode ang base-64 na naka-encode na binary data at pinapataas din ang laki ng file ng 33%. Ang mga paraan ng paghahatid na ito, na nag-ambag sa pagbuo ng format ng GLB file, ay kinabibilangan ng:
- Ang glTF JSON ay tumuturo sa panlabas na binary data (geometry, key frame, skin), at mga larawan.
- Ang glTF JSON ay nag-embed ng base64-encoded binary data, at mga larawang inline gamit ang mga URI ng data.
Ang GLB bilang isang container na format ay ipinakilala bilang binary file format para sa representasyon ng glTF asset sa isang binary blob upang maiwasan ang mga isyu na dulot ng glTF. Ang format ng GLB file mga detalye ay dapat i-refer para sa anumang pagpapatupad ng reader/writer ng pareho para sa pagbuo ng mga application .
GLB File Structure
Ang format ng GLB file ay batay sa maliit na endian at ipinapakita ng istraktura nito na naglalaman ito ng:
- A 12-byte preamble, entitled the header.
- One or more chunks that contains JSON content and binary data.
GLB Header
Ang GLB file format header ay binubuo ng tatlong 4-byte na entry:
- uint32 magic - magic equals 0x46546C67. It is ASCII string glTF, and can be used to identify data as Binary glTF
- uint32 version - indicates the version of Binary glTF container format
- uin32 length - the total length of the Binary glTF, including Header and all chunks in bytes
Chunks
Ang bawat chunk sa isang GLB file ay may sumusunod na istraktura:
uint32 | uint32 | ubyte[] |
---|---|---|
chunkLength | chunkType | chunkData |
chunkLength
- length of chunkData in byteschunkType
- indicates indicates the type of chunkchunkData
- binary payload of chunk
kung saan ang mga uri ng tipak ay:
# | Chunk Type | ASCII | Description | Occurrences |
---|---|---|---|---|
1. | 0x4E4F534A | JSON | Structured JSON content | 1 |
2. | 0x004E4942 | BIN | Binary buffer | 0 or 1 |
Ang simula at pagtatapos ng bawat chunk ay dapat na nakahanay sa 4-byte na hangganan at ang padding ay dapat gamitin para sa layuning ito.
Nakabalangkas na Nilalaman ng JSON
Ito dapat ang pinakaunang bahagi ng Binary glTF asset at binibigyang-daan ang pagpapatupad na unti-unting makuha ang mga mapagkukunan mula sa mga kasunod na chunks. Nagbibigay din ito ng kakayahang magbasa lamang ng isang napiling subset ng mga mapagkukunan mula sa isang Binary glTF asset gaya ng pinakamagaspang na LOD ng isang mesh. Upang matugunan ang mga kinakailangan sa pag-align, dapat na may padded ang chunk na ito ng mga trailing Space char (0x20).
Binary Buffer
Ang chunk na ito ay naglalaman ng binary payload para sa geometry, animation key frame, skin, at mga larawan. Ito dapat ang pangalawang bahagi ng Binary glTF asset at dapat na may padded na may trailing zeros (0x00) upang matugunan ang mga kinakailangan sa alignment.