diff --git a/fast64_internal/f3d/f3d_writer.py b/fast64_internal/f3d/f3d_writer.py index 056d4131b..a0edcd0bf 100644 --- a/fast64_internal/f3d/f3d_writer.py +++ b/fast64_internal/f3d/f3d_writer.py @@ -334,14 +334,21 @@ def saveStaticModel( # checkForF3DMaterial(obj) - facesByMat = {} + faces_by_mat = {} for face in obj.data.loop_triangles: - if face.material_index not in facesByMat: - facesByMat[face.material_index] = [] - facesByMat[face.material_index].append(face) + if face.material_index not in faces_by_mat: + faces_by_mat[face.material_index] = [] + faces_by_mat[face.material_index].append(face) + + # sort by material slot + faces_by_mat = { + mat_index: faces_by_mat[mat_index] + for mat_index, _ in enumerate(obj.material_slots) + if mat_index in faces_by_mat + } fMeshes = {} - for material_index, faces in facesByMat.items(): + for material_index, faces in faces_by_mat.items(): material = obj.material_slots[material_index].material if drawLayerField is not None and material.mat_ver > 3: