---
title: "OBJ file syntax"
canonical: "https://documentation.chaos.com/space/CS/124661493/OBJ%20file%20syntax"
format: markdown
---
## **Overview**

---

<span style="color: #000000">OBJ files are the old, less efficient way to describe scene geometry - .cgeo is usually preferred. The OBJ format is based on the standard wavefront OBJ files.</span>


**OBJ file syntax**

---

OBJ is line format - one line is one command:

| **Line start** | **parameters** | **Description** |
| --- | --- | --- |
| **v** | [XYZ] | Adds new vertex to the geometry. It will be multiplied by the currently active transformation in the parent SCN file. |
| **vn** | [XYZ] | Adds a new normal vector to the geometry. It will be multiplied by the currently active transformation in the parent SCN file. |
| **vt** | [XYZ] | Adds new texturing coordinates to the geometry. |
| **f** | [int v1]/[int vt1]/[int vn1] [int v2]/[int vt2]/[int vn2] [int v3]/[int vt3]/[int vn3] | Adds a new triangle to the geometry. v1, v2, v3 are indices of geometry vertices declared with the **v command **in this file. They correspond to the three triangle vertices positions. Each of the vertices has also a mapping coordinate and normal associated, specified with **vt1, vt2, vt3 and vn1, vn2, vn3** parameters, respectively. |
| **f** | [int v1]//[int vn1] [int v2]//[int vn2] [int v3]//[int vn3] | Same as previous, but omits the texturing coordinates. Such geometry will not have varying texturing UV coordinates. |
| **f** | [int v1]/[int vt1]/[int vn1] [int v2]/[int vt2]/[int vn2] [int v3]/[int vt3]/[int vn3] [int v4]/[int vt4]/[int vn4] | Same as previous, but creates a quad face with 4 vertices instead of a triangle. |
| **f** | [int v1]//[int vn1] [int v2]//[int vn2] [int v3]//[int vn3] [int v4]//[int vn4] | Same as previous, but creates a quad face (without mapping coordinates) with 4 vertices instead of a triangle. |
| **Usemtl** | [int index] | Sets the currently active material to an index. Note that referencing materials by name is not supported. Instead, a numerical index must be provided, which will be resolved against list of materials in each individual instance. |


- All indexing starts at 1, negative indexing is not supported.
- This is NOT valid syntax in Corona: **f [int v1]/[int vn1] [int v2]/[int vn2] [int v3]/[int vn3]**
- Animated triangles/animated quads are currently NOT supported, same as hair. Use **cgeo **format for them.