The OBJ file format is a ASCII form. It supports a variety of geometry ranging from polygons to high degree NURBS surfaces.
The following types of data may be included in an OBJ file. In this list, the keyword (in parentheses) follows the data type.
Vertex data
- geometric vertices (v)
- texture vertices (vt)
- vertex normals (vn)
- parameter space vertices (vp)
Free-form curve/surface attributes
- rational or non-rational forms of curve or surface type.
Basis matrix, Bezier, B-spline, Cardinal, Taylor (cstype)
- degree (deg)
- basis matrix (bmat)
- step size (step)
Elements
- point (p)
- line (l)
- face (f)
- curve (curv)
- 2D curve (curv2)
- surface (surf)
Free-form curve/surface body statements
- parameter values (parm)
- outer trimming loop (trim)
- inner trimming loop (hole)
- special curve (scrv)
- special point (sp)
- end statement (end)
Connectivity between free-form surfaces
Grouping
- group name (g)
- smoothing group (s)
- merging group (mg)
- object name (o)
Display/render attributes
- bevel interpolation (bevel)
- color interpolation (c_interp)
- dissolve interpolation (d_interp)
- level of detail (lod)
- material name (usemtl)
- material library (mtllib)
- shadow casting (shadow_obj)
- ray tracing (trace_obj)
- curve approximation technique (ctech)
- surface approximation technique (stech)