From ebab2f3277c4cdea24f89ee8805e082dd2c4f6a8 Mon Sep 17 00:00:00 2001
From: Campbell Barton <ideasman42@gmail.com>
Date: Sun, 23 Jan 2011 12:48:31 +0000
Subject: [PATCH] write predictable material order.

---
 io_scene_x3d/export_x3d.py | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/io_scene_x3d/export_x3d.py b/io_scene_x3d/export_x3d.py
index 4157878de..aae369ed1 100644
--- a/io_scene_x3d/export_x3d.py
+++ b/io_scene_x3d/export_x3d.py
@@ -378,7 +378,11 @@ class x3d_class:
             for i, (material_index, image) in enumerate(zip(mesh_faces_materials, mesh_faces_image)):
                 face_groups[material_index, image].append(i)
 
-            for (material_index, image), face_group in face_groups.items():
+            # same as face_groups.items() but sorted so we can get predictable output.
+            face_groups_items = list(face_groups.items())
+            face_groups_items.sort(key=lambda m: (m[0][0], getattr(m[0][1], "name", "")))
+
+            for (material_index, image), face_group in face_groups_items:  # face_groups.items()
                 if face_group:
                     material = mesh_materials[material_index]
 
-- 
GitLab