Wat is het OBJ-bestandsformaat?
Het .obj-bestandsformaat wordt gebruikt om 3D-objecten op te slaan die zijn gemaakt met diverse ontwerp- en bewerkingssoftware. Elk .obj-bestand kan gegevens bevatten zoals vertex-coördinaten, oppervlaktenormalen, UV-textuurcoördinaten en verwijzingen naar externe textuurbestanden. .obj-bestanden bevatten geen gegevens over de omgeving van het object - er is geen informatie over verlichting, camera's of scène-hiërarchie. Het formaat is ontwikkeld door Wavefront Technologies, oorspronkelijk ontworpen als opslagbestand voor hun Advanced Visualizer-applicatie.
Compatibiliteit tussen OBJ- en MTL-bestanden
.obj-bestanden bevatten vaker wel dan niet verwijzingen naar bijbehorende .mtl-bestanden, die de oppervlakteschaduw, het materiaal en relevante gegevens van elk object beschrijven. Elk .obj-bestand kan naar één of meer .mtl-bestanden verwijzen; zonder deze bestanden worden meshes gerenderd als ongekleurde geometrie.
Toepassingen van het OBJ-formaat
.obj is een breed ondersteund open formaat en wordt beschouwd als een de facto standaard voor de uitwisseling van 3D-objecten. Omdat het platte ASCII-tekst is, zijn .obj-bestanden leesbaar voor mensen en eenvoudig te verwerken (parsen), wat de reden is dat vrijwel alle CAD- en 3D-bewerkingssoftware mogelijkheden biedt voor het importeren en exporteren van gegevens in dit formaat. In de afgelopen jaren, met de groei van 3D-printtechnologie, heeft .obj verder aan populariteit gewonnen - met name als het voorkeursformaat voor printworkflows met meerdere kleuren en materialen. Het wordt veelvuldig gebruikt naast .stl en .ply in additieve productieprocessen, en in toenemende mate als bronformaat voor conversie naar moderne uitwisselingsformaten zoals .gltf.
Beveiliging & veiligheid
RISICO: LOWEen OBJ is geometrie-data in platte tekst - het bevat geen uitvoerbare code en kan niets uitvoeren, dus het openen ervan is veilig. De enige praktische risico's zijn niet-kwaadaardig: zeer grote meshes met veel polygonen (bijv. 3D-scans) kunnen traag laden, en een getextureerde OBJ heeft zijn bijbehorende .mtl en afbeeldingsbestanden nodig, anders verschijnt deze grijs/zonder textuur. Zoals altijd, vertrouw de extensie pas na controle - een bestand dat zich voordoet als «model.obj» maar eigenlijk een uitvoerbaar bestand is, vormt het echte risico, niet het OBJ-formaat zelf.
Formaatdetails
in een notendop- COFF objectbestand (.obj) - Een gecompileerd objectbestand geproduceerd als tussenproduct door C/C++ compilers, niet gerelateerd aan het 3D-modelformaat.
Programma's die OBJ-bestanden openen
Technische details
diepe specificaties| Bestandscodering | Platte ASCII-tekst; UTF-8 compatibel, geen binaire secties |
| Bestandssignatuur (magic bytes) | Geen - geïdentificeerd door tokens aan het begin van de regel: `v ` (vertex), `vt ` (UV-coord), `vn ` (normaal), `f ` (vlak), `mtllib` |
| MIME-type | `model/obj` |
| Coördinatensysteem | Rechtshandig; Y-omhoog volgens conventie (sommige exporteurs gebruiken Z-omhoog) |
| Geometrie-primitieven | Vertices (`v`), UV-textuurcoördinaten (`vt`), normalen (`vn`), vlakken (`f`), lijnen (`l`), punten (`p`) |
| Polygoontypes | Driehoeken, quads en willekeurige n-gons (polygonen met een willekeurig aantal hoekpunten per vlak) |
| Index-basis | 1-gebaseerde gehele getallen; negatieve waarden toegestaan als relatieve (omgekeerde) verwijzingen |
| Materiaalreferenties | Externe `.mtl`-bestanden gedeclareerd met `mtllib`; toegepast per mesh-groep via `usemtl` |
| Object/groepsstructuur | Benoemde objecten (`o`-trefwoord) en groepen (`g`-trefwoord) maken meshes uit meerdere delen in één bestand mogelijk |
| Texture mapping | UV-coördinaten opgeslagen als `vt`-vermeldingen; paden naar textuurafbeeldingen gedefinieerd in de bijbehorende `.mtl` |
| Vrije-vorm geometrie | Optionele NURBS-curven en B-spline-oppervlakken via `curv` / `surf` trefwoorden - in de praktijk zelden geïmplementeerd |
| Animatie-ondersteuning | Geen - alleen statische geometrie; animatie vereist externe formaten (FBX, glTF) |
| Scènegegevens | Geen verlichting, camera's of scène-hiërarchie; het formaat slaat alleen geometrie op |
| Compressie | Ongecomprimeerde platte tekst; bestanden comprimeren efficiënt met ZIP of gzip |
| Geschiktheid voor 3D-printen | Breed geaccepteerd door slicer-software; geprefereerd boven STL voor multi-color/multi-materiaal FDM-printen |
| Interoperabiliteit | Systeemeigen ondersteund door Blender, Autodesk Maya, Cinema 4D, ZBrush, SolidWorks en de meeste CAD/DCC-tools |
| Uitgebracht | Late 1980s (Wavefront Technologies, for The Advanced Visualizer) |
| Open standaard | Ja · royaltyvrij |
| Specificatie | paulbourke.net |