In model, we have now int and float instead of strings
This commit is contained in:
parent
e5da208ae7
commit
14946a0f3e
|
@ -7,9 +7,9 @@ class Vertex:
|
||||||
self.z = z
|
self.z = z
|
||||||
|
|
||||||
def from_array(self, arr):
|
def from_array(self, arr):
|
||||||
self.x = arr[0] if len(arr) > 0 else None
|
self.x = float(arr[0]) if len(arr) > 0 else None
|
||||||
self.y = arr[1] if len(arr) > 1 else None
|
self.y = float(arr[1]) if len(arr) > 1 else None
|
||||||
self.z = arr[2] if len(arr) > 2 else None
|
self.z = float(arr[2]) if len(arr) > 2 else None
|
||||||
return self
|
return self
|
||||||
|
|
||||||
Normal = Vertex
|
Normal = Vertex
|
||||||
|
@ -22,9 +22,9 @@ class FaceVertex:
|
||||||
self.normal = normal
|
self.normal = normal
|
||||||
|
|
||||||
def from_array(self, arr):
|
def from_array(self, arr):
|
||||||
self.vertex = arr[0] if len(arr) > 0 else None
|
self.vertex = int(arr[0]) if len(arr) > 0 else None
|
||||||
self.texture = arr[1] if len(arr) > 1 else None
|
self.texture = int(arr[1]) if len(arr) > 1 else None
|
||||||
self.normal = arr[2] if len(arr) > 2 else None
|
self.normal = int(arr[2]) if len(arr) > 2 else None
|
||||||
return self
|
return self
|
||||||
|
|
||||||
class Face:
|
class Face:
|
||||||
|
@ -70,6 +70,22 @@ class ModelParser:
|
||||||
line = line.rstrip()
|
line = line.rstrip()
|
||||||
self.parse_line(line)
|
self.parse_line(line)
|
||||||
|
|
||||||
|
def gl_draw(self):
|
||||||
|
|
||||||
|
import OpenGL.GL as gl
|
||||||
|
|
||||||
|
gl.glColor3f(1.0,0.0,0.0)
|
||||||
|
gl.glBegin(gl.GL_QUADS)
|
||||||
|
for face in self.faces:
|
||||||
|
v1 = self.vertices[face.a.vertex]
|
||||||
|
v2 = self.vertices[face.b.vertex]
|
||||||
|
v3 = self.vertices[face.c.vertex]
|
||||||
|
gl.glVertex3f(v1.x, v1.y, v1.z)
|
||||||
|
gl.glVertex3f(v2.x, v2.y, v2.z)
|
||||||
|
gl.glVertex3f(v3.x, v3.y, v3.z)
|
||||||
|
gl.glEnd()
|
||||||
|
|
||||||
|
|
||||||
class Exporter:
|
class Exporter:
|
||||||
def __init__(self, model):
|
def __init__(self, model):
|
||||||
self.model = model
|
self.model = model
|
||||||
|
|
|
@ -31,7 +31,7 @@ class OBJParser(ModelParser):
|
||||||
for i in range(len(splits)):
|
for i in range(len(splits)):
|
||||||
for j in range(len(splits[i])):
|
for j in range(len(splits[i])):
|
||||||
if splits[i][j] is not '':
|
if splits[i][j] is not '':
|
||||||
splits[i][j] = str(int(splits[i][j]) - 1)
|
splits[i][j] = int(splits[i][j]) - 1
|
||||||
|
|
||||||
self.add_face(Face().from_array(splits))
|
self.add_face(Face().from_array(splits))
|
||||||
|
|
||||||
|
@ -43,19 +43,19 @@ class OBJExporter(Exporter):
|
||||||
string = ""
|
string = ""
|
||||||
|
|
||||||
for vertex in self.model.vertices:
|
for vertex in self.model.vertices:
|
||||||
string += "v " + ' '.join([vertex.x, vertex.y, vertex.z]) + "\n"
|
string += "v " + ' '.join([str(vertex.x), str(vertex.y), str(vertex.z)]) + "\n"
|
||||||
|
|
||||||
string += "\n"
|
string += "\n"
|
||||||
|
|
||||||
if len(self.model.tex_coords) > 0:
|
if len(self.model.tex_coords) > 0:
|
||||||
for tex_coord in self.model.tex_coords:
|
for tex_coord in self.model.tex_coords:
|
||||||
string += "vt " + ' '.join([tex_coord.x, tex_coord.y]) + "\n"
|
string += "vt " + ' '.join([str(tex_coord.x), str(tex_coord.y)]) + "\n"
|
||||||
|
|
||||||
string += "\n"
|
string += "\n"
|
||||||
|
|
||||||
if len(self.model.normals) > 0:
|
if len(self.model.normals) > 0:
|
||||||
for normal in self.model.normals:
|
for normal in self.model.normals:
|
||||||
string += "vn " + ' '.join([normal.x, normal.y, normal.z]) + "\n"
|
string += "vn " + ' '.join([str(normal.x), str(normal.y), str(normal.z)]) + "\n"
|
||||||
|
|
||||||
string += "\n"
|
string += "\n"
|
||||||
|
|
||||||
|
@ -64,15 +64,15 @@ class OBJExporter(Exporter):
|
||||||
arr = []
|
arr = []
|
||||||
for v in [face.a, face.b, face.c]:
|
for v in [face.a, face.b, face.c]:
|
||||||
sub_arr = []
|
sub_arr = []
|
||||||
sub_arr.append(str(int(v.vertex) + 1))
|
sub_arr.append(str(v.vertex + 1))
|
||||||
if v.normal is None:
|
if v.normal is None:
|
||||||
if v.texture is not None:
|
if v.texture is not None:
|
||||||
sub_arr.append('')
|
sub_arr.append('')
|
||||||
sub_arr.append(str(int(v.texture) + 1))
|
sub_arr.append(str(v.texture + 1))
|
||||||
elif v.texture is not None:
|
elif v.texture is not None:
|
||||||
sub_arr.append(str(int(v.texture) + 1))
|
sub_arr.append(str(v.texture + 1))
|
||||||
if v.normal is not None:
|
if v.normal is not None:
|
||||||
sub_arr.append(str(int(v.normal) + 1))
|
sub_arr.append(str(v.normal + 1))
|
||||||
arr.append('/'.join(sub_arr))
|
arr.append('/'.join(sub_arr))
|
||||||
|
|
||||||
string += ' '.join(arr) + '\n'
|
string += ' '.join(arr) + '\n'
|
||||||
|
|
|
@ -65,7 +65,7 @@ class PLYContentParser:
|
||||||
if self.current_element.name == 'vertex':
|
if self.current_element.name == 'vertex':
|
||||||
self.parent.add_vertex(Vertex().from_array(split))
|
self.parent.add_vertex(Vertex().from_array(split))
|
||||||
elif self.current_element.name == 'face':
|
elif self.current_element.name == 'face':
|
||||||
self.parent.add_face(Face(FaceVertex(split[1]), FaceVertex(split[2]), FaceVertex(split[3])))
|
self.parent.add_face(Face(FaceVertex(int(split[1])), FaceVertex(int(split[2])), FaceVertex(int(split[3]))))
|
||||||
|
|
||||||
self.counter += 1
|
self.counter += 1
|
||||||
|
|
||||||
|
@ -98,10 +98,10 @@ class PLYExporter(Exporter):
|
||||||
|
|
||||||
# Content of the model
|
# Content of the model
|
||||||
for vertex in self.model.vertices:
|
for vertex in self.model.vertices:
|
||||||
string += vertex.x + " " + vertex.y + " " + vertex.z + "\n"
|
string += str(vertex.x) + " " + str(vertex.y) + " " + str(vertex.z) + "\n"
|
||||||
|
|
||||||
for face in self.model.faces:
|
for face in self.model.faces:
|
||||||
string += "3 " + face.a.vertex + " " + face.b.vertex + " " + face.c.vertex + "\n"
|
string += "3 " + str(face.a.vertex) + " " + str(face.b.vertex) + " " + str(face.c.vertex) + "\n"
|
||||||
|
|
||||||
return string
|
return string
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue