glTF (формат передачи графической библиотеки или формат передачи GL, ранее известный как формат передачи WebGL или WebGL TF) — это стандартный формат файлов для трехмерных сцен и моделей . Файл glTF использует одно из двух возможных расширений файла: .gltf ( JSON / ASCII ) или .glb ( двоичный ). Файлы .gltf и .glb могут ссылаться на внешние двоичные ресурсы и ресурсы текстур. В качестве альтернативы оба формата могут быть автономными за счет непосредственного внедрения буферов двоичных данных (в виде строк в кодировке Base64 в файлах .gltf или в виде массивов необработанных байтов в файлах .glb). [3] [4] [5] Открытый стандарт, разработанный и поддерживаемый Khronos Group , он поддерживает геометрию, внешний вид 3D-модели , иерархию графов сцен и анимацию. [4] Он задуман как оптимизированный, совместимый формат для доставки 3D-ресурсов, минимизирующий при этом размер файла и обработку приложений во время выполнения. [4] [6] Таким образом, его создатели описали его как « JPEG 3D». [4]
Формат glTF хранит данные преимущественно в формате JSON. JSON может также содержать блоки двоичных данных, известные как буферы, и ссылаться на внешние файлы для хранения данных сетки, изображений и т. д. [7] Бинарный формат .glb также содержит текст JSON, но сериализованный с заголовками двоичных блоков, чтобы можно было использовать большие двоичные объекты. для непосредственного добавления в файл.
Фундаментальными строительными блоками сцены glTF являются узлы. Узлы организованы в иерархию, так что у узла могут быть другие узлы, определенные как дочерние. Узлы могут иметь преобразования относительно своего родителя. Узлы могут ссылаться на ресурсы, такие как сетки, оболочки и камеры. Сетки могут относиться к материалам, которые относятся к текстурам, которые относятся к изображениям. Сцены определяются с использованием массива корневых узлов. [8]
Большинство свойств glTF верхнего уровня используют плоскую иерархию хранения. Узлы сохраняются в массиве под названием «узлы», и на них ссылаются по индексу, в том числе и другие узлы. Сцена glTF обращается к своим корневым узлам по индексу. Кроме того, узлы относятся к сеткам по индексу, которые относятся к материалам по индексу, которые относятся к текстурам по индексу, которые относятся к изображениям по индексу. [7]
Все структуры данных glTF поддерживают расширение с использованием свойства JSON «extensions». Это позволяет добавлять произвольные данные JSON в любую структуру данных, определенную с использованием спецификации расширения, основанной на базовой спецификации glTF. Дополнительную информацию смотрите в разделе «Расширения». [9]
Члены рабочей группы COLLADA придумали этот формат файла в 2012 году. [10] На SIGGRAPH 2012 компания Khronos представила демо-версию glTF, которая тогда называлась форматом передачи WebGL (WebGL TF). [5] 19 октября 2015 г. компания Khronos выпустила спецификацию glTF 1.0. [5]
На SIGGRAPH 2016 компания Oculus объявила о переходе на glTF, сославшись на сходство с их форматом ovrscene. [6] [11] В октябре 2016 года Microsoft присоединилась к рабочей группе по 3D-форматам в Khronos для совместной работы над glTF. [12]
Вторая версия, glTF 2.0, была выпущена в июне 2017 года и представляет собой полную переработку формата файла версии 1.0, при этом большинство инструментов используют версию 2.0. [4] [5] На основе предложения Фраунгофера [13] , первоначально представленного на SIGGRAPH 2016, был добавлен физически основанный рендеринг (PBR), заменяющий шейдеры WebGL , используемые в glTF 1.0. [14] glTF 2.0 добавил двоичный формат GLB в базовую спецификацию. Другие обновления включают разреженные средства доступа и цели морфинга для таких методов, как лицевая анимация, а также настройки схемы и критические изменения для крайних случаев или производительности, такие как замена свойств объекта glTF верхнего уровня массивами для более быстрого доступа на основе индекса. [15] Продолжается работа по импорту и экспорту в Unity [16] и интегрированному многодвижочному средству просмотра/валидации. [17]
3 марта 2017 года Microsoft объявила, что будет использовать glTF 2.0 в качестве формата 3D-ресурсов во всей своей линейке продуктов, включая Paint 3D , 3D Viewer , Remix 3D , Babylon.js и Microsoft Office . Sketchfab также объявил о поддержке glTF 2.0. По состоянию на 2019 год форматы glTF и GLB используются и поддерживаются такими компаниями, как DGG, UX3D, Sketchfab, Facebook , Microsoft, Oculus, Google , Adobe , Box , TurboSquid , Unreal Engine [18] и Qt Quick 3D . [6] [5] [19] [20] Этот формат был отмечен как важный стандарт дополненной реальности , интегрируемый с программным обеспечением для моделирования, таким как Autodesk Maya , Autodesk 3ds Max и Poly . [21] [22]
В феврале 2020 года Смитсоновский институт запустил свою инициативу открытого доступа, выпустив в общественное достояние около 2,8 миллиона 2D-изображений и 3D-моделей, используя glTF для 3D-моделей. [23]
В июле 2022 года glTF 2.0 был выпущен как международный стандарт ISO / IEC 12113:2022. [24] Компания Khronos заявила, что будет регулярно предоставлять обновления и новые широко распространенные функции glTF в обновленные версии ISO/IEC 12113, чтобы гарантировать отсутствие долгосрочных расхождений между спецификациями ISO/IEC и Khronos. [25]
С выпуском V4.x игрового движка Godot с открытым исходным кодом [26] формат gITF 2.0 полностью поддерживается. [27]
Формат glTF можно расширить с помощью произвольного JSON для добавления новых данных и функций. Расширения можно размещать в любой части glTF, включая узлы, анимацию, материалы, текстуры, а также во всем документе. Khronos ведет неполный реестр расширений glTF на GitHub, включая все официальные расширения Khronos и несколько сторонних расширений. [9]
10 августа 2015 года 3D Tiles, теперь предлагаемый стандарт сообщества OGC , построен на glTF и добавляет структуру пространственных данных, метаданные и декларативный стиль для потоковой передачи огромных гетерогенных наборов геопространственных 3D-данных. [35] [36] [37]
VRM, модельный формат виртуальной реальности, основан на формате .glb. [38] Это спецификация и формат файла трехмерного гуманоидного аватара. [39]
Khronos поддерживает средство просмотра образцов glTF для просмотра ресурсов glTF. Khronos также поддерживает валидатор glTF для проверки соответствия 3D-моделей спецификации glTF. [40] [41]
Загрузчики glTF находятся в движках WebGL с открытым исходным кодом , включая PlayCanvas , Three.js , Babylon.js , Cesium, PEX, xeogl и A-Frame. Игровой движок Godot поддерживает и рекомендует формат glTF с поддержкой как импорта, так и экспорта. [42] [43]
Конвертеры glTF с открытым исходным кодом доступны на сайтах COLLADA , FBX и OBJ . Assimp может импортировать и экспортировать glTF.
Файлы glTF также можно напрямую экспортировать из различных 3D-редакторов, таких как Blender , Vectary, Autodesk 3ds Max (встроенно или с помощью средства экспорта Verge3D [44] ), Autodesk Maya (с использованием средства экспорта babylon.js [45] ), Autodesk Inventor , Modo , Houdini , [46] Paint 3D , Godot и Substance Painter. [47]
Библиотеки утилит glTF с открытым исходным кодом доступны для языков программирования, включая JavaScript , Node.js , C++ , C# , Haskell , Java , Go , Rust , Haxe , Ada и TypeScript .
3D Commerce, рабочая группа по универсальным рекомендациям, стандартам и сертификации для создания и распространения 3D-контента в электронной коммерции , включает glTF для передачи фотореалистичных 3D-ресурсов. [48] В июне 2021 года была запущена программа сертификации средств просмотра 3D Commerce, позволяющая зрителям 3D продемонстрировать, что они могут точно и надежно отображать 3D-продукты с использованием формата файла glTF. [49] Рекомендации по активам 3D Commerce, выпущенные в 2020 году, включают лучшие практики использования формата файлов glTF в 3D Commerce. [50]