[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44469] trunk/blender/source/blender/ modifiers/intern: modified fix for "Fix [#30351] Solidify Modifier High Quality Normals fails." from r44464.

Campbell Barton ideasman42 at gmail.com
Sun Feb 26 19:12:02 CET 2012


Revision: 44469
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44469
Author:   campbellbarton
Date:     2012-02-26 18:12:01 +0000 (Sun, 26 Feb 2012)
Log Message:
-----------
modified fix for "Fix [#30351] Solidify Modifier High Quality Normals fails." from r44464.

rather then recalc polygon normals - solidify is simple enough to just flip the normals of the copied faces, the rim faces normals are already re-calculated so copy them.

Revision Links:
--------------
    http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44464

Modified Paths:
--------------
    trunk/blender/source/blender/modifiers/intern/MOD_explode.c
    trunk/blender/source/blender/modifiers/intern/MOD_screw.c
    trunk/blender/source/blender/modifiers/intern/MOD_solidify.c

Modified: trunk/blender/source/blender/modifiers/intern/MOD_explode.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_explode.c	2012-02-26 17:24:04 UTC (rev 44468)
+++ trunk/blender/source/blender/modifiers/intern/MOD_explode.c	2012-02-26 18:12:01 UTC (rev 44469)
@@ -183,7 +183,7 @@
 	BLI_kdtree_free(tree);
 }
 
-static int edgecut_get(EdgeHash *edgehash, int v1, int v2)
+static int edgecut_get(EdgeHash *edgehash, unsigned int v1, unsigned int v2)
 {
 	return GET_INT_FROM_POINTER(BLI_edgehash_lookup(edgehash, v1, v2));
 }

Modified: trunk/blender/source/blender/modifiers/intern/MOD_screw.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_screw.c	2012-02-26 17:24:04 UTC (rev 44468)
+++ trunk/blender/source/blender/modifiers/intern/MOD_screw.c	2012-02-26 18:12:01 UTC (rev 44469)
@@ -132,23 +132,6 @@
 	tltmd->iter= sltmd->iter;
 }
 
-#if 0
-static int findEd(MEdge *medge_new, int toted, int v1, int v2)
-{
-	int i;
-
-	for (i = 0; i < toted; i++) {
-		if ( (medge_new[i].v1 == v1 && medge_new[i].v2 == v2) ||
-		     (medge_new[i].v1 == v2 && medge_new[i].v2 == v1) )
-		{
-			return i;
-		}
-	}
-
-	return -1;
-}
-#endif
-
 static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
 						DerivedMesh *derivedData,
 						int useRenderParams,

Modified: trunk/blender/source/blender/modifiers/intern/MOD_solidify.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_solidify.c	2012-02-26 17:24:04 UTC (rev 44468)
+++ trunk/blender/source/blender/modifiers/intern/MOD_solidify.c	2012-02-26 18:12:01 UTC (rev 44469)
@@ -235,6 +235,8 @@
 	
 	float (*vert_nors)[3]= NULL;
 
+	float (*face_nors_result)[3] = NULL;
+
 	const float ofs_orig=				- (((-smd->offset_fac + 1.0f) * 0.5f) * smd->offset);
 	const float ofs_new= smd->offset	- (((-smd->offset_fac + 1.0f) * 0.5f) * smd->offset);
 	const float offset_fac_vg= smd->offset_fac_vg;
@@ -354,7 +356,10 @@
 
 	DM_copy_poly_data(dm, result, 0, 0, numFaces);
 	DM_copy_poly_data(dm, result, 0, numFaces, numFaces);
-	
+
+	/* if the original has it, get the result so we can update it */
+	face_nors_result = CustomData_get_layer(&result->polyData, CD_NORMAL);
+
 	/*flip normals*/
 	mp = mpoly + numFaces;
 	for (i=0; i<dm->numPolyData; i++, mp++) {
@@ -384,6 +389,10 @@
 			ml2[j].e += numEdges;
 			ml2[j].v += numVerts;
 		}
+
+		if (face_nors_result) {
+			negate_v3_v3(face_nors_result[numFaces + i], face_nors_result[i]);
+		}
 	}
 
 	for(i=0, ed=medge+numEdges; i<numEdges; i++, ed++) {
@@ -667,6 +676,10 @@
 
 			add_v3_v3(edge_vert_nos[ed->v1], nor);
 			add_v3_v3(edge_vert_nos[ed->v2], nor);
+
+			if (face_nors_result) {
+				copy_v3_v3(face_nors_result[(numFaces * 2) + i], nor);
+			}
 #endif
 		}
 		
@@ -702,8 +715,7 @@
 		MEM_freeN(old_vert_arr);
 	
 	/* must recalculate normals with vgroups since they can displace unevenly [#26888] */
-	/* Also needed in case of HQ normals [#30351] (don't really undestand why, though... --mont29). */
-	if (dvert || smd->flag & MOD_SOLIDIFY_NORMAL_CALC) {
+	if (dvert) {
 		CDDM_calc_normals(result);
 	}
 




More information about the Bf-blender-cvs mailing list