Objet 3D (format de fichier)
Extensions | .object , .mtl |
---|---|
Type MIME | text/plain , model/obj |
Signature | 23 (hexa) |
Développé par |
Wavefront Technologies (en) |
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 0.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 est défini de la manière suivante
(ceci n'est qu'un exemple et ne représente pas vraiment un cube)
# cube.obj # o cube v 0.0 0.0 0.0 v 0.0 0.0 1.0 v 0.0 1.0 0.0 v 0.0 1.0 1.0 v 1.0 0.0 0.0 v 1.0 0.0 1.0 v 1.0 1.0 0.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 7/14/2 5/12/2 f 1/11/2 3/13/2 7/14/2 f 1/7/6 4/4/6 3/3/6 f 1/7/6 2/8/6 4/4/6 f 3/1/3 8/5/3 7/2/3 f 3/1/3 4/4/3 8/5/3 f 5/10/5 7/6/5 8/5/5 f 5/10/5 8/5/5 6/9/5 f 1/11/4 5/12/4 6/9/4 f 1/11/4 6/9/4 2/8/4 f 2/8/1 6/9/1 8/5/1 f 2/8/1 8/5/1 4/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