[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55950] trunk/blender/source/blender/bmesh /operators/bmo_inset.c: fix own mistake in recent inset-interpolation option, some faces were not interpolating.

Campbell Barton ideasman42 at gmail.com
Thu Apr 11 02:23:10 CEST 2013


Revision: 55950
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55950
Author:   campbellbarton
Date:     2013-04-11 00:23:09 +0000 (Thu, 11 Apr 2013)
Log Message:
-----------
fix own mistake in recent inset-interpolation option, some faces were not interpolating.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/operators/bmo_inset.c

Modified: trunk/blender/source/blender/bmesh/operators/bmo_inset.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_inset.c	2013-04-10 23:59:37 UTC (rev 55949)
+++ trunk/blender/source/blender/bmesh/operators/bmo_inset.c	2013-04-11 00:23:09 UTC (rev 55950)
@@ -472,13 +472,22 @@
 
 		/* initialize interpolation vars */
 		/* this could go in its own loop,
-		 * only use the 'es->l->f' so we don't store loops for faces which have no mixed selection */
+		 * only use the 'es->l->f' so we don't store loops for faces which have no mixed selection
+		 *
+		 * note: faces on the other side of the inset will be interpolated too since this is hard to
+		 * detect, just allow it even though it will cause some redundant interpolation */
 		if (use_interpolate) {
-			const int j = BM_elem_index_get((f = es->l->f));
-			if (iface_array[j] == NULL) {
-				InterpFace *iface = BLI_memarena_alloc(interp_arena, sizeof(*iface));
-				bm_interp_face_store(iface, bm, f, interp_arena);
-				iface_array[j] = iface;
+			BMIter viter;
+			BM_ITER_ELEM (v, &viter, es->l->e, BM_VERTS_OF_EDGE) {
+				BMIter fiter;
+				BM_ITER_ELEM (f, &fiter, v, BM_FACES_OF_VERT) {
+					const int j = BM_elem_index_get(f);
+					if (iface_array[j] == NULL) {
+						InterpFace *iface = BLI_memarena_alloc(interp_arena, sizeof(*iface));
+						bm_interp_face_store(iface, bm, f, interp_arena);
+						iface_array[j] = iface;
+					}
+				}
 			}
 		}
 		/* done interpolation */




More information about the Bf-blender-cvs mailing list