Cookies de statistiques et de publicité
Nous utilisons des cookies de statistiques et de publicité, tous deux destinés à Google. Si vous refusez, rien ne change visiblement pour vous.Aller à la page de confidentialité
Vous pouvez convertir GLB en GLTF gratuitement et sans compte : déposez le fichier ci-dessus et, une ou deux secondes plus tard, le résultat est prêt à télécharger. La conversion se fait dans votre propre navigateur : le fichier n’est donc jamais téléversé. Cela marche sous Windows, macOS et Linux comme sur iPhone et Android, et continue de marcher si vous coupez le réseau.
Jusqu’à 100 fichiers à la fois. Les formats mélangés ne posent pas de problème.
Ils sont convertis les uns après les autres et reviennent ensemble dans un ZIP.
GLB en GLTF
Elle lit la géométrie dans le GLB et écrit un nouveau glTF autour. C’est une reconstruction, pas un reconditionnement. Les outils qui reconditionnent — gltf-pipeline avec --binary=false, ou gltf-transform — gardent le document d’origine intact et ne sortent que le buffer du conteneur binaire, ce qui veut dire que les définitions de matériau, les références de texture et les canaux d’animation survivent verbatim.
Ici ils ne survivent pas. Le convertisseur parcourt le graphe de scène, extrait les positions de sommets et les indices de triangle, et construit un document neuf avec un mesh par primitive et un nœud par mesh. Si votre raison de convertir est « je veux éditer le baseColorFactor et l’enregistrer », c’est le mauvais outil et gltf-transform est le bon. Si votre raison est « je veux voir ce qu’il y a dans ce fichier », continuez à lire.
Les deux sont glTF 2.0, la spécification du Khronos Group publiée en juin 2017 avec le conteneur binaire dedans dès le départ. Un .gltf est du JSON, avec les données de sommet soit dans un fichier .bin à côté, soit embarquées comme data URI. Un .glb est le même JSON avec le même buffer, concaténé dans un fichier binaire derrière un en-tête de douze octets dont les quatre premiers épellent glTF.
À l’intérieur d’un GLB le contenu se trouve en chunks : un chunk JSON étiqueté JSON et un chunk binaire étiqueté BIN, chacun complété à un multiple de quatre octets avec le padding compté dans la longueur déclarée, ce qui explique pourquoi chaque longueur de chunk dans un GLB valide est un multiple de quatre. C’est toute la différence entre les deux extensions. Rien dans le modèle ne change quand on passe de l’un à l’autre — ce qui est précisément la raison pour laquelle un convertisseur qui reconstruit le modèle, comme celui-ci, fait plus que ce que le changement d’extension laisse entendre.
Un seul fichier, toujours. Les données de sommet sont encodées en base64 dans une data URI sur l’unique entrée de buffer, donc il n’y a pas de fichier .bin à perdre et pas de chemin relatif à casser quand vous déplacez le fichier. Une conversion produit un téléchargement, et découper la sortie en deux fichiers rendrait cela faux.
Le base64 coûte quatre caractères pour trois octets, donc le buffer embarqué est environ 33 % plus gros que le binaire qu’il encode, et le JSON autour est en pretty-print avec indentation à deux espaces par-dessus. Pour un fichier que vous allez ouvrir dans un éditeur, c’est un compromis correct. Pour un fichier que vous allez servir à un navigateur, ce n’est pas le cas, et le GLB que vous avez déjà est le meilleur artefact.
La liste est longue et mérite d’être lue en entier : matériaux PBR metallic-roughness, textures couleur de base, normale, occlusion, émissive et metallic-roughness, samplers et images, coordonnées UV, normales de sommet, couleurs de sommet, tangentes, morph targets, skins et joints, samplers et canaux d’animation, caméras, lumières, et toute extension que le fichier déclare.
Ce qui survit, ce sont les positions de sommet, les indices de triangle et les noms de mesh. La hiérarchie de scène survit seulement en ce que son effet survit — voir la section suivante. Ce n’est pas une limitation du format glTF, qui contient tout cela confortément ; c’est une limitation de ce convertisseur, qui transporte la géométrie entre six formats qui ne sont d’accord sur presque rien d’autre.
Une scène glTF place d’ordinaire un mesh plusieurs fois avec des matrices différentes — quatre roues référençant un seul mesh de roue est l’exemple standard. Le convertisseur parcourt le graphe de scène depuis la scène par défaut, multiplie chaque matrice de nœud par celle de son parent, et applique la matrice monde résultante aux sommets avant de les écrire.
La conséquence, c’est que la forme que vous voyez est correcte et la structure ne l’est pas. Quatre roues arrivent comme quatre meshes avec quatre jeux de sommets à quatre endroits différents, plutôt qu’un mesh instancié quatre fois. La rotation, la translation et l’échelle d’un nœud données comme propriétés TRS séparées sont composées en une matrice d’abord, dans l’ordre des quaternions que glTF définit, donc un modèle construit ainsi arrive au même endroit qu’un modèle construit avec une matrice explicite.
La géométrie compressée Draco s’arrête sur une erreur nommée plutôt qu’un fichier cassé. KHR_draco_mesh_compression stocke les données de sommet dans un flux compressé qui a besoin de son propre décodeur, et ce décodeur n’est pas embarqué ici. Ré-exportez depuis Blender ou exécutez gltf-transform avec Draco désactivé et le fichier se lit normalement.
Les primitives qui ne sont pas des listes de triangles sont ignorées silencieusement plutôt que maltraitées. Le mode 4 de glTF est triangles ; les modes 0 à 3 sont points, lignes, polylignes et lignes étirées, et les modes 5 et 6 sont des triangles étirés et éventail. Un GLB ne contenant que de la géométrie linéaire — une superposition filaire, un chemin de débogage — produit le message indiquant qu’aucune géométrie triangulaire n’a été trouvée, ce qui est exact.
Ouvrez la sortie et le tableau accessors répond à la plupart des questions pour lesquelles on convertit un GLB. Chaque mesh apporte un accessor VEC3 float pour les positions et un accessor SCALAR unsigned-int pour les indices ; divisez le compte d’indices par trois pour le compte de triangles, et lisez le compte de sommets directement sur l’accessor de positions.
L’accessor POSITION porte aussi min et max, ce que la spécification exige et que les visionneuses utilisent pour cadrer le modèle. Ces six nombres sont la boîte englobante, et c’est le moyen le plus rapide de découvrir qu’un modèle que quelqu’un vous a envoyé est mille fois trop grand ou posé loin de l’origine. Les noms de mesh passent depuis la source, donc un modèle multi-pièces reste lisible.
Si le fichier va sur une page web, gardez le GLB. Il est plus petit, c’est une seule requête, et three.js, Babylon.js et model-viewer le chargent tous directement. Convertir en glTF pour la livraison grossit le fichier et, via ce convertisseur, retire les matériaux qui valaient la peine de l’afficher.
Si vous avez besoin de modifier quelque chose et de l’enregistrer, utilisez gltf-transform ou l’exporteur glTF de Blender. Si vous avez besoin d’inspecter un fichier rapidement sans rien installer, ou d’un artefact texte à comparer en diff avec un autre export, cette page est la voie courte. Être explicite sur cette limite est plus utile qu’une page qui suggère que chaque GLB devrait devenir un glTF.
La conversion est du JavaScript ordinaire qui tourne sur la page — pas de module WebAssembly à télécharger, pas de téléversement, pas de file. Le fichier est lu avec des API de type FileReader et le résultat est assemblé en un Blob que vous enregistrez ensuite. Le plafond gratuit est de 100 Mo, ce qui est un très gros GLB aux standards de tout ce qui est destiné au web.
Comme la sortie embarque son buffer en base64 dans du JSON en pretty-print, attendez-vous à ce que le .gltf soit plus gros que le .glb dont il vient même après que les matériaux ont été retirés — la géométrie est l’essentiel de la plupart des modèles, et le base64 la gonfle. Un GLB de 12 Mo dont la géométrie représente 9 Mo de cela atterrit autour de 12 Mo en glTF, sans aucune des textures.
| GLB | GLTF | |
|---|---|---|
| Nom complet | Binary glTF | GL Transmission Format |
| Extension de fichier | .glb | .gltf |
| Type de média | model/gltf-binary | model/gltf+json |
| Première publication | 2016 | 2015 |
| Publié par | Khronos Group | Khronos Group |
| Spécification | glTF 2.0 | glTF 2.0 |
| Licence | Standard ouvert | Standard ouvert |
| Situation actuelle | Actuel | Actuel |
| S’ouvre dans un navigateur | Aucun navigateur | Aucun navigateur |
| Envisagé à la place | OBJ | OBJ |
L’animation est conservée. GLB et GLTF acceptent plusieurs images, le résultat bouge donc encore.
Blender, three.js et Babylon.js lisent aussi bien GLB que GLTF : vous pouvez comparer le résultat à l’original sans second logiciel.
GLB est le format de Khronos Group, publié en 2016. La spécification est glTF 2.0, et elle mérite d’être connue si le fichier doit survivre à l’outil qui l’a écrit.
GLTF vient de Khronos Group et date de 2015, décrit par glTF 2.0. Blender, three.js et Babylon.js le lisent.
Non. Cette conversion se fait entièrement dans votre navigateur : le fichier ne quitte donc pas votre appareil. Vous pouvez le vérifier vous-même — ouvrez l’onglet réseau des outils de développement et convertissez quelque chose. Vous verrez la page elle-même et les requêtes de statistiques et de publicité qui financent ce service, et pas une seule qui transporte votre fichier.
Oui. Pas de compte, pas de filigrane et pas de quota journalier à dépenser : cela tourne sur votre propre machine, vous pouvez donc revenir autant de fois que vous voulez. Le navigateur traite des fichiers jusqu’à 100 Mo, 100 à la fois.
GLB et GLTF décrivent le contenu de façons radicalement différentes. La conversion est donc une reconstitution et non une copie : fidèle, mais pas identique octet pour octet. La géométrie seule. Les matériaux, les couleurs, les textures et l’animation ne suivent pas, et un modèle placé plusieurs fois revient avec chaque copie figée à sa propre position.
L’animation est conservée. GLB et GLTF acceptent plusieurs images, le résultat bouge donc encore.