Textures are now supported

This commit is contained in:
Thomas FORGIONE
2016-11-30 10:08:37 +01:00
parent 7a9e1a741e
commit 8d31b13da7
4 changed files with 34 additions and 8 deletions

View File

@@ -77,7 +77,7 @@ class ModelParser:
def add_face(self, face):
if self.current_part is None or face.material != self.current_part.material:
self.current_part = MeshPart(self)
self.current_part.material = face.material
self.current_part.material = face.material if face.material is not None else Material.DEFAULT_MATERIAL
self.parts.append(self.current_part)
self.current_part.add_face(face)
@@ -136,9 +136,11 @@ class ModelParser:
def generate_face_normals(self):
self.normals = [Normal() for i in sum(list(map(lambda x: len(x), self.faces)))]
# Build array of faces
faces = sum(map(lambda x: x.faces, self.parts), [])
self.normals = [Normal()] * len(faces)
for (index, face) in enumerate(sum(self.faces, [])):
for (index, face) in enumerate(faces):
v1 = Vertex.from_points(self.vertices[face.a.vertex], self.vertices[face.b.vertex])
v2 = Vertex.from_points(self.vertices[face.a.vertex], self.vertices[face.c.vertex])

View File

@@ -1,6 +1,8 @@
#!/usr/bin/env python
class Material:
def __init__(self, name):
self.name = name
self.Ka = None
@@ -48,6 +50,13 @@ class Material:
def unbind(self):
pass
import PIL.Image
Material.DEFAULT_MATERIAL=Material('')
Material.DEFAULT_MATERIAL.Ka = 1.0
Material.DEFAULT_MATERIAL.Kd = 0.0
Material.DEFAULT_MATERIAL.Ks = 0.0
Material.DEFAULT_MATERIAL.map_Kd = PIL.Image.new("RGBA", (1,1), "white")
class MeshPart:
def __init__(self, parent):