[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57408] trunk/blender/source/blender/ modifiers/intern/MOD_solidify.c: ifdef bugfix since its a little strange.

Campbell Barton ideasman42 at gmail.com
Wed Jun 12 12:03:13 CEST 2013


Revision: 57408
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57408
Author:   campbellbarton
Date:     2013-06-12 10:03:13 +0000 (Wed, 12 Jun 2013)
Log Message:
-----------
ifdef bugfix since its a little strange.

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

Modified: trunk/blender/source/blender/modifiers/intern/MOD_solidify.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_solidify.c	2013-06-12 09:52:37 UTC (rev 57407)
+++ trunk/blender/source/blender/modifiers/intern/MOD_solidify.c	2013-06-12 10:03:13 UTC (rev 57408)
@@ -50,6 +50,9 @@
 #  pragma GCC diagnostic error "-Wsign-conversion"
 #endif
 
+/* skip shell thickness for non-manifold edges, see [#35710] */
+#define USE_NONMANIFOLD_WORKAROUND
+
 /* *** derived mesh high quality normal calculation function  *** */
 /* could be exposed for other functions to use */
 
@@ -119,7 +122,9 @@
 				else {
 					/* 3+ faces using an edge, we can't handle this usefully */
 					edge_ref->f1 = edge_ref->f2 = -1;
+#ifdef USE_NONMANIFOLD_WORKAROUND
 					medge[ml->e].flag |= ME_EDGE_TMP_TAG;
+#endif
 				}
 				/* --- done --- */
 			}
@@ -494,9 +499,9 @@
 		}
 	}
 	else {
-		/* make a face normal layer if not present */
+#ifdef USE_NONMANIFOLD_WORKAROUND
 		const bool check_non_manifold = (smd->flag & MOD_SOLIDIFY_NORMAL_CALC) != 0;
-
+#endif
 		/* same as EM_solidify() in editmesh_lib.c */
 		float *vert_angles = MEM_callocN(sizeof(float) * numVerts * 2, "mod_solid_pair"); /* 2 in 1 */
 		float *vert_accum = vert_angles + numVerts;
@@ -537,6 +542,7 @@
 				vidx = ml[i_curr].v;
 				vert_accum[vidx] += angle;
 
+#ifdef USE_NONMANIFOLD_WORKAROUND
 				/* skip 3+ face user edges */
 				if ((check_non_manifold == false) ||
 				    LIKELY(((orig_medge[ml[i_curr].e].flag & ME_EDGE_TMP_TAG) == 0) &&
@@ -547,6 +553,9 @@
 				else {
 					vert_angles[vidx] += angle;
 				}
+#else
+				vert_angles[vidx] += shell_angle_to_dist(angle_normalized_v3v3(vert_nors[vidx], face_nors[i])) * angle;
+#endif
 				/* --- end non-angle-calc section --- */
 
 




More information about the Bf-blender-cvs mailing list