[go: nahoru, domu]

Jump to content

GlTF

From Simple English Wikipedia, the free encyclopedia
glTF
Filename extension
.gltf, .glb
Internet media type model/gltf+json, model/gltf-binary
Developed by Khronos Group
First release 19 October 2015; 8 years ago (2015-10-19)
Latest release
2.0.0

11 July 2021; 2 years ago (2021-07-11)
Type of format 3D computer graphics
Website khronos.org/gltf

glTF is a file format for 3D models, 3D scenes, and 3D assets. It is a standard file format that can be read by many programs. A glTF file can have file extensions of .gltf (JSON/ASCII) or .glb (binary). Both .gltf and .glb files may use external resources, such as for images or mesh data. Or, both may have data embedded inside of them (as base64-encoded text in .gltf files or as raw bytes in .glb files).[1][2][3] glTF is an open standard developed and maintained by the Khronos Group. glTF supports 3D model geometry, appearance, scene graph hierarchy, and animation.[2] glTF is intended to be a simple, portable, and compatible format for 3D assets, reducing file size and runtime processing by apps.[2][4] As such, its creators have called it the "JPEG of 3D."[2]

Overview

[change | change source]

The glTF format stores data primarily in JSON. The binary .glb format is still JSON data, but saved as a binary blob instead of plain text. The JSON may also contain blobs of binary data known as buffers, and use external files, for storing mesh data, images, etc.[5]

The fundamental building blocks of a glTF scene are nodes. Nodes are organized into a hierarchy. Nodes may have other nodes defined as children. Nodes may have transforms relative to their parent. Nodes may use resources, such as meshes, skins, and cameras. Meshes may refer to materials, which refer to textures, which refer to images. Scenes are defined using an array of root nodes.[6]

Most of the top-level glTF properties use a flat hierarchy for storage. Nodes are saved in an array called "nodes", and are pointed to by index, including by other nodes. A glTF scene points to its root nodes by index. Furthermore, nodes point to meshes by index, which point to materials by index, which point to textures by index, which point to images by index.[5]

All glTF data structures can be extended using an "extensions" JSON property. This allows adding arbitrary JSON data to any part of the glTF. The specifics of the data are defined using an extension specification which builds on the base glTF spec. See the Extensions section for more information.[7]

Releases

[change | change source]

glTF 1.0

[change | change source]

Members of the COLLADA working group created glTF in 2012.[8] At SIGGRAPH 2012, Khronos showed a demo of glTF, which was then called WebGL Transmissions Format (WebGL TF).[3] On October 19, 2015, Khronos released the glTF 1.0 specification.[3]

Adoption of glTF 1.0

[change | change source]

At SIGGRAPH 2016, Oculus announced they were adopting glTF because of the similarities to their ovrscene format.[4][9] In October 2016, Microsoft joined the Khronos 3D Formats working group to work together on glTF.[10]

glTF 2.0

[change | change source]

glTF 2.0 was released in June 2017. glTF 2.0 was a huge change compared to version 1.0. Most tools adopted the 2.0 version.[2][3] Physically based rendering (PBR) was added, replacing WebGL shaders used in glTF 1.0, thanks to a proposal by Fraunhofer at SIGGRAPH 2016.[11] Changes were made to accessors and morph targets for facial animation. Top-level glTF object properties were replaced with arrays for faster index-based access.[12] There were many other schema tweaks and breaking changes compared to glTF 1.0. There is ongoing work towards import and export in Unity[13] and an integrated multi-engine viewer / validator.[14]

Adoption of glTF 2.0

[change | change source]

On March 3, 2017, Microsoft announced that they will be using glTF 2.0 as the 3D asset format in their apps, including Paint 3D, 3D Viewer, Remix 3D, Babylon.js, and Microsoft Office. Sketchfab also announced support for glTF 2.0. As of 2019, the glTF and GLB formats are used by companies including DGG, UX3D, Sketchfab, Facebook, Microsoft, Oculus, Google, Adobe, Box, TurboSquid, Unreal Engine[15] and Qt Quick 3D.[3][4][16] The glTF format is an important standard for augmented reality because it works with Autodesk Maya, Autodesk 3ds Max, and Poly.[17][18]

In February 2020, the Smithsonian Institution started their Open Access Initiative, releasing approximately 2.8 million 2D images and 3D models into the public domain, using glTF for the 3D models.[19]

In July 2022, glTF 2.0 was released as the ISO/IEC 12113:2022 International Standard.[20] Khronos said they will keep ISO/IEC 12113 updated with new glTF functionality to ensure that the ISO/IEC and Khronos specifications stay in sync.[21]

Extensions

[change | change source]

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 file. Khronos keeps a list of some glTF extensions on GitHub, including all official extensions from Khronos and a few third-party extensions.[7]

  • PBR extensions allow objects to look realistic, allowing developers to create 3D assets that look like real-world objects. New PBR extensions add new ways glTF objects can look.[22]
  • The KTX 2.0 extension for universal texture compression allows glTF files to store images in a way similar to native texture formats. This allows glTF files to have a reduced file size and increased rendering speed.[23]
  • Draco is a glTF extension for mesh compression, to compress and decompress 3D meshes. This reduces the size of glTF files. Draco compresses vertex attributes, normals, colors, and texture coordinates.[24]
  • Many glTF extensions for game engine usage have been developed by OMI group. This includes extensions for physics shapes, physics bodies, physics joints, audio playback, seats, spawn points, and more.[25][26]
  • VRM has developed glTF extensions for human-like 3D avatars including dynamic spring bones and toon materials.[27][28]

Derivative formats

[change | change source]

On August 10, 2015, 3D Tiles was built on glTF. 3D Tiles adds spatial data, metadata, and geospatial data. The geospatial data can be styled and streamed. 3D Tiles is now a proposed OGC Community Standard.[29][30][31]

VRM, a model format for VR, is built on the .glb format.[32] It is a 3D human avatar file format.[33]

Software ecosystem

[change | change source]

Khronos works on the glTF Sample Viewer to view assets, as part of the glTF Software ecosystem. Khronos also works on the Validator, which validates glTF assets.[34]

glTF files can be used in many open-source WebGL engines including PlayCanvas, Three.js, Babylon.js, Cesium, PEX, xeogl, and A-Frame. The Godot game engine supports and recommends glTF files, with both import and export support.[35][36]

Open-source glTF converters allow converting from COLLADA, FBX, and OBJ. Assimp can import and export glTF.

glTF files can be exported from many 3D editors, such as Blender, Vectary, Autodesk 3ds Max (natively or using Verge3D exporter[37]), Autodesk Maya (using babylon.js exporter[38]), Autodesk Inventor, Modo, Houdini,[39] Paint 3D, Godot, and Substance Painter.[40]

Open-source glTF utility libraries are available for programming languages including JavaScript, Node.js, C++, C#, Haskell, Java, Go, Rust, Haxe, Ada, and TypeScript.

3D Commerce, a standards group for 3D content in e-commerce, uses glTF for realistic 3D assets.[41] In June 2021, the 3D Commerce viewer certification program was launched, allowing 3D viewers to prove they can accurately and reliably display 3D products using the glTF file format.[42] 3D Commerce's asset guidelines, released in 2020, include best practices for using glTF files in 3D Commerce.[43]

[change | change source]

References

[change | change source]
  1. "glTF 2.0". blender.org. Retrieved 29 October 2020.
  2. 2.0 2.1 2.2 2.3 2.4 "glTF (GL Transmission Format) Family". loc.gov. Retrieved 29 October 2020.
  3. 3.0 3.1 3.2 3.3 3.4 Simkin, Aliaksei. "Behind the scene of 3D Magic". globant.com. Retrieved 29 October 2020.
  4. 4.0 4.1 4.2 Hamilton, Ian. "Oculus Executive Calls For 3D Equivalent Of JPEG To Build The Metaverse". uploadvr.com. Retrieved 29 October 2020.
  5. 5.0 5.1 "The Basic Structure of glTF". glTF Tutorials. Khronos. Retrieved 2023-10-03.
  6. "Scenes and Nodes". glTF Tutorials. Khronos. Retrieved 2023-10-03.
  7. 7.0 7.1 "glTF Extension Registry". KhronosGroup/glTF on GitHub. Khronos Group. Retrieved 2023-05-29.
  8. Houston, Ben. "glTF: Everything You Need to Know". threekit.com. Retrieved 29 October 2020.
  9. "Update" (PDF). www.khronos.org. 2016. Retrieved 2019-06-19.
  10. "Bringing 3D to everyone through open standards". Windows Developer Blog. 28 October 2016.
  11. "glTF 2.0". augmania.com. Archived from the original on 1 November 2020. Retrieved 29 October 2020.
  12. "glTF 2.0 syntax changes and JSON encoding restrictions · Issue #831 · KhronosGroup/glTF". GitHub. Retrieved 2017-09-26.
  13. UnityGLTF: Runtime GLTF Loader for Unity3D, The Khronos Group, 2017-09-26, retrieved 2017-09-26
  14. "Web-based client-side preview and validation · Issue #1081 · KhronosGroup/glTF". GitHub. Retrieved 2017-09-26.
  15. As of Unreal 5.1: "Importing glTF Files". Unreal Engine 5.1 Documentation. Epic Games. Retrieved 2023-05-29.
  16. Haslam, Oliver. "Adobe's new Aero app lets you create AR experiences on iPhone and iPad". imore.com. Retrieved 29 October 2020.
  17. "glTF is a huge deal for VR + AR". worldviz.com. Retrieved 29 October 2020.
  18. Nichols, Andy. "What is new in Qt Quick 3D 6.0". Qt Blog. The Qt Company. Retrieved 1 December 2022.
  19. Burns, Chris. "Smithsonian Open Access initiative releases loads of 3D models to public domain". slashgear.com. Retrieved 29 October 2020.
  20. "ISO/IEC 12113:2022 Information technology". International Organization for Standardization (ISO). 2022-07-26.
  21. "Khronos glTF 2.0 released as an ISO/IEC International Standard". develop3d.com.
  22. "The glTF ecosystem adds further PBR realism for web renders". Develop 3D. 3 December 2020. Retrieved 20 December 2021.
  23. "Khronos KTX 2.0 Ratified: Compress Your Textures with RapidCompact". Rapid Compact. 21 April 2021. Retrieved 20 December 2021.
  24. "Draco Compressed Meshes with glTF and 3D Tiles". Cesium. 9 April 2018. Retrieved 20 December 2021.
  25. "Who we are". Open Metaverse Interoperability Group. OMI group. Retrieved 2023-05-29.
  26. "OMI glTF extensions". omigroup/gltf-extensions on GitHub. OMI group. Retrieved 2023-05-29.
  27. "What is VRM?". VRM Consortium. VRM Consortium, Inc. Retrieved 2023-05-29.
  28. "VRM glTF extensions". vrm-c/vrm-specification on GitHub. VRM Consortium, Inc. Retrieved 2023-05-29.
  29. "Cesium 3D Tiles".
  30. "OGC is considering a proposed work item for 3D Tiles as a Community Standard".
  31. "3D Tiles Community Standards Justification".
  32. "VRM specification". github.com. Retrieved 29 October 2020.
  33. "VRM" (PDF). khronos.org. Retrieved 29 October 2020.
  34. "Khronos 3D Viewer Program". Graphic Speak. 16 June 2021. Retrieved 20 December 2021.
  35. "Importing 3D scenes". Godot Engine documentation. Archived from the original on 2021-10-22. Retrieved 2021-09-27.
  36. Engine, Godot. "Godot Engine - Why we should all support glTF 2.0 as THE standard asset exchange format for game engines". Godot Engine. Retrieved 2021-09-27.
  37. "How to make Facebook 3D posts". 3D Print Tech Design. Retrieved 2018-05-07.
  38. "Export Maya scene as glTF". Retrieved 2021-02-01.
  39. "glTF ROP output driver". Side FX.
  40. "GLB Tutorials". Facebook Developers. Archived from the original on July 29, 2019. Retrieved May 7, 2018.
  41. "Think 3D". Leading Print. 20 July 2020. Archived from the original on 29 May 2022. Retrieved 21 June 2022.
  42. "Khronos launches certification for 3D-animated online shopping". Venture Beat. 9 June 2021. Retrieved 21 June 2022.
  43. "How 3D Standards Will Simplify Image Creation And Usage In Retail". Retail Touch Points. 19 August 2020. Retrieved 21 June 2022.

Other websites

[change | change source]