Cleanup: correct solidify logic
authorCampbell Barton <ideasman42@gmail.com>
Thu, 3 May 2018 17:48:28 +0000 (19:48 +0200)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 3 May 2018 17:48:28 +0000 (19:48 +0200)
Code for side normals isn't executing at the moment,
so not essential, but better correct it.

source/blender/modifiers/intern/MOD_solidify.c

index aa5b0caea2adf1a0fa6bd08d100596d7fe37f81d..280f3c771eda88fb28373cad1eb61d8c5add2f16 100644 (file)
@@ -105,7 +105,7 @@ static void dm_calc_normal(DerivedMesh *dm, float (*face_nors)[3], float (*r_ver
                EdgeFaceRef *edge_ref;
                float edge_normal[3];
 
-               /* This loop adds an edge hash if its not there, and adds the face index */
+               /* Add an edge reference if it's not there, pointing back to the face index. */
                for (i = 0; i < numFaces; i++, mp++) {
                        int j;
 
@@ -899,14 +899,15 @@ static DerivedMesh *applyModifier(
 
 #ifdef SOLIDIFY_SIDE_NORMALS
                if (do_side_normals) {
+                       const MEdge *ed_orig = medge;
                        ed = medge + (numEdges * stride);
-                       for (i = 0; i < rimVerts; i++, ed++) {
+                       for (i = 0; i < rimVerts; i++, ed++, ed_orig++) {
                                float nor_cpy[3];
                                short *nor_short;
                                int k;
 
                                /* note, only the first vertex (lower half of the index) is calculated */
-                               normalize_v3_v3(nor_cpy, edge_vert_nos[ed->v1]);
+                               normalize_v3_v3(nor_cpy, edge_vert_nos[ed_orig->v1]);
 
                                for (k = 0; k < 2; k++) { /* loop over both verts of the edge */
                                        nor_short = mvert[*(&ed->v1 + k)].no;