[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