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 OBJ 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.
OBJ en GLTF
Quasiment tout ce qui est utile dans la pipeline 3D web moderne prend glTF en entrée. gltf-transform l’élague, le soude, le ré-échantillonne et le compresse ; le validateur Khronos le vérifie ; three.js et Babylon.js le consomment ; tout service d’optimisation d’assets le suppose. Un OBJ est en dehors de tout cela, et la première étape pour en faire entrer un est une conversion qui produit un document que ces outils acceptent.
La raison de cibler .gltf plutôt que .glb à ce stade est que la forme JSON est celle que vous pouvez lire et modifier. Un GLB est l’artefact que vous produisez à la fin de la pipeline, une fois que le matériau est correct et que la passe de compression a tourné. Cette page est pour le début de cette pipeline, où pouvoir ouvrir le fichier dans un éditeur vaut plus que pouvoir le servir en une requête.
Un bloc asset déclarant la version 2.0 et Quinvert comme générateur, un index de scène de 0, une scène listant chaque nœud, un nœud par maillage, un maillage par groupe OBJ, et par maillage une seule primitive avec mode 4, un attribut POSITION et un accesseur d’indices. Puis les accesseurs, les buffer views et un buffer.
Il est joliment indenté avec deux espaces, ce qui le rend environ un tiers plus gros que minifié et lisible sans formateur. Pour un document que vous allez éditer c’est le bon défaut ; le passer dans un minifieur est une commande et défaire un JSON de 40 000 lignes non formaté ne l’est pas.
glTF autorise trois manières de stocker les données de sommets : un fichier .bin séparé, une URI de données base64 dans le champ uri du buffer, ou le chunk binaire d’un GLB. Une conversion produit un fichier, donc l’URI de données est la seule option qui maintient la sortie autonome, et c’est ce qui est écrit.
Deux conséquences s’ensuivent. Le fichier est environ un tiers plus gros que les mêmes octets stockés en binaire, parce que base64 coûte quatre caractères pour trois octets — acceptable pour un document de travail et gaspilleur pour la livraison. Et chaque outil qui lit glTF le gère : gltf-transform, le validateur et three.js résolvent tous les tampons embarqués sans configuration particulière.
Le document n’a pas de tableau materials, parce que le fichier MTL de l’OBJ n’est pas lu. En ajouter un est quatre lignes : un tableau materials contenant un objet avec un bloc pbrMetallicRoughness et un baseColorFactor de quatre nombres, puis une propriété material sur la primitive donnant son index.
Cela vous donne un modèle coloré et correctement éclairé dans tout visualiseur glTF sans toucher à la géométrie. Les textures sont un travail plus important, parce qu’elles ont besoin d’images, de samplers, de textures et — chose critique — de données TEXCOORD_0 que cette conversion n’a pas produites. Si votre OBJ avait des UV et que vous en avez besoin, la voie honnête est Blender plutôt qu’une édition à la main.
Chaque ligne `o` ou `g` démarre un nouveau groupe, et chaque groupe devient un maillage nommé. Ce nom est le seul élément d’information non géométrique qui traverse la conversion, et dans un document que vous allez éditer c’est ce qui fait la différence entre trouver la pièce que vous vouliez et compter les nœuds.
Un groupe sans nom dans la source n’obtient pas de nom dans la sortie non plus. Le maillage est écrit sans propriété name, et le nœud qui le référence ne porte rien d’autre que l’index du maillage, donc tout ce qui est en aval doit inventer une étiquette pour lui. Si le glTF va être lu ou édité à la main ensuite, nommez les groupes dans l’OBJ d’abord — une édition de texte là est plus facile que de réconcilier des maillages anonymes dans le JSON après.
La sortie est écrite contre les parties de la spécification que les validateurs font vraiment respecter. Les buffer views sont complétées pour que chaque offset d’accesseur soit un multiple de la taille de son composant, ce qui est une exigence plutôt qu’une courtoisie et une cause fréquente d’erreurs de validateur dans les écrivains faits à la main. Chaque accesseur POSITION porte min et max, ce qui est requis et ce que les visualiseurs utilisent pour cadrer le modèle.
Un stride de zéro est traité comme étroitement empaqueté plutôt que comme un stride égal à la taille de l’élément, ce que dit la spécification et ce que plusieurs lecteurs obtiennent de manière opposée. Si vous exécutez le validateur glTF Khronos sur le résultat, la sortie intéressante n’est pas les erreurs mais la note de niveau info disant que les maillages n’ont pas de normales — ce qui est vrai, et que la spécification gère en disant aux visualiseurs d’en calculer des plates.
Les faces avec quatre coins ou plus sont triangulées en éventail depuis le premier coin. C’est correct pour les quads et n-gons convexes, ce que ces fichiers contiennent en pratique, et cela peut produire des triangles qui se chevauchent sur une face concave — une limitation qui mérite d’être sue si votre OBJ vient d’un outil qui émet des polygones complexes.
Les indices de face négatifs sont résolus pendant la lecture, puisqu’ils comptent à rebours depuis le sommet le plus récent et ne peuvent pas être interprétés hors contexte. Les sommets sont ensuite soudés par groupe à six décimales, donc un groupe qui référençait douze sommets d’un fichier de quatre mille en porte douze dans le glTF plutôt que quatre mille.
L’inflation base64 sur le tampon, plus le JSON joliquement indenté autour. Pour un modèle purement géométrique le tampon domine, donc attendez-vous à environ un tiers d’octets de plus que le même modèle en GLB, avant toute compression.
C’est le bon compromis à ce moment de la pipeline et le mauvais à la fin. La forme habituelle du travail est : convertir en glTF ici, éditer ou le traiter, puis produire le GLB comme artefact final — soit en reconvertissant, soit en faisant écrire gltf-transform, ce qui est aussi où appartient la compression Draco ou meshopt.
Si rien ne va arriver au fichier entre la conversion et la livraison, allez directement en GLB. Il est plus petit, c’est une seule requête, et l’éditabilité que vous payez avec les octets supplémentaires ne vaut rien si personne ne l’ouvre.
Choisissez glTF quand il y a une étape suivante : un matériau à ajouter, un validateur à satisfaire, une passe de transform à exécuter, ou un dépôt où un fichier texte se diff et un binaire ne se diff pas. Les deux conversions tournent entièrement dans votre navigateur sans moteur à télécharger, donc le choix ne coûte rien à part l’extension.
| OBJ | GLTF | |
|---|---|---|
| Nom complet | Objet Wavefront | GL Transmission Format |
| Extension de fichier | .obj | .gltf |
| Type de média | model/obj | model/gltf+json |
| Première publication | 1992 | 2015 |
| Publié par | Wavefront Technologies | Khronos Group |
| 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 | PLY, STL | GLB |
Blender lit aussi bien OBJ que GLTF : vous pouvez comparer le résultat à l’original sans second logiciel.
Les deux visent des usages différents : OBJ l’échange entre programmes et la retouche, GLTF le web et la remise d’un fichier fini. Cela mérite d’être pesé avant, car ce qui justifie l’un est souvent ce qui rend l’autre malcommode.
GLTF vient de Khronos Group et date de 2015, décrit par glTF 2.0. Blender, three.js et Babylon.js le lisent.
OBJ a été publié en 1992 et GLTF en 2015. 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.
OBJ 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.
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 GL Transmission Format.