So I tried running the code but it gives list out of index range error. I changed the index from 1 to 0, but the screen only pops up black. How could I change the code to make it work?
You just have to pass the filename/path of the .obj file to the OBJ
class:
obj = OBJ('suzzane.obj')
Also, the script was written in Python 2 and if you want to use it with Python 3, you have to update a few things.
Change this line,
raise ValueError, "mtl file doesn't start with newmtl stmt"
to:
raise ValueError("mtl file doesn't start with newmtl stmt")
And all the map
iterators have to be turned into lists:
mtl[values[0]] = map(float, values[1:])
# Just call `list()`.
mtl[values[0]] = list(map(float, values[1:]))
Try generating wavefront(.obj) file and make sure to put the suzzane.obj
and suzzane.mtl
file on one directory with your code,
And instead of:
Sys.arg[0]
Use:
obj = OBJ('suzzane.obj')
来源:https://stackoverflow.com/questions/46609928/objfileloader-pygame