File extension

.obj

Source Code to read Wavefront .OBJ files

.obj files are Wavefront OBJ 3D models: a widely supported text format describing mesh geometry — vertices, texture coordinates, normals, and faces — usually paired with a .mtl material file.

Known meanings

Formats and reference material for .obj

Source Code to read Wavefront .OBJ files

Source code to read wavefront (alias/maya) .OBJ files

  • 3d-graphics
  • Steve Britton

Videoscape File Specs

Videoscape file specs

  • 2d-graphics 3d-graphics
  • Max Gilead

C++ Code for reading OBJ files

C++ Code for reading OBJ files

  • binaries
  • VenTure

Wavefront Object files

Wavefront Object files (Acrobat)

  • 3d-graphics

Macro Assembler and MS C Compiler Object Files

Macro Assembler and MS C Compiler Object Files

  • binaries

OBJ Specification

OBJ Specification

  • binaries
  • Microsoft Corporation

Details

Format notes

Wavefront OBJ

The Wavefront OBJ format is one of the most broadly supported 3D geometry interchange formats, originally from Wavefront Technologies’ Advanced Visualizer. It is a plain-text format that describes the geometry of one or more 3D objects, and its long history and simplicity mean nearly every 3D modeling, rendering, and game tool can read and write it.

An OBJ file lists geometric data one item per line, tagged by a keyword: v for a vertex position, vt for a texture coordinate, vn for a vertex normal, and f for a face that references those elements by index. It also supports free-form curves and surfaces, smoothing groups, and named objects and groups. OBJ itself stores only geometry; surface appearance is defined separately in a companion Material Template Library (.mtl) file, referenced with mtllib and usemtl, which specifies colors, shininess, and texture image maps.

Strengths And Limitations

OBJ is excellent for static meshes and is a common lowest-common-denominator for model exchange. It does not, however, represent animation, skeletons, scene hierarchy, or cameras and lights, so for rigged or scene-level data richer formats such as glTF or FBX are used instead. Being text, OBJ files can be large compared with binary formats.

Preservation And Security Notes

OBJ’s open, text-based nature suits preservation of mesh geometry; keep the .mtl and referenced texture images alongside the .obj, since materials and maps are external. A parser reading untrusted OBJ should validate that face indices fall within the declared vertex ranges to avoid out-of-bounds access.

Further Reading

  • Wavefront OBJ format overview: https://en.wikipedia.org/wiki/Wavefront_.obj_file