Какво е GLB файл?
GLB е представянето на двоичен файлов формат на 3D модели, записани в GL Transmission Format (glTF). Информация за 3D модели като йерархия на възли, камери, материали, анимации и мрежи в двоичен формат. Този двоичен формат съхранява glTF актива (JSON, .bin и изображения) в двоичен блоб. Той също така избягва проблема с увеличаването на размера на файла, което се случва в случай на glTF. Файловият формат GLB води до компактни размери на файлове, бързо зареждане, пълно представяне на 3D сцена и възможност за разширение за по-нататъшно развитие. Форматът използва model/gltf-binary като MIME тип.
GLB файлов формат - повече информация
Методите за доставка на съдържание, използвани от glTF, водят до допълнителна обработка за декодиране на кодираните с base-64 двоични данни и също така увеличават размера на файла с 33%. Тези методи за доставка, които допринесоха за формирането на файловия формат GLB, включват:
- glTF JSON сочи към външни двоични данни (геометрия, ключови кадри, кожи) и изображения.
- glTF JSON вгражда кодирани с base64 двоични данни и вградени изображения, използвайки URI на данни.
GLB като контейнерен формат беше въведен като двоичен файлов формат за представяне на glTF актив в двоичен блоб, за да се избегнат проблемите, причинени от glTF. GLB файлов формат спецификации трябва да се посочи за всяко имплементиране на четец/записвач за разработка на приложения .
GLB файлова структура
GLB файловият формат е базиран на little endian и неговата структура показва, че съдържа:
- 12-байтов преамбюл, озаглавен заглавката.
- Една или повече части, които съдържат JSON съдържание и двоични данни.
GLB заглавка
Заглавката на GLB файлов формат се състои от три 4-байтови записа:
- uint32 magic - магията е равна на 0x46546C67. Това е ASCII низ glTF и може да се използва за идентифициране на данни като двоичен glTF
- uint32 версия - показва версията на двоичния glTF контейнерен формат
- uin32 дължина - общата дължина на двоичния glTF, включително заглавката и всички парчета в байтове
Парчета
Всяка част в GLB файл има следната структура:
uint32 | uint32 | ubyte[] |
---|---|---|
chunkLength | chunkType | chunkData |
chunkLength
- дължина на chunkData в байтовеchunkType
- показва показва типа на парчетоchunkData
- двоичен полезен товар на парче
където типовете парчета са:
# | Тип парче | ASCII | Описание | Случвания |
---|---|---|---|---|
1. | 0x4E4F534A | JSON | Структурирано JSON съдържание | 1 |
2. | 0x004E4942 | BIN | Двоичен буфер | 0 или 1 |
Началото и краят на всяка част трябва да бъдат подравнени към 4-байтовата граница и за тази цел трябва да се използва подложка.
Структурирано JSON съдържание
Това трябва да е първата част от Binary glTF актив и позволява на внедряването постепенно да извлича ресурси от следващите части. Това също така предоставя възможност за четене само на избрано подмножество от ресурси от двоичен glTF актив, като например най-грубия LOD на мрежа. За да отговаря на изискванията за подравняване, тази част трябва да бъде подплатена със завършващи интервали (0x20).
Двоичен буфер
Тази част съдържа двоичния полезен товар за геометрия, ключови кадри на анимация, кожи и изображения. Той трябва да бъде втората част от двоичния glTF актив и трябва да бъде подплатен със завършващи нули (0x00), за да отговори на изискванията за подравняване.