Définition et bref historique
GLTF (GL Transmission Format) est un format de fichier pour stocker des scènes et des modèles 3D, qui est extrêmement facile à comprendre (la structure est écrite dans la norme JSON), extensible et interagit facilement avec les technologies Web modernes. Ce format compresse bien les scènes tridimensionnelles et minimise le traitement d'exécution des applications à l'aide de WebGL et d'autres API. glTF est maintenant activement promu par le groupe Khronos en tant que JPEG du monde 3D.
GlTF est censé être un format de livraison d'actifs efficace et compatible qui comprime la taille des scènes 3D et minimise le traitement d'exécution par les applications utilisant WebGL et d'autres API. glTF définit également un format de publication commun pour les outils et services de contenu 3D.
La première mention de glTF remonte à 2012, mais elle est entrée en vigueur le 19 octobre 2015, avec l'annonce de la spécification glTF 1.0. Pour le moment, la 2ème version de la spécification (glTF 2.0) est utilisée, sortie le 3 mars 2017. Ensuite, nous ne parlerons que de glTF 2.0.
Une description détaillée des intérieurs de ce format peut être trouvée dans mes publications suivantes: la première partie et la deuxième partie
La base de glTF et ses avantages
glTF est basé sur 2 fichiers: JSON pour décrire la structure de la scène 3D entière et le fichier binaire, pour stocker toutes les données de la scène, y compris les cartes de texture qui peuvent être «cousues» dans le fichier binaire ou stockées par des fichiers externes. Il existe également une version binaire de glTF appelée GLB, dont la seule différence est que tout est stocké dans un fichier de 1 m avec l'extension GLB.
Comme avantages supplémentaires dans glTF, vous pouvez mettre en évidence:
- Une hiérarchie claire des objets dans la structure de la scène 3D
- Stockage des informations de scène telles que les sources de lumière et les caméras
- Prise en charge de l'animation squelettique (animation des articulations)
- Matériaux et shaders plus fiables.
Si vous comparez glTF et COLLADA, les fonctions qu'ils prennent en charge sont très similaires, mais en se souvenant que glTF est avant tout un "format de transfert", son avantage incontestable sera une bonne compatibilité avec les technologies Web. Pour donner une analogie, j'utiliserais les formats .PSD (Adobe Photoshop) et .JPG. Le premier est bon pour éditer le matériel source, mais pour le stockage et l'utilisation sur Internet, ils utilisent néanmoins JPG.
Aujourd'hui, la 3D vient au client de sources complètement différentes, chacune avec son propre format. Toutes les informations ne sont pas nécessaires à l'utilisateur, tous les formats ne peuvent pas être ouverts dans son application. La structure de la scène doit être analysée, les données de géométrie 3D converties au format requis par l'API graphique. Les données 3D doivent être transférées dans la mémoire de la carte vidéo, puis le processus de rendu peut être décrit à l'aide d'appels successifs à l'API graphique. Par conséquent, chaque application exécutable doit créer ses propres importateurs, téléchargeurs ou convertisseurs pour tous les formats de fichiers qu'elle prendra en charge, comme indiqué dans la diapositive.

Le format GLTF définit une norme pour représenter le contenu 3D sous une forme adaptée à une utilisation dans une application au moment de l'exécution. Les formats existants ne sont pas bien adaptés à la transmission sur Internet: certains ne contiennent que des informations sur la géométrie, certains contiennent absolument tout et se révèlent trop volumineux et difficiles à analyser, sans parler de l'exécution en temps réel (runtime).
GLTF a été conçu juste pour résoudre ce problème. Ce n'est pas «un autre format de fichier», dont il existe déjà beaucoup, c'est la définition du format de transmission des scènes 3D!
La structure de scène décrite par JSON peut être facilement analysée, les données 3D sont stockées sous une forme qui est facilement lisible et utilisée directement par les API graphiques, et donc il n'y a pas besoin de décoder ou de prétraiter les données 3D. De cette façon, GLTF peut aider à combler l'écart entre la création de contenu et le rendu.
