Convertir OBJ en GLTF

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.

  • Où cela s’exécute Dans votre navigateur. Le fichier n’est pas téléversé.
  • Reconstruit GLTF ne fonctionne pas comme OBJ. Il ne s’agit donc pas de la dégradation progressive d’un codec avec perte : ce que GLTF sait exprimer est reproduit fidèlement, et ce qui n’y a pas d’équivalent ne subsiste pas du tout.
  • Limite de taille Jusqu’à 100 Mo par fichier, gratuitement et sans compte.
  • Bon à savoir 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.

Jusqu’à 100 fichiers à la fois. Les formats mélangés ne posent pas de problème.

OBJ vers glTF comme voie d’accès à la chaîne d’outils 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.

La structure du document glTF écrit depuis un OBJ

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.

Le tampon arrive comme une URI de données base64 à l’intérieur du glTF

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.

Ajouter un matériau au glTF converti est une petite édition

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.

Ce que font les noms de groupe OBJ dans le JSON glTF

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.

Valider le glTF que vous récupérez d’un OBJ

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.

Comment l’OBJ est lu avant qu’un glTF ne soit écrit

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.

Pourquoi ce glTF est plus gros que le GLB équivalent

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.

Quand convertir un OBJ directement en GLB plutôt

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.

Comment convertir OBJ en GLTF

  1. Déposez votre fichier OBJ sur cette page, ou cliquez pour en choisir un.
  2. Choisissez GLTF comme destination. La conversion se fait dans votre navigateur et le fichier n’est pas téléversé.
  3. Téléchargez le fichier GLTF terminé.

OBJ et GLTF : ce qui change

OBJ face à GLTF
OBJGLTF
Nom completObjet WavefrontGL Transmission Format
Extension de fichier.obj.gltf
Type de médiamodel/objmodel/gltf+json
Première publication19922015
Publié parWavefront TechnologiesKhronos Group
SpécificationglTF 2.0
LicenceStandard ouvertStandard ouvert
Situation actuelleActuelActuel
S’ouvre dans un navigateurAucun navigateurAucun navigateur
Envisagé à la placePLY, STLGLB

Ouvrir le résultat

Blender lit aussi bien OBJ que GLTF : vous pouvez comparer le résultat à l’original sans second logiciel.

À quoi sert chaque format

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.

De OBJ à GLTF : questions fréquentes

Mon fichier OBJ est-il téléversé quelque part ?

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.

Convertir OBJ en GLTF est-il gratuit ?

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.

Y a-t-il une perte de qualité en convertissant OBJ en GLTF ?

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.

Dois-je installer quelque chose pour ouvrir un fichier GLTF ?

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.

En savoir plus sur ces formats