[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16345] trunk/blender/release/scripts/ mesh_cleanup.py: cleanup mesh materials option was setting incorrect material indicies

Campbell Barton ideasman42 at gmail.com
Wed Sep 3 05:24:01 CEST 2008


Revision: 16345
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16345
Author:   campbellbarton
Date:     2008-09-03 05:24:01 +0200 (Wed, 03 Sep 2008)

Log Message:
-----------
cleanup mesh materials option was setting incorrect material indicies

Modified Paths:
--------------
    trunk/blender/release/scripts/mesh_cleanup.py

Modified: trunk/blender/release/scripts/mesh_cleanup.py
===================================================================
--- trunk/blender/release/scripts/mesh_cleanup.py	2008-09-03 02:27:16 UTC (rev 16344)
+++ trunk/blender/release/scripts/mesh_cleanup.py	2008-09-03 03:24:01 UTC (rev 16345)
@@ -121,25 +121,29 @@
 	material_users= dict( [(i,0) for i in xrange(len_materials)] )
 	
 	for f in me.faces:
+		f_mat = f.mat
 		# Make sure the face index isnt too big. this happens sometimes.
-		if f.mat >= len_materials:
-			f.mat=0
-		material_users[f.mat] += 1
+		if f_mat >= len_materials:
+			f_mat=0
+		material_users[f_mat] += 1
 	
-	mat_idx_subtract= 0
-	reindex_mapping= dict( [(i,0) for i in xrange(len_materials)] )
-	i= len_materials
-	while i:
-		i-=1
-		
+	# mat_idx_subtract= 0
+	# reindex_mapping= dict( [(i,0) for i in xrange(len_materials)] )
+	
+	reindex_mapping_ls = range(len_materials)
+	for i in range(len_materials-1, -1, -1):
 		if material_users[i] == 0:
-			mat_idx_subtract+=1
-			reindex_mapping[i]= mat_idx_subtract
-			materials.pop(i)
+			del reindex_mapping_ls[i]
+			del materials[i]
 			rem_materials+=1
 	
+	reindex_mapping= {}
+	
+	for i, mat in enumerate(reindex_mapping_ls):
+		reindex_mapping[mat] = i		
+	
 	for f in me.faces:
-		f.mat= f.mat - reindex_mapping[f.mat]
+		f.mat= reindex_mapping[f.mat]
 	
 	me.materials= materials
 	return rem_materials
@@ -449,4 +453,4 @@
 	
 	
 if __name__ == '__main__':
-	main()
+	main()
\ No newline at end of file





More information about the Bf-blender-cvs mailing list