X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=blender%2Fio_mspgl%2Fmesh.py;h=04b2b51fb075c519f17e3a44e93e598de312510e;hb=d7d791f5a3e684559f34be7730477ab5127f9ed6;hp=a41cbc1311c8a9c077ff78980ecfb1e48a37b4e3;hpb=dd32f2502f8d090c639df4a34d56d21ccbecac83;p=libs%2Fgl.git diff --git a/blender/io_mspgl/mesh.py b/blender/io_mspgl/mesh.py index a41cbc13..04b2b51f 100644 --- a/blender/io_mspgl/mesh.py +++ b/blender/io_mspgl/mesh.py @@ -34,6 +34,12 @@ class Edge: else: return self.faces[0] + def other_vertex(self, v): + if v.index==self.vertices[0].index: + return self.vertices[1] + else: + return self.vertices[0] + class Vertex: def __init__(self, mv): @@ -142,6 +148,8 @@ class Mesh: self.assign_texture_units() for f in self.faces: + if len(f.vertices)>4: + raise ValueError("Ngons are not supported") f.vertices = [self.vertices[i] for i in f.vertices] for v in f.vertices: v.faces.append(f) @@ -156,6 +164,8 @@ class Mesh: f.edges.append(e) self.lines = [Line(e) for e in self.edges.values() if not e.faces] + for l in self.lines: + l.vertices = [self.vertices[i] for i in l.vertices] if self.use_auto_smooth: smooth_limit = math.cos(self.auto_smooth_angle) @@ -248,26 +258,35 @@ class Mesh: v.index = len(self.vertices) self.vertices.append(v) + v_edges = [] + v_edge_keys = set() for f in g: - for j in range(len(f.edges)): - e = f.edges[j] - - if self.vertices[i] not in e.vertices: + for e in f.edges: + if e.key in v_edge_keys or self.vertices[i] not in e.vertices: continue - if e.other_face(f) not in g and len(e.faces)>=2: - e.faces.remove(f) - e = Edge(e) - f.edges[j] = e - e.faces.append(f) - else: - del self.edges[e.key] + e_faces_in_g = [c for c in e.faces if c in g] + boundary = len(e_faces_in_g)