aspose.info
UK

GLB

Оновлено

Що таке файл GLB?

GLB — це представлення 3D-моделей у двійковому форматі файлів, збережених у форматі передачі GL (glTF). Інформація про 3D-моделі, як-от ієрархія вузлів, камери, матеріали, анімація та сітки, у двійковому форматі. Цей двійковий формат зберігає актив glTF (JSON, .bin і зображення) у двійковому блобі. Це також дозволяє уникнути проблеми збільшення розміру файлу, яка трапляється у випадку glTF. Формат файлу GLB забезпечує компактний розмір файлу, швидке завантаження, повне представлення 3D-сцени та можливість розширення для подальшого розвитку. Формат використовує модель/gltf-binary як тип MIME.

Формат файлу GLB - Додаткова інформація

Методи доставки вмісту, які використовує glTF, призводять до додаткової обробки для декодування двійкових даних у кодуванні base-64, а також збільшують розмір файлу на 33%. Ці методи доставки, які сприяли формуванню формату файлу GLB, включають:

  • glTF JSON вказує на зовнішні двійкові дані (геометрію, ключові кадри, оболонки) і зображення.
  • glTF JSON вбудовує двійкові дані в кодуванні base64 і вбудовані зображення за допомогою URI даних.

GLB як формат контейнера було введено як формат двійкового файлу для представлення активу glTF у двійковій блобі, щоб уникнути проблем, спричинених glTF. Специфікації формату файлу GLB слід використовувати для будь-якої реалізації програми читання/запису для розробки програм .

Структура файлу GLB

Формат файлу GLB заснований на маленькому порядку байтів, і його структура показує, що він містить:

  • 12-байтова преамбула під назвою заголовок.
  • Один або кілька фрагментів, що містять вміст JSON і двійкові дані.

Заголовок GLB

Заголовок формату файлу GLB складається з трьох 4-байтових записів:

  • uint32 magic - магія дорівнює 0x46546C67. Це рядок ASCII glTF, який можна використовувати для ідентифікації даних як двійкового glTF
  • версія uint32 - вказує версію формату контейнера Binary glTF
  • uin32 length - загальна довжина двійкового glTF, включаючи заголовок і всі фрагменти в байтах

Шматки

Кожна частина у файлі GLB має таку структуру:

uint32uint32ubyte[]
chunkLengthchunkTypechunkData
  • chunkLength - довжина chunkData в байтах
  • chunkType - вказує вказує на тип блоку
  • chunkData - бінарне корисне навантаження блоку

де типи фрагментів:

#Тип блокуASCIIОписВиникнення
1.0x4E4F534AJSONСтруктурований вміст JSON1
2.0x004E4942BINДвійковий буфер0 або 1

Початок і кінець кожного фрагмента повинні бути вирівняні до 4-байтової межі, і для цієї мети слід використовувати доповнення.

Структурований вміст JSON

Це має бути найперша частина активу Binary glTF і дає можливість реалізації поступово отримувати ресурси з наступних частин. Це також надає можливість читати лише вибрану підмножину ресурсів із двійкового активу glTF, наприклад найгрубішу LOD сітки. Щоб відповідати вимогам вирівнювання, цей блок має бути доповнений пробілами (0x20).

Двійковий буфер

Цей фрагмент містить бінарне корисне навантаження для геометрії, ключових кадрів анімації, оболонок і зображень. Він має бути другою частиною активу Binary glTF і має бути доповнений кінцевими нулями (0x00), щоб задовольнити вимоги до вирівнювання.

Посилання

Див. також