Az obj file formátum
A obj egy nagyon egyszerű, szöveges file formátum 3D-s modellek tárolására.
Szinte minden 3D szerkesztő/modellező porogram tud ebbe a formátumba exportálni.
Egy egyszerű obj file szerkezete
# Blender3D v248 OBJ File: # www.blender3d.org v 1.000000 -0.000000 -1.000000 v 1.000000 0.000000 1.000000 v -1.000000 0.000000 1.000000 v -1.000000 -0.000000 -1.000000 vt 0.000000 0.000000 vt 1.000000 0.000000 vt 1.000000 1.000000 vt 0.000000 1.000000 vn 0.000000 1.000000 -0.000000 usemtl (null) s off f 1/1/1 4/2/1 3/3/1 2/4/1
Ez a model egy textúrázott négyzetet ír le.
A v sorok vertex-eket definiálnak, automatikusan sorszámozva 1-től, a vt sorok textúra koordinátákat, a vn sorok pedig felületi normál vektorokat.
A tényeges felület darabokat az f sorok határozzák meg, amit whitespace-szel elválasztva számcsoportok követnek. Egy-egy csoport a felület egy csúcsát adja. (Egy f sor megadhat szakaszt, háromszöget vagy négyszöget is)
A számcsoportok szerkezete: v/vt/vn, amiből csak a v a kötelező. Ezek sorra:
- a csúcspont helyét megadó vertex sorszáma
- a csúcshoz tartozó textúra-koordináta sorszáma
- a csúcshoz tartozó felületi normális sorszáma
Ha a vt vagy a vn tagokat elhagyjuk, a formátum a következő példa szerint alakul:
# csak textura f 1/1 4/2 3/3 2/4 # csak normalis f 1//1 4//1 3//1 2//1
Az első példát kirajzoló OpenGL kód a következő:
void square(void) { static float v[][3] = { 1.000000f, -0.000000f, -1.000000f, 1.000000f, 0.000000f, 1.000000f, -1.000000f, 0.000000f, 1.000000f, -1.000000f, -0.000000f, -1.000000f, }; static float vt[][2] = { 0.000000f, 0.000000f, 1.000000f, 0.000000f, 1.000000f, 1.000000f, 0.000000f, 1.000000f, }; static float vn[][3] = { 0.000000f, 1.000000f, -0.000000f, }; glBegin(GL_QUADS); glTexCoord2fv(vt[1-1]); glNormal3fv(vn[1-1]); glVertex3fv(v[1-1]); glTexCoord2fv(vt[2-1]); glNormal3fv(vn[1-1]); glVertex3fv(v[4-1]); glTexCoord2fv(vt[3-1]); glNormal3fv(vn[1-1]); glVertex3fv(v[3-1]); glTexCoord2fv(vt[4-1]); glNormal3fv(vn[1-1]); glVertex3fv(v[2-1]); glEnd(); }
További anyagok
Teljes leírás a formátumról: http://local.wasp.uwa.edu.au/~pbourke/dataformats/obj/
Különféle eszközök és könyvátrak OBJ file-okhoz: http://people.sc.fsu.edu/~burkardt/data/obj/obj.html