[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42528] trunk/blender/source/blender/ blenkernel/intern/mesh_validate.c: BKE_mesh_validate_arrays was correcting non-finite verts and zero normals even when do_fixes was false , also return true if any bad vertex weights were found.`

Campbell Barton ideasman42 at gmail.com
Fri Dec 9 08:23:18 CET 2011


Revision: 42528
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42528
Author:   campbellbarton
Date:     2011-12-09 07:23:17 +0000 (Fri, 09 Dec 2011)
Log Message:
-----------
BKE_mesh_validate_arrays was correcting non-finite verts and zero normals even when do_fixes was false, also return true if any bad vertex weights were found.`

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/mesh_validate.c

Modified: trunk/blender/source/blender/blenkernel/intern/mesh_validate.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mesh_validate.c	2011-12-09 07:18:04 UTC (rev 42527)
+++ trunk/blender/source/blender/blenkernel/intern/mesh_validate.c	2011-12-09 07:23:17 UTC (rev 42528)
@@ -136,10 +136,12 @@
 	MVert *mvert= mverts;
 	unsigned int i;
 
-	int do_face_free= FALSE;
-	int do_edge_free= FALSE;
-	int verts_fixed= FALSE;
+	short do_face_free= FALSE;
+	short do_edge_free= FALSE;
 
+	short verts_fixed= FALSE;
+	short vert_weights_fixed= FALSE;
+
 	int do_edge_recalc= FALSE;
 
 	EdgeHash *edge_hash = BLI_edgehash_new();
@@ -165,9 +167,12 @@
 		for(j=0; j<3; j++) {
 			if(!finite(mvert->co[j])) {
 				PRINT("    vertex %u: has invalid coordinate\n", i);
-				zero_v3(mvert->co);
 
-				verts_fixed= TRUE;
+				if (do_fixes) {
+					zero_v3(mvert->co);
+
+					verts_fixed= TRUE;
+				}
 			}
 
 			if(mvert->no[j]!=0)
@@ -176,8 +181,10 @@
 
 		if(fix_normal) {
 			PRINT("    vertex %u: has zero normal, assuming Z-up normal\n", i);
-			mvert->no[2]= SHRT_MAX;
-			verts_fixed= TRUE;
+			if (do_fixes) {
+				mvert->no[2]= SHRT_MAX;
+				verts_fixed= TRUE;
+			}
 		}
 	}
 
@@ -327,6 +334,7 @@
 					PRINT("    vertex deform %u, group %d has weight: %f\n", i, dw->def_nr, dw->weight);
 					if (do_fixes) {
 						dw->weight= 0.0f;
+						vert_weights_fixed= TRUE;
 					}
 				}
 
@@ -339,6 +347,8 @@
 							 * within the for loop and may not be valid */
 							j--;
 							dw= dv->dw + j;
+
+							vert_weights_fixed= TRUE;
 						}
 						else { /* all freed */
 							break;
@@ -369,7 +379,7 @@
 		}
 	}
 
-	return (verts_fixed || do_face_free || do_edge_free || do_edge_recalc);
+	return (verts_fixed || vert_weights_fixed || do_face_free || do_edge_free || do_edge_recalc);
 }
 
 static int mesh_validate_customdata(CustomData *data, short do_verbose, const short do_fixes)




More information about the Bf-blender-cvs mailing list