Hva er en OBJ-fil?
OBJ-filer brukes av Wavefronts Advanced Visualizer-applikasjon for å definere og lagre de geometriske objektene. Bakover og fremover overføring av geometriske data er muliggjort gjennom OBJ-filer. Både polygonal geometri som punkter, linjer, teksturpunktpunkter, flater og friformsgeometri (kurver og overflater) støttes av OBJ-format. Dette formatet støtter ikke animasjon eller informasjon relatert til lys og plassering av scener.
En OBJ-fil er vanligvis et sluttprodukt av 3D-modelleringsprosessen generert av en CAD (Computer Aided Design). Standardrekkefølgen for å lagre hjørner er mot klokken for å unngå eksplisitt erklæring om ansiktsnormaler. Selv om OBJ-filer erklærer skalainformasjon i en kommentarlinje, er det ingen enheter som er deklarert for OBJ-koordinater.
Historien om 3D OBJ-format
Wavefront Technologies opprettet OBJ-filformat for sin Advanced Visualizer-applikasjon for å lagre geometriske objekter og 3D-data. Dens versjon 2.11 er erstattet av en nylig dokumentert versjon 3. Filformatet er åpent og har blitt implementert av andre leverandører for deres 3D-grafikkapplikasjon. Wavefront Technologies holdt dette filformatet åpen kildekode og nøytral.
OBJ-filformat
I 3D-objekter er koding av overflategeometrien en utfordrende jobb som OBJ-filformatet klarte veldig bra. Dette formatet er ganske allsidig da det tilbyr en rekke valg for å kode overflategeometri. Følgende er tre tillatte formater som har sine egne fordeler og mangler:
Tessellasjon med polygonale ansikter
OBJ-filformatet gjør det lettere for brukeren å tessellate en 3D-modelloverflate ved hjelp av enkle eller komplekse geometriske former. For overflategeometrikoding av en modell, lagrer en fil toppunktene og normalen til hver polygon. Selv om tessellering øker grovheten til modellen, er det likevel nødvendig å finne den riktige balansen mellom størrelsen på en fil og utskriftskvaliteten.
Friformskurve
OBJ-filformatet lar brukerdefinerte overflatekurver i fri form spesifisere overflategeometrien til en modell. Siden friformskurver er mer komplekse enn polygonale flater siden, med få matematiske parametere, kan buede linjer best defineres av friformskurver. Derfor, med færre data sammenlignet med polygonale tesselleringer, brukes friformskurver til å generere en høykvalitetskoding av enhver 3D-modell uten å utvide filstørrelsen.
Overflater i fri form
OBJ-filformatet spesifiserer også flislegging av overflategeometri med overflatelapper i fri form. Denne typen friformede overflatelapper (NURBS) er svært egnet for overflater uten stive radielle dimensjoner som karosseri på en lastebil, vingene på helikopter eller skroget på en båt. Bruk av friformede overflater er svært fordelaktig da de er mer presise for å holde filstørrelser mindre med høyere presisjon. Disse overflatene er en viktig del av romfarts- og bilindustrien hvor den lave presisjonen er utilgivelig.
Følgende nøkkelord er ordnet etter datatype for å definere overflategeometri.
Elements | Free-form curve/surface body statements | Free-form curve/surface attributes |
---|---|---|
p | Point | parm |
l | Line | trim |
f | Face | hole |
curv | Curve | scrv |
curv2 | 2D curve | sp |
surf | Surface | end |
Display/render attributes | g | Group name |
bevel | Bevel interpolation | shadow_obj |
lod | Level of detail | trace_obj |
d_interp | Dissolve interpolation | ctech |
c_interp | Color interpolation | stech |
usemtl | Material name | mtllib |
Geometric vertices | ||
v | Geometric vertices | vn |
vt | Texture vertices | vp |
Farge og tekstur
OBJ-fil lar farge- og teksturinformasjon lagres i et tilknyttet filformat kalt Material Template Library (MTL). Flerfargede geometriske modeller gjengir ved å bruke disse to filene sammen. MTL-filer er ASCII-baserte og letter datagjengivelse ved å beskrive lysreflekterende egenskaper til en overflate ved å bruke modellen for Phong-refleksjon. Standarden er tatt i bruk av et stort antall programvareleverandører som benytter seg av utveksling av materialer. MTL-formatet er litt utdatert for ikke å ha støtte i de nyeste teknologiene som speil- og parallaksekart.