| # tinyobjloader, Wavefront .obj loader | |
| `tinyobjloader` is a python wrapper for C++ wavefront .obj loader. | |
| `tinyobjloader` is rather fast and feature rich than other pure python version of .obj loader. | |
| ## Requirements | |
| * python 3.x(3.6+ recommended) | |
| * python 2.7 may work, but not officially supported. | |
| ## Install | |
| You can install `tinyobjloader` with pip. | |
| ``` | |
| $ pip install tinyobjloader | |
| ``` | |
| ## Quick tutorial | |
| ```py | |
| import sys | |
| import tinyobjloader | |
| # Create reader. | |
| reader = tinyobjloader.ObjReader() | |
| filename = "cornellbox.obj" | |
| # Load .obj(and .mtl) using default configuration | |
| ret = reader.ParseFromFile(filename) | |
| if ret == False: | |
| print("Warn:", reader.Warning()) | |
| pint("Err:", reader.Error()) | |
| print("Failed to load : ", filename) | |
| sys.exit(-1) | |
| if reader.Warning(): | |
| print("Warn:", reader.Warning()) | |
| attrib = reader.GetAttrib() | |
| print("attrib.vertices = ", len(attrib.vertices)) | |
| print("attrib.normals = ", len(attrib.normals)) | |
| print("attrib.texcoords = ", len(attrib.texcoords)) | |
| materials = reader.GetMaterials() | |
| print("Num materials: ", len(materials)) | |
| for m in materials: | |
| print(m.name) | |
| print(m.diffuse) | |
| shapes = reader.GetShapes() | |
| print("Num shapes: ", len(shapes)) | |
| for shape in shapes: | |
| print(shape.name) | |
| print("num_indices = {}".format(len(shape.mesh.indices))) | |
| ``` | |
| ## More detailed usage | |
| Please take a look at `python/sample.py` file in tinyobjloader git repo. | |
| https://github.com/syoyo/tinyobjloader/blob/master/python/sample.py | |
| ## How to build | |
| Using `cibuildwheel` is an recommended way to build a python module. | |
| See $tinyobjloader/azure-pipelines.yml for details. | |
| ### Developer build | |
| Edit `setup.py` and uncomment `Developer option` lines | |
| Assume pip is installed. | |
| ``` | |
| $ pip install pybind11 | |
| $ python setup.py build | |
| ``` | |
| ## License | |
| MIT(tinyobjloader) and ISC(mapbox earcut) license. | |
| ## TODO | |
| * [ ] Writer saver | |