38 lines
1,001 B
Python
38 lines
1,001 B
Python
import sys, math, re, os, struct, time
|
|
|
|
import mesh
|
|
|
|
class objModel(mesh.mesh):
|
|
def __init__(self):
|
|
super(objModel, self).__init__()
|
|
|
|
def load(self, filename):
|
|
vertexList = []
|
|
faceList = []
|
|
|
|
f = open(filename, "r")
|
|
for line in f:
|
|
parts = line.split()
|
|
if len(parts) < 1:
|
|
continue
|
|
if parts[0] == 'v':
|
|
vertexList.append([float(parts[1]), float(parts[2]), float(parts[3])])
|
|
if parts[0] == 'f':
|
|
parts[1] = parts[1].split('/')[0]
|
|
parts[2] = parts[2].split('/')[0]
|
|
parts[3] = parts[3].split('/')[0]
|
|
faceList.append([int(parts[1]), int(parts[2]), int(parts[3])])
|
|
f.close()
|
|
|
|
self._prepareVertexCount(len(faceList) * 3)
|
|
for f in faceList:
|
|
i = f[0] - 1
|
|
self.addVertex(vertexList[i][0], vertexList[i][1], vertexList[i][2])
|
|
i = f[1] - 1
|
|
self.addVertex(vertexList[i][0], vertexList[i][1], vertexList[i][2])
|
|
i = f[2] - 1
|
|
self.addVertex(vertexList[i][0], vertexList[i][1], vertexList[i][2])
|
|
|
|
self._postProcessAfterLoad()
|
|
return self
|
|
|