# y = 1.0 / math.tan(math.radians(45.0)) # x_vec = vec_1 # y_vec = cross_vectors(x_vec, [0.0, 0.0, 1.0]) # global Z # y_vec = scale_vector(y_vec, y) # vec_3 = normalize_vector(add_vectors(x_vec, y_vec)) # mesh.set_face_attribute(fkey, name=vector_tag, value=vec_3) # ========================================================================== # Average smooth vector field # ========================================================================== for _ in range(smooth_iters): averaged_vectors = {} for fkey in mesh.faces(): nbrs = mesh.face_neighbors(fkey) vectors = mesh.get_faces_attribute(keys=nbrs, name=vector_tag) vectors.append(mesh.get_face_attribute(fkey, name=vector_tag)) vectors = list(map(lambda x: ut.align_vector(x, vectors[0]), vectors)) vectors = np.array(vectors) avg_vector = np.mean(vectors, axis=0).tolist() averaged_vectors[fkey] = avg_vector for fkey in mesh.faces(): mesh.set_face_attribute(fkey, name=vector_tag, value=averaged_vectors[fkey]) # ==========================================================================