def normal_at_vertex(a): normal = None for vertex in vertex_to_vertices[a]: if vertex.face.smooth_lit: # No smooth_lit means no vertex normal face = vertex.face if normal is None: normal = Vector(face.normal.parent) i = face.vertices.index(vertex) a = face.vertices[i - 1] if i + 1 == len(face.vertices): b = face.vertices[0] else: b = face.vertices[i + 1] normal.add_mul_vector((vertex >> a).angle_to(vertex >> b), face.normal) normal.normalize() return normal