A python library for Wavefront .OBJ reading/writing
Why did we write yet another .obj reader/writer?
Many python libraries for .obj do not support
- Texture coodinates
- Vertex normals
- Mixed quad/triangle
- Automatic generation of .mtl file when texture map exists
- Fast read/write
Therefore we wrote one ourselves that supports them all.
- NumPy
- Cython
pip install cyobj
python setup.py build && python setup.py install
Compared to libigl-python-binding,
Reads a large .obj (Armadillo) file with V/VT/VN attributes
- cyobj: around 465 ms
- igl(C++): round 1043 ms
Writes an .obj file with V attributes
- cyobj: around 252 ms
- igl(C++): around 362 ms
This library does not fully support polygon meshes. It only supports fixed quad and triangles. When mixed quad and triangles are detected, F array has 4 columns, and the last column is the copy of the previous column.