Le OBJ (Wavefront Object) est un format de fichier 3D ouvert et simple, créé par Wavefront Technologies dans les années 80. C’est le format le plus universel pour échanger des Mesh Mesh Structure de base d'un objet 3D composée de vertices, edges et faces formant une surface polygonale. C'est la géométrie fondamentale de tout modèle 3D. Voir la définition complète → statiques entre logiciels. Sa simplicité est sa force : tout logiciel 3D peut lire un fichier OBJ.
Le principe
Le format OBJ est un fichier texte lisible par un humain. Il stocke :
- Les positions des Vertex (v)
- Les coordonnées UV (vt)
- Les normales (vn)
- Les Face Face Surface plane délimitée par au moins trois edges. Les faces sont les polygones visibles du mesh, ceux qui reçoivent textures, matériaux et éclairage. Voir la définition complète → s (f)
- Les groupes d’objets (g)
- Les références aux matériaux (usemtl)
C’est tout. Pas d’animation, pas de rig, pas de hiérarchie complexe. Juste de la géométrie pure.
Structure d’un fichier OBJ
Un fichier OBJ est du texte brut :
# Commentaire
mtllib materiau.mtl
v 0.0 0.0 0.0
v 1.0 0.0 0.0
v 1.0 1.0 0.0
v 0.0 1.0 0.0
vt 0.0 0.0
vt 1.0 0.0
vt 1.0 1.0
vt 0.0 1.0
vn 0.0 0.0 1.0
usemtl MonMateriau
f 1/1/1 2/2/1 3/3/1 4/4/1
Cette simplicité permet de débugger ou même d’éditer un OBJ avec un simple éditeur de texte.
Le fichier MTL (matériaux)
Le fichier OBJ est souvent accompagné d’un fichier .mtl (Material Template Library) qui décrit les matériaux :
newmtl MonMateriau
Ka 0.1 0.1 0.1
Kd 0.8 0.0 0.0
Ks 1.0 1.0 1.0
Ns 100.0
map_Kd texture_diffuse.png
map_Bump texture_normal.png
| Paramètre | Signification |
|---|---|
| Ka | Couleur ambiante |
| Kd | Couleur diffuse |
| Ks | Couleur spéculaire |
| Ns | Brillance (shininess) |
| map_Kd | Texture diffuse |
| map_Bump | Normal/Bump map |
Le format MTL est ancien et ne supporte pas les workflows PBR modernes (pas de Metallic, pas de Roughness Roughness Paramètre PBR contrôlant la rugosité d'une surface. Une valeur basse donne un aspect lisse et réfléchissant, une valeur haute un aspect mat et diffus. Voir la définition complète → ).
Ce que OBJ stocke
- Vertices (positions 3D)
- Coordonnées UV
- Normales par vertex
- Faces (triangles, quads, n-gons)
- Groupes d’objets
- Matériaux basiques (via MTL)
Ce que OBJ ne stocke pas
- Animations
- Armatures / Rigs
- Skinning / Weight painting
- Hiérarchie parent-enfant
- Modifiers
- Matériaux PBR
- Blend Shapes / Morphs
- Caméras et lumières
OBJ vs FBX vs glTF
| Critère | OBJ | FBX | glTF |
|---|---|---|---|
| Animation | Non | Oui | Oui |
| Rig | Non | Oui | Oui |
| PBR | Non | Partiel | Oui |
| Simplicité | Très simple | Complexe | Moyen |
| Lisible humain | Oui | Non | JSON |
| Universalité | Excellente | Excellente | Bonne |
| Taille fichier | Gros (texte) | Moyen | Petit |
Quand utiliser OBJ
Bon choix pour :
- Échange de meshes statiques simples
- Compatibilité maximale (vieux logiciels)
- Archivage longue durée
- Impression 3D (alternative à STL)
- Debug (fichier lisible)
- Assets statiques (props, décors)
Mauvais choix pour :
- Personnages animés
- Tout ce qui nécessite un rig
- Workflow PBR moderne
- Scènes complexes avec hiérarchie
- Fichiers volumineux (format texte = lourd)
Dans les logiciels 3D
Le format OBJ est supporté universellement :
- Blender : Import/Export natif
- Maya : Import/Export natif
- 3ds Max : Import/Export natif
- Cinema 4D : Import/Export natif
- ZBrush : Format d’échange principal
- Substance Painter : Import meshes
- Unity : Import natif
- Unreal : Import natif
Focus Blender
Exporter en OBJ
- File → Export → Wavefront (.obj)
- Configurez les options
- Choisissez l’emplacement
- Cliquez Export OBJ
Options d’export
| Option | Description |
|---|---|
| Selection Only | Exporte uniquement la sélection |
| Apply Modifiers | Applique les modifiers avant export |
| Include UVs | Exporte les coordonnées UV |
| Include Normals | Exporte les normales |
| Include Materials | Génère le fichier MTL |
| Triangulate Faces | Convertit tout en triangles |
| Scale | Facteur d’échelle |
| Forward / Up | Orientation des axes |
Paramètres recommandés
Pour l’impression 3D :
- Apply Modifiers : Oui
- Triangulate Faces : Oui
- Include UVs : Non (inutile)
- Include Normals : Oui
- Scale : selon vos unités
Pour l’échange entre logiciels :
- Apply Modifiers : Selon besoin
- Include UVs : Oui
- Include Normals : Oui
- Include Materials : Oui
- Forward : -Z Forward (standard)
- Up : Y Up (standard)
Importer un OBJ
- File → Import → Wavefront (.obj)
- Naviguez vers le fichier
- Configurez les options d’import
- Cliquez Import OBJ
Options d’import
| Option | Description |
|---|---|
| Split by Object | Sépare selon les groupes « o » |
| Split by Group | Sépare selon les groupes « g » |
| Smooth Groups | Importe les smoothing groups |
| Image Search | Cherche les textures automatiquement |
Problèmes courants et solutions
Mesh inversé (normales)
Problème : Le mesh apparaît retourné ou invisible.
Cause : Normales inversées ou axe Up différent.
Solutions :
- Recalculez les normales : Mesh → Normals → Recalculate Outside
- Vérifiez l’axe Up à l’import/export
Textures manquantes
Problème : Le mesh est gris, pas de textures.
Causes :
- Fichier MTL absent ou mal lié
- Chemins des textures incorrects
- Textures dans un autre dossier
Solutions :
- Gardez OBJ, MTL et textures dans le même dossier
- Vérifiez les chemins dans le fichier MTL
- Réassignez les textures manuellement
Échelle incorrecte
Problème : L’objet est trop grand ou trop petit.
Cause : Pas d’unité standardisée dans OBJ.
Solutions :
- Ajustez le Scale à l’import/export
- Redimensionnez après import
Fichier trop lourd
Problème : Le fichier OBJ est énorme.
Cause : Format texte = pas de compression.
Solutions :
- Décimez le mesh avant export
- Utilisez un format binaire (FBX, glTF) pour les gros meshes
- Compressez le fichier (.zip)
Smoothing perdu
Problème : Le mesh apparaît facetté.
Cause : Smoothing groups non exportés ou mal interprétés.
Solutions :
- Activez « Write Normals » à l’export
- Utilisez Auto Smooth Auto Smooth Fonction qui lisse automatiquement les faces selon leur angle, permettant d'avoir des bords doux et des arêtes vives sur un même objet sans ajouter de géométrie. Voir la définition complète → dans Blender après import
OBJ et l’impression 3D
Le format OBJ est une alternative au STL pour l’impression 3D :
| Critère | OBJ | STL |
|---|---|---|
| Couleur/Texture | Oui (via MTL) | Non |
| Taille fichier | Plus gros | Plus petit |
| Universalité | Excellente | Excellente |
| Simplicité | Simple | Très simple |
Pour l’impression couleur, OBJ est préférable car il peut inclure des informations de texture.
Bonnes pratiques
Avant l’export :
- Appliquez les transformations (Apply)
- Appliquez les modifiers si nécessaire
- Vérifiez les normales (Face Orientation)
- Nettoyez le mesh (Remove Doubles)
Organisation des fichiers :
MonProjet/
├── modele.obj
├── modele.mtl
└── textures/
├── diffuse.png
├── normal.png
└── specular.png
Gardez toujours le fichier MTL et les textures avec le fichier OBJ.
Versions et variantes
OBJ standard
- Format Wavefront original
- Le plus compatible
OBJ avec vertex colors
- Extension non standard
- Ajoute des couleurs par vertex
- Support variable selon les logiciels