Generated by GPT-5-mini| OBJ | |
|---|---|
| Name | OBJ |
| Extension | .obj |
| Mime | model/obj |
| Type | 3D model exchange |
| Owner | Wavefront Technologies |
| Released | 1980s |
| Genre | geometry description format |
OBJ OBJ is a plain text geometry definition file format widely used for representing three-dimensional geometry and surface data in computer graphics, visualization, and digital content creation. Originally developed by Wavefront Technologies for its Advanced Visualizer software, OBJ files enable interchange among 3D modeling packages, rendering engines, and game engines through a human-readable syntax that describes vertices, texture coordinates, normals, and faces. The format's simplicity and broad tooling support have made it a de facto interchange standard alongside formats such as STL (file format), FBX, and Collada.
OBJ stores geometric data in a line-oriented, ASCII representation that encodes vertex positions, texture coordinates, vertex normals, and polygonal faces. Common elements referenced in OBJ workflows include mesh construction in Autodesk Maya, Blender, and 3ds Max, as well as asset pipelines for Unreal Engine and Unity. Associated material properties are typically held separately in MTL files, a companion format understood by tools like Pixar RenderMan and V-Ray.
An OBJ file comprises records such as vertex (v), texture coordinate (vt), vertex normal (vn), parameter space vertex (vp), face (f), group (g), object (o), and material usage (usemtl) directives. The format permits comments (#) and supports both triangle and polygonal faces, where face indices reference previously listed vertices, texture coordinates, and normals. Material libraries are referenced via mtllib directives that point to .mtl files containing illumination and surface parameters compatible with numerous renderers and shading systems.
Developed in the 1980s by Wavefront Technologies as part of the asset pipeline for the Advanced Visualizer, OBJ gained prominence through adoption by studios and software vendors in the 1990s and 2000s. The format's open, documented nature encouraged integration into packages like LightWave 3D, Softimage, and Cinema 4D, and it became a common interchange format for collaborations between visual effects houses such as Industrial Light & Magic and Weta Digital. Later, OBJ was used in academia for datasets in projects at institutions like MIT and Stanford University.
OBJ is used to exchange static geometry across modeling, animation, and rendering workflows; to import assets into game development environments for prototyping; and to archive scanned geometry from 3D scanning and photogrammetry pipelines. Professionals use OBJ for asset handoff between studios and for submission of models to marketplaces like TurboSquid and Sketchfab. Research groups employ OBJ to distribute shape repositories such as ModelNet and ShapeNet for machine learning and computer vision experiments.
Vertices are defined with lines beginning with v followed by X, Y, Z coordinates; texture coordinates use vt with U, V (and optional W); normals use vn with X, Y, Z; faces use f with indices in the form vertex/texture/normal. Negative indices allow backward referencing relative to the current parse position. Grouping (g) and object (o) directives partition geometry for hierarchical scenes, while smoothing groups (s) provide hints for shading across polygons. The format does not standardize units, coordinate system conventions, or animation data; those aspects are typically negotiated between tools like Maya and 3ds Max at export/import time.
OBJ readers and writers are implemented across a wide ecosystem: native support exists in Blender, Autodesk Maya, Autodesk 3ds Max, Cinema 4D, Houdini, and many CAD and GIS tools. Libraries and converters such as Assimp (Open Asset Import Library), OpenCOLLADA, and specialized utilities in Meshlab and CloudCompare offer parsing, validation, and mesh processing. Rendering engines and viewers including Arnold, Cycles, and OGRE accept OBJ assets, while programming frameworks like OpenGL and three.js provide loaders for real-time visualization.
OBJ's simplicity omits support for rigging, skeletal animation, morph targets, complex material networks, and scene hierarchies; formats such as FBX and glTF address many of these limitations by supporting binary encodings, PBR material definitions, animations, and richer scene graphs. For high-precision or CAD-oriented workflows, formats like STEP and IGES are preferable. Binary-efficient interchange for web and real-time contexts often favors glTF over OBJ for its compactness and explicit PBR support.
Category:3D graphics file formats