.GLTF вариант №
glTF (формат передачи GL) — это формат файла 3D, в котором информация о 3D-модели хранится в формате JSON. Использование JSON минимизирует как размер 3D-ресурсов, так и время выполнения, необходимое для распаковки и использования этих ресурсов. Он был адаптирован для эффективной передачи и загрузки 3D-сцен и моделей приложениями. glTF был разработан рабочей группой Khronos Group по 3D-форматам и также описывается его создателями как JPEG 3D.
Формат файла GLTF определяет расширяемый общий формат публикации для инструментов и сервисов 3D-контента, который оптимизирует рабочие процессы разработки и обеспечивает функциональное взаимодействие использования контента в отрасли. Цель создания формата файлов glTF состояла в том, чтобы определить расширяемый общий формат публикации для инструментов и сервисов 3D-контента, который должен упростить рабочие процессы разработки и обеспечить возможность функционального использования контента в отрасли. Это сводит к минимуму обработку во время выполнения приложениями, использующими WebGL и другие API.
Краткая история файла GLTF
Первые спецификации для формата файла glTF 1.0 были объявлены в октябре 2015 года. Это стало серией усилий, начатых Khronos в марте 2012 года. Цель этих усилий состояла в том, чтобы оценить возможности, связанные с распространением WebGL. В результате первая демонстрация формата glTF, основанная на формате JSON, была представлена на встрече WebGl в 2012 году. Формат время от времени применялся несколькими компаниями, включая Cesium, 3D Tiles, Oculus, Microsoft, Archilogic и другие.
glTF 2.0 был опубликован 5 июня 2017 года на конференции Web3D 2017. После этого существует длинный список компаний, которые приняли формат файла glTF.
Формат файла GLTF
Спецификации формата файла для glTF 2.0 доступны онлайн для справки, и с ними следует обращаться в любой реализации, связанной с чтением/записью, для поддержки формат файла glTF.
glTF определяет активы как файлы JSON с вспомогательными внешними данными. Он представляет 3D-модели с помощью:
- Полное описание сцены, содержащееся в файле .glTF в формате JSON, которое включает информацию об иерархии узлов, материалах, камерах, а также информацию о дескрипторах для сеток, анимаций и других конструкций.
- Двоичные файлы (.bin), содержащие данные геометрии и анимации, а также другие данные на основе буфера.
- Файлы изображений (.jpg, .png) для текстур
Любые внешние активы, такие как изображения, хранятся во внешних файлах, на которые ссылаются через URI. Эти URI хранятся вместе с контейнером GLB или встроены непосредственно в JSON с использованием URI данных. Каждый допустимый glTF должен указывать свою версию.
glTF был разработан для достижения небольшого размера файла, быстрой загрузки, полного представления трехмерной сцены и расширяемости. Эти уникальные цели дизайна являются основными причинами популярности формата файла glTF в 3D-области. Ниже приведены типы mime, поддерживаемые форматом файла glTF для различных типов файлов:
- В файлах .gltf используется модель/gltf+json
- .bin файлы используют application/octet-stream
- Файлы текстур используют официальный тип image/*, основанный на конкретном формате изображения. Для совместимости с современными веб-браузерами поддерживаются следующие форматы изображений: image/jpeg, image/png.
Кодировка JSON
glTF накладывает следующие дополнительные ограничения на формат файла JSON.
Чтобы упростить реализацию на стороне клиента, glTF имеет дополнительные ограничения на формат и кодировку JSON.
- JSON должен использовать кодировку UTF-8 без спецификации.
- Все строки, определенные в этой спецификации (имена свойств, перечисления), используют только кодировку ASCII и должны быть записаны как обычный текст, например, «буфер» вместо
"\u0062\u0075\u0066\u0066\u0065\u0072"
. - Имена (ключи) внутри объектов JSON должны быть уникальными, т. е. не допускаются дубликаты ключей.
URI
На буферы и ресурсы изображений ссылаются через URI. Следующие два типа URI должны поддерживаться клиентами.
URI данных: URI данных определены в RFC 2397 и используются glTF для встраивания ресурсов в JSON.
Относительные пути URI: или схема пути, как определено в RFC 3986, раздел 4.2 — без схемы, полномочий или параметров. Зарезервированные символы должны быть закодированы в процентах в соответствии с RFC 3986, раздел 2.2.