[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42969] branches/bmesh/blender/source/ blender/modifiers/intern/MOD_mirror.c: bmesh mirror modifier wasn' t doing UV mirror at all.

Campbell Barton ideasman42 at gmail.com
Thu Dec 29 08:29:55 CET 2011


Revision: 42969
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42969
Author:   campbellbarton
Date:     2011-12-29 07:29:44 +0000 (Thu, 29 Dec 2011)
Log Message:
-----------
bmesh mirror modifier wasn't doing UV mirror at all.

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/modifiers/intern/MOD_mirror.c

Modified: branches/bmesh/blender/source/blender/modifiers/intern/MOD_mirror.c
===================================================================
--- branches/bmesh/blender/source/blender/modifiers/intern/MOD_mirror.c	2011-12-29 06:44:51 UTC (rev 42968)
+++ branches/bmesh/blender/source/blender/modifiers/intern/MOD_mirror.c	2011-12-29 07:29:44 UTC (rev 42969)
@@ -231,6 +231,25 @@
 		ml->e += dm->numEdgeData;
 	}
 
+	/* handle uvs,
+	 * let tessface recalc handle updating the MTFace data */
+	if (mmd->flag & (MOD_MIR_MIRROR_U | MOD_MIR_MIRROR_V)) {
+		const int do_mirr_u= (mmd->flag & MOD_MIR_MIRROR_U) != 0;
+		const int do_mirr_v= (mmd->flag & MOD_MIR_MIRROR_V) != 0;
+
+		const int totuv = CustomData_number_of_layers(&cddm->loopData, CD_MLOOPUV);
+
+		for (a=0; a<totuv; a++) {
+			MLoopUV *dmloopuv = CustomData_get_layer_n(&cddm->loopData, CD_MLOOPUV, a);
+			int j = dm->numLoopData;
+			dmloopuv += j; /* second set of loops only */
+			for ( ; i-- > 0; dmloopuv++) {
+				if(do_mirr_u) dmloopuv->uv[0] = 1.0f - dmloopuv->uv[0];
+				if(do_mirr_v) dmloopuv->uv[1] = 1.0f - dmloopuv->uv[1];
+			}
+		}
+	}
+
 	CDDM_recalc_tesselation(cddm);
 	
 	/*handle vgroup stuff*/




More information about the Bf-blender-cvs mailing list