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 OBJ 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 OBJ
glTF et sa forme binaire ont huit et neuf ans de moins que la plupart des logiciels que les ingénieurs et artistes ont réellement installés. Wavefront a publié OBJ en 1992 et c’est encore le plus petit dénominateur commun : Blender, MeshLab et Maya le lisent, et il en va de même de presque tout importateur CAO, outil de réparation de mesh, slicer et utilitaire académique écrit depuis. Un GLB arrivant d’un pipeline web dans ce monde-là doit devenir un OBJ pour être ouvert du tout.
La conversion mérite d’être comprise comme une rétrogradation de nature plutôt qu’une rétrogradation de qualité. Un GLB est une scène : hiérarchie de nœuds, matériaux, textures, animation, caméras. Un OBJ est une liste de points et les triangles entre eux, plus un pointeur vers un fichier de matériau séparé. Tout ce qui n’est pas géométrie doit trouver ailleurs où vivre, et dans cette conversion il n’y va pas.
Trois genres de lignes et rien d’autre. Une ligne de commentaire nommant l’enregistreur, une ligne o par mesh portant le nom depuis le GLB, une ligne v par sommet avec trois coordonnées décimales, et une ligne f par triangle avec trois indices. Pas de lignes vt, pas de lignes vn, pas de groupes s de lissage, pas de usemtl, pas de mtllib.
La convention d’indexation est ce qui piège les gens qui écrivent leurs propres parseurs : les indices OBJ commencent à un, pas à zéro, et ils comptent à travers tout le fichier plutôt que de redémarrer à chaque groupe. Le convertisseur suit ce décalage au fil des meshes, donc un second objet référençant son propre premier sommet est écrit avec le total cumulé ajouté. Avoir cela faux produit un OBJ qui s’ouvre et montre les mauvais triangles, ce qui est pire qu’un OBJ qui échoue.
Un OBJ n’a jamais contenu les matériaux lui-même. Il contient une ligne mtllib nommant un fichier .mtl compagnon, et ce fichier contient les couleurs, la brillance et les chemins de texture. Ce convertisseur n’écrit aucune ligne mtllib et ne produit pas de .mtl, donc l’OBJ est matériellement vide et votre importateur applique son gris par défaut.
Cela découle du fait de ne lire que la géométrie. Les paramètres metallic-roughness du GLB, ses textures de couleur de base et de normale et ses coordonnées UV ne sont jamais extraits, donc il n’y a rien à écrire dans un MTL qui ne serait pas inventé. L’inventer serait pire : un MTL avec des défauts d’apparence plausible dit à un artiste en aval que le matériau vient de la source alors qu’il n’en vient pas.
Chaque nom de mesh glTF est écrit comme la ligne o de l’OBJ pour ce groupe, donc un modèle assemblé de composants nommés — boîtier, support, couvercle — s’importe dans Blender ou Maya comme trois objets nommés plutôt qu’une forme fusionnée. Un mesh sans nom dans la source reçoit un nom généré pour que la structure de groupes reste lisible.
Cela compte plus que ça n’en a l’air. Dans une conversion de géométrie seule, les noms sont à peu près la seule information sémantique qui survit, et c’est ce qui permet à quelqu’un en bout de chaîne de réattribuer les matériaux aux bonnes pièces. Si vos GLB ont des meshes non nommés et que vous aurez besoin de la distinction, nommez-les avant l’exportation plutôt qu’après l’import.
glTF peut placer un mesh plusieurs fois en le référençant depuis plusieurs nœuds avec des matrices différentes. OBJ n’a pas d’équivalent. Le convertisseur tranche la différence en parcourant la scène, en composant la matrice de chaque nœud avec son parent, et en cuisant la transformation monde résultante dans les coordonnées de sommet avant de les écrire.
Donc un GLB avec un mesh de vis instancié soixante fois produit un OBJ avec soixante groupes et soixante copies complètes de la géométrie de vis. Le modèle a l’air correct — c’est la seule façon de le garder correct — et le fichier est soixante fois plus gros que la source instanciée dans cette région. Si votre logiciel de destination peut instancier, reconstruire l’instanciance là après import en vaut généralement la peine.
Aucune mise à l’échelle n’est appliquée. Quelles que soient les valeurs de coordonnées contenues dans le GLB, elles sont écrites dans l’OBJ inchangées, à la précision à laquelle JavaScript les imprime. C’est le bon comportement et c’est aussi un piège, parce que les deux formats signifient des choses différentes par un nombre.
glTF 2.0 définit son unité linéaire comme le mètre, donc une chaise modélisée à taille réelle a des coordonnées autour de 0,9. OBJ ne déclare aucune unité du tout et chaque importateur applique sa propre hypothèse — souvent des mètres dans Blender, souvent des centimètres ou des pouces dans les outils CAO plus anciens. Vérifiez la boîte englobante après import contre une dimension que vous connaissez, une fois, plutôt que de découvrir le facteur plus tard dans une pièce imprimée ou un assemblage.
Il passe tel quel. glTF stocke déjà les triangles comme des indices dans un tableau de positions partagé, donc il n’y a rien à reconstruire : chaque entrée dans l’accessor devient une ligne v dans le même ordre, et chaque indice devient une entrée f pointant dessus. Rien n’est fusionné sur ce chemin — l’étape de fusion qui rapproche les coordonnées coïncidentes s’applique à la lecture de STL et OBJ, où les doublons sont la norme, et pas ici.
Cela compte quand le GLB sort d’un exportateur sérieux, parce que glTF porte une UV et une normale par sommet. Un sommet situé sur une couture de texture ou une arête dure doit être dédoublé en deux ou trois copies à la même position pour que les attributs diffèrent. Ces copies survivent dans l’OBJ, où les attributs qui les justifiaient n’y sont pas, donc un modèle fermé peut signaler des arêtes limites le long de ses coutures. Merge by Distance dans Blender, ou Merge Close Vertices dans MeshLab, le règle en une commande.
Les trois l’importe sans configuration. Attendez-vous à un aspect facetté immédiatement : sans lignes vn dans le fichier, chaque importateur calcule des normales de face plates, et une surface courbe tessellisée en triangles a l’air de la coque polygonale qu’elle est. Shade Smooth dans Blender, ou un angle d’auto-lissage autour de 30 degrés, rétablit l’apparence que le GLB avait.
Attendez-vous à aucun matériau. En attribuer un est un travail de deux clics dans chacun des trois, et cela vaut la peine de le faire avant quoi que ce soit d’autre pour que le modèle soit visible contre l’arrière-plan de la fenêtre. Si le modèle n’apparaît pas du tout, la cause habituelle est l’échelle plutôt qu’un import raté — zoomer sur la sélection et lire le panneau de dimensions.
Si la destination lit glTF, ne convertissez pas. Blender, three.js, Babylon.js, Unity, Unreal, la Visionneuse 3D Windows et Aperçu macOS ouvrent tous un GLB avec ses matériaux intacts, et le faire passer par OBJ vous coûte tout cela pour rien.
Convertissez quand la destination ne sait vraiment pas lire glTF, ou quand vous voulez spécifiquement un fichier texte que vous pouvez inspecter, grep ou comparer en diff. Un OBJ est un sommet par ligne et une face par ligne, ce qui en fait le plus facile de ces six formats à vérifier à l’œil — et cette lisibilité, pas la fidélité, est son avantage restant sur tout ce qui est plus récent.
| GLB | OBJ | |
|---|---|---|
| Nom complet | Binary glTF | Objet Wavefront |
| Extension de fichier | .glb | .obj |
| Type de média | model/gltf-binary | model/obj |
| Première publication | 2016 | 1992 |
| Publié par | Khronos Group | Wavefront Technologies |
| Spécification | glTF 2.0 | — |
| Licence | Standard ouvert | Standard ouvert |
| Situation actuelle | Actuel | Actuel |
| S’ouvre dans un navigateur | Aucun navigateur | Aucun navigateur |
| Envisagé à la place | GLTF | GLTF, PLY, STL |
Blender lit aussi bien GLB que OBJ : vous pouvez comparer le résultat à l’original sans second logiciel.
Les deux visent des usages différents : GLB le web et la remise d’un fichier fini, OBJ l’échange entre programmes et la retouche. Cela mérite d’être pesé avant, car ce qui justifie l’un est souvent ce qui rend l’autre malcommode.
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.
OBJ vient de Wavefront Technologies et date de 1992. Blender, MeshLab et Maya le lisent.
OBJ a été publié en 1992 et GLB en 2016. Le plus ancien est en général le fichier le plus sûr à remettre ; le plus récent fait le même travail en moins d’octets.
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 OBJ 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.
Pas pour la conversion : elle se fait dans le navigateur que vous avez déjà ouvert. Pour ouvrir le résultat, il vous faut ensuite le logiciel avec lequel votre appareil affiche habituellement Wavefront Object.