GLB vs glTF: в чём разница?
GLB vs glTF — это про упаковку, а не про данные: .gltf — читаемый JSON с отдельными файлами, .glb собирает всё в один. Отдавайте GLB, редактируйте glTF, конвертируйте без потерь.
- Спецификация Khronos glTF 2.0
- Измеренные размеры файлов
- Конвертация без потерь
GLB vs glTF: короткий ответ
glTF — открытый формат Khronos Group для доставки 3D-сцен в приложения и веб, а GLB — не отдельный формат, а его бинарный контейнер. Спецификация описывает оба: файл .gltf — это JSON (медиатип model/gltf+json), а файл .glb (model/gltf-binary) упаковывает тот же JSON плюс один бинарный буфер в один файл.
Так что вопрос «GLB vs glTF» — про упаковку, а не про качество. Меши, PBR-материалы, текстуры, анимации, скины и морф-таргеты сохраняются одинаково в обоих случаях. Меняется лишь то, со сколькими файлами вы имеете дело, можно ли открыть описание сцены в текстовом редакторе и сколько лишних байтов вы платите, если встраиваете бинарные данные в JSON.
Почти всем подходит GLB: один файл, который можно загрузить, отправить по почте или перетащить в three.js, Babylon.js, <model-viewer>, Blender, Unity или Unreal. Отдельный glTF берите, когда отлаживаете, вручную правите значения материалов или раздаёте текстуры между множеством моделей на CDN.
Таблица сравнения GLB и glTF
Оба варианта — glTF 2.0, поэтому большинство строк совпадает. Отличаются именно те строки, которые и решают выбор GLB или glTF для вашего проекта.
| GLB (.glb) | glTF (.gltf) | |
|---|---|---|
| Тип геометрии | Треугольные меши (а также точки и линии), иерархия узлов, скины, морф-таргеты | Идентично |
| Цвет / текстуры | Текстуры PNG или JPEG внутри бинарного чанка; вершинные цвета | Текстуры отдельными файлами изображений или data URI в base64 внутри JSON |
| Единицы измерения | Метры, правая система координат, +Y вверх — по спецификации | Идентично |
| Материалы | PBR metallic-roughness из коробки; больше возможностей через расширения KHR | Идентично |
| Размер файла | Самая компактная форма одного файла: 12-байтовый заголовок плюс JSON-чанк и BIN-чанк | Столько же байт, сколько у отдельных файлов; примерно на 33% больше, если бинарные данные встроены как base64 |
| Удобство редактирования | Бинарный; для просмотра нужен инструмент | JSON читается человеком и сравнивается в текстовом редакторе |
| Поддержка в программах | three.js, Babylon.js, model-viewer, Blender, Unity, Unreal, Godot, Windows 3D Viewer | Те же загрузчики; внешние файлы должны лежать в нужной относительной папке |
| Использование для печати | Не формат для печати; UltiMaker Cura его откроет, большинство слайсеров — нет | То же; для печати конвертируйте в STL или 3MF |
| Количество файлов | 1 | От 1 до многих (.gltf, .bin, изображения) |
Источник: спецификация Khronos glTF 2.0 — разделы о расширениях файлов, системе координат и единицах измерения, а также о формате файла GLB.
Как из glTF получается GLB-файл
GLB начинается с 12-байтового заголовка: магические байты glTF, версия (2) и общая длина. Дальше идут чанки. Первый — JSON-чанк, то самое описание сцены, которое содержал бы .gltf. Второй — BIN-чанк: в нём лежат позиции вершин, нормали, UV, индексы, ключевые кадры анимации и, как правило, сами изображения текстур.
Файл .gltf хранит этот JSON отдельно и ссылается на бинарные данные одним из двух способов: относительными путями к .bin и файлам изображений рядом с собой либо data URI, которые кодируют байты в base64 прямо внутри JSON. В самой спецификации отмечено, что base64 увеличивает длину полезной нагрузки на 33%, а декодирование требует дополнительных вычислений. Именно поэтому GLB и существует.
- GLB: заголовок + JSON-чанк + BIN-чанк, один файл
- glTF: JSON плюс .bin и изображения рядом
- Встроенный glTF: один файл, но base64 добавляет треть
Размер GLB и glTF: одна модель в трёх упаковках
Мы взяли текстурированную AI-модель из нашей галереи — рыцаря-робота в стиле стимпанк с 500,000 треугольников, 287,963 вершинами и тремя текстурами PNG 2048 x 2048 — и измерили каждый вариант упаковки.
| Упаковка | Файлы | Размер |
|---|---|---|
| GLB | 1 | 26.9 MB |
| glTF + .bin + текстуры PNG | 5 (.gltf, .bin, 3 PNG) | около 26.9 MB всего; один .gltf JSON — примерно 2 KB |
| glTF со встроенными данными base64 | 1 | около 35.9 MB |
| Из чего состоят байты | Геометрия 15.2 MB, текстуры 11.7 MB |
Упаковка ничего не уменьшает. Чтобы модель стала легче, сжимайте геометрию (Draco или meshopt), уменьшайте разрешение или перекодируйте текстуры, либо сокращайте число треугольников. Наши компрессор GLB и упроститель меша делают это прямо в браузере.
glTF и GLB в вебе, AR и Blender
В вебе GLB — практичный выбор по умолчанию: один запрос, одна запись в кеше, и любой крупный загрузчик его читает. Отдельные glTF-файлы могут выиграть на сайте, где показывают много моделей с общими текстурами, — браузер скачает общее изображение один раз; в примечаниях по реализации в самой спецификации описан этот компромисс.
Для AR: Scene Viewer на Android принимает glTF и GLB, а Quick Look на iPhone требует USDZ, поэтому публикуйте оба варианта и конвертируйте GLB в USDZ для устройств Apple. В Blender File > Import > glTF 2.0 читает и то, и другое, а в меню Format у экспортёра есть glTF Binary (.glb) и glTF Separate (.gltf + .bin + textures). Выбирайте Binary, если нет причин поступить иначе.
Для 3D-печати ни то, ни другое напрямую не подходит. Конвертируйте GLB в STL или 3MF: текстуры не напечатаются, а форма — да.
- Веб и обмен файлами: GLB
- Много моделей с общими текстурами: отдельный glTF
- AR на iPhone: конвертируйте в USDZ
- Печать: конвертируйте в STL или 3MF
GLB vs glTF: когда что использовать
Оба варианта — корректный glTF 2.0. Выбирайте по рабочему процессу.
Отправить модель кому угодно
Встраивание на сайт
Отладка сломанного материала
baseColorFactor, metallicFactor или индексы текстур, исправьте и перезагрузите.Каталог товаров с общими текстурами
Контроль версий
Избегайте: встроенный glTF
Конвертация glTF и GLB без поломок
Конвертация без потерь в обе стороны — при условии, что все упомянутые файлы на месте.
- Держите .gltf, .bin и изображения текстур в тех же относительных папках, в которых их экспортировали
- Загрузите результат в просмотрщик и убедитесь, что текстуры на месте, прежде чем делиться файлом
- Помните, что glTF — в метрах: фигурка 30 mm — это 0.03 единицы, и в некоторых программах она выглядит крошечной
- Сжимайте геометрию и текстуры для веба; одна переупаковка ничего не экономит
- Отправлять только файл .gltf; без .bin и изображений модель загрузится пустой или серой
- Переименовывать .gltf в .glb; бинарный заголовок должен записать конвертер
- Использовать встроенный base64 glTF для больших моделей; он добавляет около 33% к бинарным данным
- Ждать, что слайсер напечатает текстуры из GLB; для многоцветной печати конвертируйте в 3MF
Бесплатные просмотрщики и конвертеры GLB и glTF
Инструменты для обеих сторон GLB vs glTF. Всё работает в браузере без регистрации, а файлы остаются на вашем устройстве.
FAQ
Частые вопросы
GLB vs glTF: что лучше?
В чём разница между GLB и glTF — одним предложением?
Теряется ли качество при конвертации glTF в GLB?
Почему мой GLB такой большой?
Можно ли напечатать GLB или glTF на 3D-принтере?
В каких единицах измеряется glTF?
Какой формат выдаёт SupaVoxel?
Открывают ли iPhone файлы GLB?
Похожие инструменты и руководства
Продолжить
Начать бесплатно
Разобрались с GLB и glTF? Создайте модель
Превратите фото в 3D-модель — обычно меньше чем за минуту. Скачивание GLB бесплатно на первых 3 кредитах и без карты; модели с текстурами доступны на платном тарифе.
Без банковской карты · 3 бесплатных кредита на старте