| glTF | |
|---|---|
| Filename extension | .gltf,.glb |
| Internet media type | model/gltf+json, model/gltf-binary |
| Developed by | Khronos Group |
| Initial release | 19 October 2015; 10 years ago (2015-10-19)[1] |
| Latest release | |
| Type of format | 3D computer graphics |
| Extended from | JSON |
| Website | khronos |
glTF (Graphics Library Transmission Format or GL Transmission Format and formerly known asWebGL Transmissions Format or WebGL TF) is astandard file format forthree-dimensional scenes and models. A glTF file uses one of two possible file extensions:.gltf (JSON/ASCII) or.glb (binary). Both .gltf and .glb files may reference external binary and texture resources. Alternatively, both formats may be self-contained by directly embedding binary data buffers (asbase64-encoded strings in .gltf files or as raw byte arrays in .glb files).[3][4][5] An open standard developed and maintained by theKhronos Group, it supports3D model geometry, appearance,scene graph hierarchy, and animation.[4] It is intended to be a streamlined, interoperable format for the delivery of 3D assets, while minimizing file size and runtime processing by apps.[4][6] As such, its creators have described it as the "JPEG of 3D."[4]
The glTF format stores data primarily in JSON. The JSON may also contain blobs of binary data known as buffers, and refer to external files, for storing mesh data, images, etc.[7] The binary .glb format also contains JSON text, but serialized with binary chunk headers to allow blobs to be directly appended to the file.
The fundamental building blocks of a glTFscene arenodes. Nodes are organized into a hierarchy, such that a node may have other nodes defined as children. Nodes may havetransforms relative to their parent. Nodes may refer toresources, such asmeshes,skins, andcameras. Meshes may refer tomaterials, which refer totextures, which refer toimages. Scenes are defined using an array of root nodes.[8]
Most of the top-level glTF properties use a flat hierarchy for storage. Nodes are saved in an array and are referred to by index, including by other nodes. A glTF scene refers to its root nodes by index. Furthermore, nodes refer to meshes by index, which refer to materials by index, which refer to textures by index, which refer to images by index.[7]
All glTF data structures support being extended using a JSON property, allowing arbitrary JSON data to be added.[9]
Members of theCOLLADA working group conceived the file format in 2012.[10] AtSIGGRAPH 2012, Khronos presented a demo of glTF, which was then calledWebGL Transmissions Format (WebGL TF).[5] On October 19, 2015, Khronos released the glTF 1.0 specification.[5]
At SIGGRAPH 2016,Oculus announced their adoption of glTF citing the similarities to their ovrscene format.[6][11] In October 2016,Microsoft joined the 3D Formats working group at Khronos to collaborate on glTF.[12]
The second version, glTF 2.0, was released in June 2017, and is a complete overhaul of the file format from version 1.0, with most tools adopting the 2.0 version.[4][5] Based on a proposal by Fraunhofer[13] originally presented at SIGGRAPH 2016,physically based rendering (PBR) was added, replacingWebGLshaders used in glTF 1.0.[14] glTF 2.0 added the GLB binary format into the base specification. Other upgrades include sparse accessors and morph targets for techniques such as facial animation, and schema tweaks and breaking changes for corner cases or performance such as replacing top-level glTF object properties with arrays for faster index-based access.[15] There is ongoing work towards import and export in Unity[16] and an integrated multi-engine viewer and validator.[17]
On March 3, 2017, Microsoft announced that they will be using glTF 2.0 as the 3D asset format across their product line, includingPaint 3D,3D Viewer,Remix 3D,Babylon.js, andMicrosoft Office.Sketchfab also announced support for glTF 2.0. As of 2019, the glTF and GLB formats are used on and supported by companies including DGG, UX3D, Sketchfab,Facebook,[18] Microsoft, Oculus,Google,Adobe,Box,TurboSquid,Unreal Engine[19] andQt Quick 3D.[6][5][20][21] The format has been noted as an important standard foraugmented reality, integrating with modeling software such asAutodesk Maya,Autodesk 3ds Max, andPoly.[22][23]
In February 2020, theSmithsonian Institution launched their Open Access Initiative, releasing approximately 2.8 million 2D images and 3D models into the public domain, using glTF for the 3D models.[24]
In July 2022, glTF 2.0 was released as theISO/IEC 12113:2022 International Standard.[25] Khronos stated they will make regular submissions to bring updates and new widely adopted glTF functionality into refreshed versions of ISO/IEC 12113 to ensure that there is no long-term divergence between the ISO/IEC and Khronos specifications.[26]
The open-source game engineGodot supports importing glTF 2.0 files since version 3.0 and export since version 4.0.[27]
The glTF format can be extended with arbitrary JSON to add new data and functionality. Extensions can be placed on any part of a glTF, including nodes, animations, materials, textures, and on the entire document. Khronos keeps a non-comprehensive registry of glTF extensions on GitHub, including all official Khronos extensions and a few third-party extensions.[9]
On August 10, 2015, 3D Tiles, now a proposedOGC Community Standard, built on glTF to add a spatial data structure, metadata, and declarative styling for streaming massive heterogeneous 3D geospatial datasets.[35][36][37]
VRM, a model format for VR, is built on the .glb format.[38] It is a 3D humanoid avatar specification and file format.[39]
Khronos maintains the glTF Sample Viewer for viewing glTF assets. Khronos also maintains the glTF Validator for validating if 3D models conform to the glTF specification.[40][41]
glTF loaders are inopen-source WebGL engines[42] includingPlayCanvas,Three.js,Babylon.js, Cesium,[43] PEX,[44] xeogl,[45] and A-Frame.[46] TheGodot game engine supports and recommends the glTF format, with both import and export support.[47][48]
Open-source glTF converters are available fromCOLLADA,FBX, andOBJ.[49]Assimp can import and export glTF.
glTF files can also be directly exported from a variety of 3D editors, such asBlender,Freecad,Vectary,Autodesk 3ds Max (natively or usingVerge3D exporter[50]),Autodesk Maya (usingbabylon.js exporter[51]),Autodesk Inventor,Modo,Houdini,[52]Paint 3D,Godot, andSubstance Painter.[53]
Open-source glTF utility libraries are available for programming languages includingJavaScript,Node.js,C++,C#,Python,Haskell,Java,Go,Rust,Haxe,Ada, andTypeScript. Khronos keeps a list of these libraries and other related applications on their ecosystem site.[54]
3D WooCommerce Product Configurator, a working group of universal guidelines, standards and certifications for 3D content creation and distribution ine-commerce, incorporates glTF for transmission of photorealistic 3D assets.[55][56] In June 2021, the 3D Commerce viewer certification program was launched, enabling 3D viewers to demonstrate they can accurately and reliably display 3D products using the glTF file format.[57] 3D Commerce's asset guidelines, released in 2020, include best practices for use of the glTF file format in 3D Commerce.[58]