Objet 3D (format de fichier)

Wavefront OBJ
Caractéristiques
Extensions
.object, .mtl, .objVoir et modifier les données sur Wikidata
Type MIME
text/plain, model/objVoir et modifier les données sur Wikidata
Signature
23 (hexa)Voir et modifier les données sur Wikidata
Développé par
Wavefront Technologies (en)Voir et modifier les données sur Wikidata

OBJ est un format de fichier contenant la description d'une géométrie 3D. Il a été défini par la société Wavefront Technologies dans le cadre du développement de son logiciel d'animation Advanced Visualizer. Ce format de fichier est ouvert et a été adopté par d'autres logiciels 3D (tels que 3D Turbo de iluac software Poser de e-frontier, Maya de Autodesk, Blender, MeshLab, 3D Studio Max, LightWave 3D de Newtek, GLC Player etc) pour des traitements d'import / export de données.

Les formes géométriques peuvent être définies par des polygones ou des surfaces lisses telles que des surfaces rationnelles et non rationnelles.

Structure du fichier

Les fichiers OBJ sont au format ASCII (une version binaire existe, identifiée par l'extension MOD).

Un commentaire peut être placé en faisant commencer la ligne par le caractère #.

Une surface polygonale est décrite par un ensemble de sommets (accompagné de coordonnées de texture et de normales en chaque sommet) et d'un ensemble de faces.

Un sommet est défini de la manière suivante :

v 1.0 0.0 -1.0 

Une coordonnée de texture est définie de la manière suivante :

vt 1.0 0.0

Une normale est définie de la manière suivante :

vn 0.0 1.0 0.0

Chaque face est ensuite définie par un ensemble d'indices faisant référence aux coordonnées des points, de texture et des normales définies précédemment.

Par exemple, la face suivante

f v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3

définit un triangle constitué des sommets d'indices v1, v2 et v3 dans la liste des sommets v. Chacun de ces sommets possède une coordonnée de texture identifiée par son indice dans la liste des coordonnées de texture vt et une normale identifiée dans la liste des normales vn.

Lorsque plusieurs objets cohabitent dans le même fichier, la section définissant l'objet est définie par

o [nom de l'objet]

Lorsque plusieurs groupes de faces cohabitent dans le même objet, la section définissant chaque groupe est définie par

g [nom du groupe]

Des matériaux peuvent être référencés en important des fichiers .mtl (Material Template Library)

usemtl [nom de matériau]

Exemple

À titre d'exemple, un cube de côté 2ua (unité arbitraire) est défini de la manière suivante :

# cube.obj
#
 
o cube
 
v  1.0  1.0  1.0
v  1.0  -1.0  1.0
v  1.0  -1.0  -1.0
v  1.0  1.0  -1.0
v  -1.0  1.0  1.0
v  -1.0  -1.0  1.0
v  -1.0  -1.0  -1.0
v  -1.0  1.0  -1.0
 
vt 0.25 0.0
vt 0.5  0.0
vt 0    0.25
vt 0.25 0.25
vt 0.5  0.25
vt 0.75 0.25
vt 0.0  0.5
vt 0.25 0.5
vt 0.5  0.5
vt 0.75 0.5
vt 0.25 0.75
vt 0.5  0.75
vt 0.25 1.0
vt 0.5  1.0

vn  0.0  0.0  1.0
vn  0.0  0.0 -1.0
vn  0.0  1.0  0.0
vn  0.0 -1.0  0.0
vn  1.0  0.0  0.0
vn -1.0  0.0  0.0

f  1/11/2  2/14/2  3/12/2
f  1/11/2  3/13/2  4/14/2 
f  5/7/6  6/4/6  7/3/6 
f  5/7/6  7/8/6  8/4/6 
f  1/1/3  2/5/3  6/2/3 
f  1/1/3  5/4/3  6/5/3 
f  3/10/5  4/6/5  7/5/5 
f  4/10/5  7/5/5  8/9/5 
f  1/11/4  4/12/4  5/9/4 
f  4/11/4  5/9/4  8/8/4 
f  2/8/1  3/9/1  6/5/1 
f  3/8/1  6/5/1  7/4/1 

Et une pyramide sera définie de la manière suivante

# pyramid.obj
#
 
o pyramid
 
v  0.0  0.0  0.0
v  0.0  0.0  1.0
v  1.0  0.0  0.0
v  1.0  0.0  1.0
v  0.5  1.0  0.5
 
vt 0.25 0.0
vt 0.5  0.0
vt 0    0.25
vt 0.25 0.25
vt 0.5  0.25
vt 0.75 0.25
vt 0.0  0.5
vt 0.25 0.5
vt 0.5  0.5
vt 0.75 0.5
vt 0.25 0.75
vt 0.5  0.75
vt 0.25 1.0
vt 0.5  1.0

vn  0.0  0.0  1.0
vn  0.0  0.0 -1.0
vn  0.0  1.0  0.0
vn  0.0 -1.0  0.0
vn  1.0  0.0  0.0
vn -1.0  0.0  0.0

f  1/1/1  2/1/1  5/1/1
f  1/7/6  4/4/6  3/3/6 
f  1/7/6  2/8/6  4/4/6
f  1/1/1  3/1/1  5/1/1
f  3/1/1  4/1/1  5/1/1
f  2/1/1  4/1/1  5/1/1

Liens externes