[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41402] branches/bmesh/blender/source/ blender: Fix problems with setting (and respecting) correct visibility of rim faces created by solidify modifier

Andrew Wiggin ender79bl at gmail.com
Mon Oct 31 01:34:19 CET 2011


Revision: 41402
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41402
Author:   ender79
Date:     2011-10-31 00:34:19 +0000 (Mon, 31 Oct 2011)
Log Message:
-----------
Fix problems with setting (and respecting) correct visibility of rim faces created by solidify modifier

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c
    branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c
    branches/bmesh/blender/source/blender/modifiers/intern/MOD_solidify.c

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c	2011-10-31 00:28:52 UTC (rev 41401)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c	2011-10-31 00:34:19 UTC (rev 41402)
@@ -893,16 +893,18 @@
 	if( GPU_buffer_legacy(dm) || G.f & G_BACKBUFSEL) {
 		DEBUG_VBO( "Using legacy code. cdDM_drawMappedFaces\n" );
 		for(i = 0; i < dm->numFaceData; i++, mf++) {
-			int drawSmooth = (mf->flag & ME_SMOOTH);
-			int draw= 1;
+			int drawSmooth = (mf->flag & ME_SMOOTH) != 0;
+			int draw = (mf->flag & ME_HIDE) == 0;
 
 			orig= (index==NULL) ? i : *index++;
-			
-			if(orig == ORIGINDEX_NONE)
-				draw= setMaterial(mf->mat_nr + 1, NULL);
-			else if (setDrawOptions != NULL)
-				draw= setDrawOptions(userData, orig, &drawSmooth);
 
+			if (orig == ORIGINDEX_NONE) {
+				draw = draw && setMaterial(mf->mat_nr + 1, NULL);
+			}
+			else if (setDrawOptions != NULL) {
+				draw = draw && setDrawOptions(userData, orig, &drawSmooth);
+			}
+
 			if(draw) {
 				unsigned char *cp = NULL;
 
@@ -987,7 +989,7 @@
 					int actualFace = next_actualFace;
 					MFace *mface= mf + actualFace;
 					int drawSmooth= (mface->flag & ME_SMOOTH);
-					int draw = 1;
+					int draw = (mf->flag & ME_HIDE) == 0;
 					int flush = 0;
 
 					if(i != tottri-1)
@@ -995,10 +997,12 @@
 
 					orig= (index==NULL) ? actualFace : index[actualFace];
 
-					if(orig == ORIGINDEX_NONE)
-						draw= setMaterial(mface->mat_nr + 1, NULL);
-					else if (setDrawOptions != NULL)
-						draw= setDrawOptions(userData, orig, &drawSmooth);
+					if (orig == ORIGINDEX_NONE) {
+						draw = draw && setMaterial(mface->mat_nr + 1, NULL);
+					}
+					else if (setDrawOptions != NULL) {
+						draw = draw && setDrawOptions(userData, orig, &drawSmooth);
+					}
 	
 					/* Goal is to draw as long of a contiguous triangle
 					   array as possible, so draw when we hit either an

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c	2011-10-31 00:28:52 UTC (rev 41401)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c	2011-10-31 00:34:19 UTC (rev 41402)
@@ -1991,7 +1991,6 @@
 	UvVertMap *vmap;
 	UvMapVert *buf;
 	MPoly *mp;
-	MLoopUV *luv;
 	unsigned int a;
 	int	i, totuv, nverts;
 

Modified: branches/bmesh/blender/source/blender/modifiers/intern/MOD_solidify.c
===================================================================
--- branches/bmesh/blender/source/blender/modifiers/intern/MOD_solidify.c	2011-10-31 00:28:52 UTC (rev 41401)
+++ branches/bmesh/blender/source/blender/modifiers/intern/MOD_solidify.c	2011-10-31 00:34:19 UTC (rev 41402)
@@ -593,6 +593,10 @@
 			mp->loopstart = j+numLoops*2;
 			mp->flag = mpoly[fidx].flag;
 			mp->totloop = 4;
+
+			/* ME_HIDE for rim faces should match that of the rim edge, not the face the edge */
+			mp->flag &= ~ME_HIDE;
+			mp->flag |= ed->flag & ME_HIDE;
 			
 			ml2 = mloop + mpoly[fidx].loopstart;
 			for (k1=0; k1<mpoly[fidx].totloop; k1++, ml2++) {




More information about the Bf-blender-cvs mailing list