Конвертер glTF из JSON в glTF Binary
Конвертация ресурсов glTF JSON в контейнеры glTF Binary объединяет отдельные текстовые манифесты, бинарные буферы и текстуры в единый файл для более быстрой доставки через веб.
Сравнение форматов и технические характеристики
| Характеристика | GLTF | GLB |
|---|---|---|
| MIME-тип | model/gltf+json | model/gltf-binary |
| Тип | runtime 3D asset transmission | self-contained binary 3D container |
| Сжатие | lossless JSON manifest + external binary buffers | binary packaged JSON, buffers, and textures |
| Стандартная спецификация | Khronos glTF 2.0 Specification | Khronos glTF 2.0 Binary Container |
| Сигнатура файла (Magic Bytes) | 7B 22 61 73 73 65 74 22 ({"asset" JSON root) | 67 6C 54 46 02 00 00 00 (glTF version 2 binary container) |
Обзор формата и применение
Формат glTF JSON сохраняет 3D-сцены с использованием структуры в виде обычного текста. Этот текстовый файл указывает на внешние бинарные файлы и изображения текстур. Хотя такая установка помогает разработчикам редактировать материалы и узлы геометрии непосредственно в редакторах кода, перемещение модели требует управления несколькими файлами одновременно. Если один файл текстуры потеряется или путь к файлу нарушится, 3D-модель не сможет корректно загрузиться в браузерах и игровых движках. Конвертация glTF JSON в glTF Binary объединяет все эти разрозненные элементы в один упакованный файл. 3D-художники и веб-разработчики используют этот шаг конвертации перед публикацией ресурсов на производственных веб-серверах или загрузкой их в программы просмотра дополненной реальности. Наличие единственного файла уменьшает количество HTTP-запросов, что ускоряет время загрузки для пользователей, посещающих страницы товаров электронной коммерции и интерактивные веб-приложения с 3D.
Технические спецификации и разбор кодеков
Формат glTF JSON использует MIME-тип model/gltf+json, опираясь на текстовый манифест JSON в сочетании с внешними bin-файлами и изображениями. В то же время формат GLB использует MIME-тип model/gltf-binary и упаковывает все в один двоичный контейнер. Файл GLB начинается с 12-байтового заголовка, содержащего 4-байтовый магический номер (magic number), установленный в значение 0x46546C67, 4-байтовый номер версии и 4-байтовую общую длину файла. За этим заголовком следуют чанки (блоки), в которых хранятся манифест JSON и данные бинарного буфера. Ни один из форматов не изменяет лежащую в основе геометрию сетки или пиксели текстуры во время конвертации, что означает строгую безошибочность процесса.
Совместимость с ОС и браузерами
Оба формата работают нативно в современных веб-браузерах с использованием рендереров WebGL и WebGPU без необходимости установки сторонних плагинов. Настольные операционные системы, такие как Windows и macOS, поддерживают просмотр GLB с помощью встроенных инструментов предварительного просмотра файлов. Мобильные платформы, включая iOS и Android, отображают файлы GLB напрямую в приложениях дополненной реальности Quick Look и Scene Viewer.
💡 Полезная информация
Сохраняйте исходные текстуры в формате PNG или JPEG перед их упаковкой в файл GLB, чтобы сохранить визуальную точность без раздувания размера контейнера.
Сравнение форматов и технические характеристики
Типичный 3D-ресурс размером 15 МБ, разделенный между файлом glTF JSON и несколькими внешними текстурами, скачивается примерно за 3.0 секунды при стандартном соединении 4G, за 0.8 секунды на 5G и за 0.2 секунды в оптоволоконной сети.
Часто задаваемые вопросы
Как конвертировать glTF JSON в glTF Binary без потери качества?
Конвертация glTF JSON в GLB происходит абсолютно без потерь, так как процесс заключается лишь в переупаковке существующего текстового манифеста, бинарных буферов и файлов изображений в единый контейнер без изменения данных вершин или дополнительного сжатия пикселей текстур.
В чем разница между glTF JSON и glTF Binary?
glTF JSON использует читаемый человеком текстовый файл, который ссылается на внешние bin-файлы и файлы изображений, в то время как glTF Binary упаковывает текстовый манифест, данные геометрии и текстуры в один автономный файл с заголовком из сигнатурных байтов.