Résumé (réponse directe)
Wavefront OBJ (.obj) est un format de fichier d’objet 3D ASCII orienté ligne, créé chez Wavefront Technologies vers 1990, et considéré comme indépendant des fournisseurs depuis le milieu des années 1990. [1] Dans son usage habituel, OBJ stocke la géométrie de maillages polygonaux au moyen d’instructions à mots-clés (avec des commentaires # et une continuation de ligne facultative \), tandis que la « prise en charge des textures » est assurée par référence à une bibliothèque externe de matériaux (.mtl) et à des fichiers image externes, plutôt que par l’incorporation de textures dans l’OBJ lui-même. [1]

Contexte historique
Le format Wavefront OBJ est associé à Wavefront Technologies et au logiciel Advanced Visualizer de l’entreprise, sa première utilisation étant décrite comme datant de « vers 1990 » dans la documentation de format de la Library of Congress (LC). [1] La même description de la LC caractérise OBJ comme un format ASCII qui, au milieu des années 1990, était considéré en pratique comme indépendant des fournisseurs, sans pour autant indiquer qu’il s’agit d’une spécification formellement normalisée. [1]
Selon la LC, OBJ restait largement utilisé en 2020, notamment dans les contextes où la couleur est importante (par exemple, les flux de travail d’impression 3D multicolore), malgré sa structure relativement simple et peu contrainte. [1] Cette utilisation persistante est souvent liée à la vaste prise en charge logicielle du format et à sa représentation textuelle inspectable, mais l’interopérabilité peut dépendre du sous-ensemble de la spécification mis en œuvre par un outil donné. [1]
Structure de fichier et syntaxe fondamentale
OBJ est organisé comme une suite d’instructions orientées ligne qui commencent par un jeton de mot-clé ; # introduit un commentaire, et les longues instructions peuvent être poursuivies à la ligne suivante au moyen d’une barre oblique inverse (\). [1] Les références principales citées décrivent cette structure à mots-clés et fondée sur des instructions, mais elles ne fournissent pas de spécification fiable et universellement imposée pour des éléments tels qu’un en-tête de fichier obligatoire, une taille maximale de fichier, des limites de précision numérique ou des blocs de métadonnées normalisés ; lorsque de telles contraintes existent en pratique, elles sont généralement propres à l’implémentation plutôt qu’imposées par les descriptions référencées. [1]
Référence rapide des mots-clés OBJ (mots-clés courants de maillage, regroupement et liaison de matériaux) :
v— position d’un sommet géométrique. [1]vt— coordonnée de texture (UV), généralement(u, v). [1]vn— normale de sommet. [1]f— élément de face polygonale. [1]p— élément de point. [1]l— élément de ligne. [1]g— instruction de groupe (utilisée pour organiser des éléments). [1]o— instruction de nom d’objet (utilisée pour étiqueter un objet). [1]mtllib— référence un fichier externe de bibliothèque de matériaux (.mtl). [1]usemtl— sélectionne un nom de matériau dans la bibliothèque de matériaux référencée pour les éléments suivants. [1]curv— élément de courbe libre. [1]curv2— élément de courbe 2D. [1]surf— élément de surface libre. [1]
Représentation géométrique (sous-ensemble de maillages polygonaux)
Dans son sous-ensemble le plus largement implémenté, OBJ représente une géométrie de surface polygonale à l’aide d’enregistrements de sommets et de faces. La description de la LC identifie v comme l’instruction obligatoire de position de sommet, avec des instructions facultatives de normale de sommet (vn) et de coordonnées de texture (vt). [1] Les coordonnées de texture dans OBJ sont couramment utilisées comme entrées de mappage UV, la LC indiquant que vt est généralement exprimé comme (u, v), bien que l’écosystème plus large puisse autoriser des composantes supplémentaires selon les conventions de l’exportateur. [1]

Les éléments de face (f) référencent ensuite par indice des enregistrements liés aux sommets définis précédemment, ce qui permet de spécifier une surface de maillage sous forme de polygones. [1] En plus des faces, la LC énumère d’autres primitives géométriques pouvant apparaître dans un OBJ, y compris les éléments de point (p) et de ligne (l), et elle décrit également un ensemble de capacités comprenant les courbes et surfaces libres (par exemple, curv, curv2 et surf). [1] Du point de vue pratique de l’interopérabilité, de nombreux pipelines traitent principalement OBJ comme un format d’échange de maillage polygonal, même si la famille de formats peut exprimer davantage que des triangles. [1]
La documentation de l’époque de la spécification d’OBJ (telle que reproduite dans une copie de l’Appendice B1) décrit également les sommets comme étant numérotés séquentiellement à partir de 1 lorsqu’ils sont chargés dans le flux de travail d’origine, et décrit le système de coordonnées comme étant droitier. [2] Les chaînes d’outils réelles peuvent appliquer des transformations supplémentaires lors de l’importation ou de l’exportation (par exemple, modifier les conventions d’axes), mais ce comportement est déterminé par l’application plutôt qu’imposé par la syntaxe OBJ décrite dans les références citées. [2]
Faces, indices et sémantique de regroupement
Les définitions de faces OBJ utilisent des indices à base 1 (et non à base 0), ce qui signifie que le premier sommet déclaré est référencé par l’indice 1. [1] La famille de spécifications autorise également les indices négatifs qui référencent des éléments par rapport à l’enregistrement lié au sommet défini le plus récemment, permettant des modèles tels que la définition entrelacée de sommets et de faces (par exemple, une face quadrilatère exprimée par f -4 -3 -2 -1 pour faire référence aux quatre derniers sommets). [3] La LC signale des problèmes d’interopérabilité pour OBJ, et l’utilisation d’indices négatifs constitue une source courante d’incompatibilité lorsque les importateurs ne supposent que des indices positifs et absolus. [1] Les instructions de regroupement (g) et de nommage d’objet (o) sont utilisées dans de nombreux exportateurs pour étiqueter ou organiser les éléments suivants, mais leur signification précise en aval (par exemple, la correspondance avec des « objets » d’application plutôt qu’avec des « groupes de maillage ») est définie par l’application plutôt qu’imposée sans ambiguïté par les descriptions référencées. [1]
Matériaux et « prise en charge des textures » (OBJ + MTL + fichiers image)
OBJ n’incorpore pas directement les textures ; il utilise à la place un fichier compagnon de bibliothèque de matériaux (MTL, .mtl) pour décrire les propriétés des matériaux, et l’OBJ référence cette bibliothèque par mtllib et sélectionne un matériau spécifique par usemtl. [1] La LC précise en outre que le rendu d’un OBJ avec l’apparence de couleur et de texture voulue peut nécessiter un ou plusieurs fichiers MTL ainsi que des fichiers image de texture supplémentaires en dépendances externes, ce qui est une cause fréquente de « textures manquantes » lorsque les ressources sont déplacées sans leurs fichiers associés. [1] Dans ce modèle, OBJ associe les faces (ou d’autres éléments ultérieurs) à un matériau nommé, tandis que le MTL associe ensuite ce matériau à des valeurs de paramètres et, facultativement, à des cartes image telles qu’une texture diffuse. [1][4]
Champs clés MTL (paramètres sélectionnés et couramment utilisés) :
| Mot-clé MTL | Rôle général | Plage typique / forme de valeur | Remarques |
|---|---|---|---|
newmtl |
Commence une nouvelle définition de matériau nommé. | Identifiant de chaîne. | MTL est ASCII et se compose d’une séquence de tels blocs de matériaux. [4] |
Ka |
Couleur ambiante. | Composantes RVB comprises entre 0 et 1. | Interprétée par les moteurs de rendu ; la LC documente les plages numériques, mais pas un modèle d’ombrage unique. [4] |
Kd |
Couleur diffuse. | Composantes RVB comprises entre 0 et 1. | Souvent associée à map_Kd pour une carte de texture diffuse. [4] |
Ks |
Couleur spéculaire. | Composantes RVB comprises entre 0 et 1. | Les caractéristiques liées à la réflexion sont incluses dans la description par la LC du périmètre de MTL. [4] |
Ns |
Exposant spéculaire (brillance). | Normalement de 0 à 1000. | La référence citée fournit une plage numérique typique, mais n’impose pas de BRDF particulière. [4] |
Ni |
Densité optique (indice de réfraction). | 0.001 à 10. | La plage est documentée dans la description MTL de la LC. [4] |
d |
Dissolution (opacité). | 0.0 transparent à 1.0 opaque. | MTL apparaît également dans l’écosystème avec des conventions Tr, mais les références principales citées ne fournissent aucune indication fiable à ce sujet. [4] |
illum |
Sélecteur de modèle d’illumination. | Code entier. | La LC inclut illum parmi les champs MTL typiques, mais ne définit pas le comportement du moteur de rendu au-delà de la présence de la famille de mots-clés. [4] |
map_Kd |
Référence de carte de texture de couleur diffuse. | Nom de fichier / chemin vers un fichier image. | Les textures sont des fichiers externes référencés par MTL, plutôt qu’incorporés dans OBJ. [4][1] |
Liste de contrôle de la « prise en charge des textures » (fichiers généralement requis pour un rendu conforme à l’intention) :
- Le fichier de géométrie
.obj. [1] - Un ou plusieurs fichiers
.mtlréférencés parmtllib. [1] - Des fichiers image de texture externes référencés par le MTL (par exemple, via
map_Kd). [4] - Un chargeur ou une application qui implémente l’analyse MTL ; la LC décrit la liaison OBJ–MTL, mais la prise en charge de l’ensemble complet des fonctions MTL varie selon les logiciels, et aucune exigence de conformité fiable n’est spécifiée dans les références principales citées. [1][4]
Courbes et surfaces libres (capacité de la spécification contre prise en charge réelle)
Au-delà des faces polygonales, la description de la LC indique qu’OBJ prend en charge les courbes et surfaces libres, et elle énumère des éléments relatifs aux formes libres tels que curv, curv2 et surf. [1] Des copies de documentation de l’époque de la spécification (telles que reproduites dans un texte de l’Appendice B1) décrivent un ensemble de fonctionnalités de modélisation plus large que les seuls maillages polygonaux, y compris des concepts de géométrie libre typiques des systèmes de modélisation de cette époque. [2] Toutefois, de nombreux flux de travail d’échange contemporains ne mettent en œuvre ou ne préservent que le sous-ensemble de maillages polygonaux ; les instructions de formes libres peuvent donc être ignorées, approximées ou perdues lors du passage entre des applications qui privilégient les représentations fondées sur des maillages. [1]
Extensions et conventions (couleur par sommet et variantes non normalisées)
La LC relève que la couleur par sommet ne fait pas partie de la spécification OBJ d’origine, mais elle documente une convention selon laquelle des valeurs RVB sont ajoutées aux lignes de coordonnées de sommet. [1] Selon cette convention, un enregistrement v peut contenir non seulement des composantes de position, mais aussi des composantes de couleur finales, généralement représentées dans une plage de 0 à 1, leur interprétation dépendant de l’importateur. [1]
Comme OBJ est largement implémenté et n’est pas régi, dans les références citées, par un programme de conformité unique et strictement appliqué, des conventions telles que la couleur par sommet peuvent accroître l’ambiguïté : certains outils traitent les composantes supplémentaires comme des couleurs, tandis que d’autres peuvent les considérer comme des champs supplémentaires non pris en charge ou les ignorer. [1] Les références principales citées ne fournissent aucune spécification fiable concernant un mécanisme d’extension universel, l’incorporation d’images de texture dans l’OBJ lui-même, ou des blocs de métadonnées normalisés comparables à ceux présents dans certains formats de type conteneur. [1]
Interopérabilité, empaquetage et modes de défaillance courants
Les problèmes d’interopérabilité avec les ressources OBJ proviennent souvent des dépendances externes et des variations des fonctionnalités de langage prises en charge par un importateur donné. La LC décrit explicitement la nécessité d’un ou plusieurs fichiers MTL et de fichiers image de texture complémentaires pour obtenir l’apparence souhaitée ; les échecs d’empaquetage comprennent donc couramment des fichiers .mtl manquants, des fichiers image référencés par MTL manquants (par exemple, des cartes diffuses) ou des hypothèses de chemin qui échouent lorsqu’une ressource est déplacée entre des répertoires ou des systèmes d’exploitation. [1][4] Une autre catégorie de défaillances concerne l’analyse et l’indexation : les indices à base 1 d’OBJ peuvent déclencher des erreurs de décalage d’une unité dans des chargeurs conçus autour de conventions de tableaux à base 0, et les indices négatifs (adressage relatif tel que -1 pour le sommet défini le plus récemment) peuvent échouer dans les logiciels qui n’implémentent pas cette fonction. [1][3] Enfin, l’interprétation des matériaux peut varier, car MTL fournit un ensemble de paramètres (couleurs, références de texture et caractéristiques liées à la réflexion), mais n’impose pas, dans les références citées, un modèle d’ombrage physique unique ; par conséquent, le même MTL peut être rendu différemment selon les applications, même lorsque les fichiers sont présents. [4]
Tableau comparatif — OBJ contre STL contre PLY contre glTF contre FBX
La comparaison suivante se concentre sur les capacités au niveau des fonctionnalités qui sont explicitement prises en charge (ou explicitement absentes) dans les références principales citées. Pour les formats dont l’ensemble de références du brief ne comprend pas de spécification principale, le tableau indique « Aucun chiffre/spécification fiable trouvé » plutôt que d’inférer les capacités à partir de connaissances générales.
Dans les pipelines de fabrication additive (AM) et de visualisation, les différences d’expression de la couleur/des matériaux et de représentation de la scène sont des facteurs courants dans le choix des formats d’échange. ISO/ASTM 52915:2020 et NIST AMS 300-10 caractérisent toutes deux STL comme limité aux maillages de surface, ISO/ASTM signalant explicitement l’absence de dispositions pour représenter la couleur, la texture, le matériau et les attributs associés. [6][7] À l’inverse, glTF 2.0 définit des scènes et des hiérarchies de nœuds, et sépare les données de texture en textures, images et échantillonneurs, avec des matériaux fondés sur le rendu physiquement réaliste (PBR) métallique-rugosité. [8]
| Format | Portée géométrique (selon les références citées) | Matériaux / textures (selon les références citées) | Scène, métadonnées et autres remarques (selon les références citées) |
|---|---|---|---|
OBJ (.obj) |
Prend en charge les maillages polygonaux ainsi que les courbes/surfaces libres (les éléments comprennent p, l, f, curv, curv2, surf). [1] |
Utilise un MTL externe référencé par mtllib et sélectionné par usemtl ; textures référencées via MTL et images externes. [1][4] |
La LC indique l’absence d’incorporation structurée de métadonnées et de chiffrement/protection technique interne ; commentaires via #. [1] |
STL (.stl) |
Définit uniquement un maillage de surface. [6][7] | Aucune disposition pour représenter la couleur, la texture, le matériau, la sous-structure et les attributs associés dans la norme citée ; le NIST oppose de même STL à AMF pour ces fonctionnalités. [6][7] | Aucun chiffre/spécification fiable trouvé dans les références principales citées concernant les graphes de scène ou l’animation STL. |
PLY (.ply) |
Aucun chiffre/spécification fiable trouvé dans les références principales citées. | Aucun chiffre/spécification fiable trouvé dans les références principales citées. | Aucun chiffre/spécification fiable trouvé dans les références principales citées. |
| glTF 2.0 | Aucun chiffre/spécification fiable trouvé dans les références principales citées pour les courbes/surfaces libres de type CAO ; glTF définit des scènes et des hiérarchies de nœuds. [8] | Les textures sont séparées en Textures, Images et Samplers ; les matériaux sont PBR (métallique-rugosité). [8] | glTF est spécifié par Khronos ; l’en-tête de version indique l’horodatage 2.0.1 2021-10-11. [8] |
FBX (.fbx) |
Aucun chiffre/spécification fiable trouvé dans les références principales citées. | Aucun chiffre/spécification fiable trouvé dans les références principales citées. | Aucun chiffre/spécification fiable trouvé dans les références principales citées. |
Applications et contexte archivistique
Dans les flux de travail institutionnels et axés sur la préservation, OBJ apparaît comme une option d’échange acceptée pour certaines catégories de contenu 3D. La Recommended Formats Statement (RFS) 2025–2026 de la LC répertorie Wavefront (.obj) comme un format acceptable pour les « objets 3D numérisés (sortie d’une numérisation par photogrammétrie) », ce qui reflète sa présence continue dans les pipelines de numérisation et de photogrammétrie, où les maillages de surface sont des résultats courants. [5] Plus largement, la description du format par la LC souligne l’utilisation pérenne d’OBJ et sa structure textuelle orientée mots-clés, tout en documentant des limitations telles que les dépendances externes de matériaux/textures et l’absence d’incorporation structurée de métadonnées. [1]

Questions-réponses (FAQ)
1) À quoi sert le format OBJ (Wavefront .obj) en tant que fichier d’objet 3D ?
Wavefront OBJ est un format de fichier de géométrie 3D ASCII orienté ligne dans lequel chaque instruction commence par un jeton de mot-clé, # introduisant les commentaires ; il est largement utilisé pour représenter la géométrie de surface de maillages polygonaux, et la LC décrit également la prise en charge de types d’éléments supplémentaires au-delà des faces. [1]
2) Le format OBJ prend-il en charge les textures — et comment fonctionne cette prise en charge des textures OBJ ?
La « prise en charge des textures » OBJ est mise en œuvre par référence à un fichier MTL compagnon au moyen de mtllib et par sélection de matériaux au moyen de usemtl ; le MTL référence ensuite des fichiers image externes (par exemple, via map_Kd), de sorte que les textures ne sont pas incorporées dans l’OBJ lui-même et doivent être fournies comme dépendances séparées. [1][4]
3) Qu’est-ce qu’un fichier MTL dans un flux de travail Wavefront OBJ ?
MTL est un format compagnon ASCII composé de définitions de matériaux qui commencent par newmtl et peuvent inclure des paramètres de couleur, de texture et de caractéristiques liées à la réflexion ; la LC documente des champs courants incluant Ka/Kd/Ks (composantes RVB entre 0 et 1), Ns (normalement de 0 à 1000), Ni (0.001 à 10) et d (0.0 transparent à 1.0 opaque), et elle indique que map_Kd est une référence de nom de fichier de texture diffuse. [4]
4) Pourquoi les indices de face OBJ commencent-ils à 1 (et non à 0), et que sont les indices négatifs ?
La LC décrit les indices de face OBJ comme étant à base 1, ce qui signifie que les références de sommets commencent à 1 plutôt qu’à 0, et les indices négatifs sont une fonctionnalité selon laquelle les indices font référence à des éléments par rapport au maximum actuel (par exemple, -1 faisant référence au sommet défini le plus récemment), permettant l’entrelacement des instructions de sommets et de faces mais pouvant réduire la compatibilité avec les importateurs qui n’implémentent pas l’indexation négative. [1][3]
5) OBJ peut-il stocker des métadonnées, du chiffrement ou une protection de type DRM ?
La documentation de format de la LC indique qu’OBJ ne prend pas en charge l’incorporation de métadonnées structurées (au-delà de l’utilisation de commentaires) et qu’il ne possède aucune capacité interne de chiffrement ou autre protection technique. [1]
6) OBJ contre STL contre glTF — quels formats prennent en charge les informations de couleur/texture/matériau ?
Dans les références citées, STL est caractérisé comme limité aux maillages de surface et comme ne comportant aucune disposition pour représenter des informations de couleur, de texture ou de matériau. [6][7] OBJ peut associer de la géométrie à des matériaux via des bibliothèques MTL externes et peut référencer des images de texture externes (par exemple, map_Kd) plutôt que d’incorporer les textures. [1][4] glTF 2.0 spécifie des matériaux fondés sur le PBR (métallique-rugosité) et sépare les données de texture en textures, images et échantillonneurs dans un modèle orienté scène. [8]
Sources
- Library of Congress FDD — Format de fichier Wavefront OBJ (fdd000507)
- Spécification du format de fichier OBJ (miroir de l’Appendice B1)
- Notes de cours de Clemson University — Format de fichier OBJ (indices négatifs)
- Library of Congress FDD — Format de fichier Wavefront MTL (fdd000508)
- Library of Congress — Déclaration des formats recommandés 2025–2026 (PDF)
- Exemple PDF ISO/ASTM 52915:2020 — Déclaration des limitations STL
- NIST AMS 300-10 (juillet 2020) — Maillage de surface STL et comparaison AMF
- Spécification Khronos glTF 2.0
