def addFacesByLoop(faces, indexedLoop): 'Add faces from a polygon which may be concave.' if len(indexedLoop) < 3: return lastNormal = None for pointIndex, point in enumerate(indexedLoop): center = indexedLoop[(pointIndex + 1) % len(indexedLoop)] end = indexedLoop[(pointIndex + 2) % len(indexedLoop)] normal = euclidean.getNormalWeighted(point, center, end) if abs(normal) > 0.0: if lastNormal != None: if lastNormal.dot(normal) < 0.0: addFacesByConcaveLoop(faces, indexedLoop) return lastNormal = normal # totalNormal = Vector3() # for pointIndex, point in enumerate(indexedLoop): # center = indexedLoop[(pointIndex + 1) % len(indexedLoop)] # end = indexedLoop[(pointIndex + 2) % len(indexedLoop)] # totalNormal += euclidean.getNormalWeighted(point, center, end) # totalNormal.normalize() addFacesByConvex(faces, indexedLoop)