I’m trying to get a vector to create a gizmo positioning matrix, but I can’t get the correct direction of the vector in any way. Can I do something wrong?
# selected object(multiple)
uniques = bpy.context.objects_in_mode_unique_data
bms = {}
for obj in uniques:
bms[obj] = bmesh.from_edit_mesh(obj.data)
# get vertex normal
verts_normal = []
for obj in bms:
verts_normal.extend([v.normal for v in bms[obj].verts if v.select])
#get faces normal
verts = []
for obj in bms:
verts.extend([v for v in bms[obj].verts if v.select])
face_ind = []
faces_normal = []
for vert in verts:
face_ind.extend([f.index for f in vert.link_faces])
#faceID = [f.index for f in vert.link_faces]
#print(faceID)
for i in face_ind:
for obj in bms:
faces_normal.extend([f.normal for f in bms[obj].faces if f.index == i])
#median vector
normal_vector = Vector(sum(faces_normal, Vector()) / len(faces_normal))
#normal matrix
eul = Euler(normal_vector, 'XYZ')
mat_rot_new = eul.to_matrix().to_4x4()