[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21883] branches/bmesh/blender/source/ blender: assorted uv fixes

Joseph Eagar joeedh at gmail.com
Sat Jul 25 16:13:26 CEST 2009


Revision: 21883
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21883
Author:   joeedh
Date:     2009-07-25 16:13:26 +0200 (Sat, 25 Jul 2009)

Log Message:
-----------
assorted uv fixes

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c
    branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c
    branches/bmesh/blender/source/blender/editors/space_view3d/drawmesh.c
    branches/bmesh/blender/source/blender/editors/uvedit/uvedit_ops.c

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c	2009-07-25 14:09:15 UTC (rev 21882)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c	2009-07-25 14:13:26 UTC (rev 21883)
@@ -724,12 +724,13 @@
 		BM_ITER(eve, &iter, bm, BM_VERTS_OF_MESH, NULL)
 			BMINDEX_SET(eve, i++);
 				
+		glBegin(GL_TRIANGLES);
 		for (i=0; i<em->tottri; i++) {
 			BMLoop **ls = em->looptris[i];
 			MTexPoly *tp= CustomData_bmesh_get(&bm->pdata, ls[0]->f->head.data, CD_MTEXPOLY);
 			MTFace mtf = {0};
 			unsigned char *cp= NULL;
-			int drawSmooth= BM_TestHFlag(ls[0]->f->head.data, BM_SMOOTH);
+			int drawSmooth= BM_TestHFlag(ls[0]->f, BM_SMOOTH);
 			int flag;
 
 			efa = ls[0]->f;
@@ -757,8 +758,6 @@
 					glShadeModel(drawSmooth?GL_SMOOTH:GL_FLAT);
 				} 
 				
-
-				glBegin(GL_TRIANGLES);
 				if (!drawSmooth) {
 					glNormal3fv(bmdm->faceNos[i]);
 					
@@ -780,22 +779,22 @@
 					
 					glTexCoord2fv(luv[0]->uv);
 					glColor3ub(lcol[0]->r, lcol[0]->g, lcol[0]->b);
-					glVertex3fv(vertexCos[BMINDEX_GET(ls[0]->v)]);
 					glNormal3fv(vertexNos[BMINDEX_GET(ls[0]->v)]);
+					glVertex3fv(vertexCos[BMINDEX_GET(ls[0]->v)]);
 
 					glTexCoord2fv(luv[1]->uv);
 					glColor3ub(lcol[1]->r, lcol[1]->g, lcol[1]->b);
-					glVertex3fv(vertexCos[BMINDEX_GET(ls[1]->v)]);
 					glNormal3fv(vertexNos[BMINDEX_GET(ls[1]->v)]);
+					glVertex3fv(vertexCos[BMINDEX_GET(ls[1]->v)]);
 
 					glTexCoord2fv(luv[2]->uv);
 					glColor3ub(lcol[2]->r, lcol[2]->g, lcol[2]->b);
-					glVertex3fv(vertexCos[BMINDEX_GET(ls[2]->v)]);
 					glNormal3fv(vertexNos[BMINDEX_GET(ls[2]->v)]);
+					glVertex3fv(vertexCos[BMINDEX_GET(ls[2]->v)]);
 				}
-				glEnd();
 			}
 		}
+		glEnd();
 	} else {
 		i = 0;
 		BM_ITER(eve, &iter, bm, BM_VERTS_OF_MESH, NULL)
@@ -806,7 +805,7 @@
 			MTexPoly *tp= CustomData_bmesh_get(&bm->pdata, ls[0]->f->head.data, CD_MTEXPOLY);
 			MTFace mtf = {0};
 			unsigned char *cp= NULL;
-			int drawSmooth= BM_TestHFlag(ls[0]->f->head.data, BM_SMOOTH);
+			int drawSmooth= BM_TestHFlag(ls[0]->f, BM_SMOOTH);
 			int flag;
 
 			efa = ls[0]->f;
@@ -834,7 +833,6 @@
 					glShadeModel(drawSmooth?GL_SMOOTH:GL_FLAT);
 				} 
 				
-
 				glBegin(GL_TRIANGLES);
 				if (!drawSmooth) {
 					glNormal3fv(efa->no);
@@ -857,98 +855,23 @@
 					
 					glTexCoord2fv(luv[0]->uv);
 					glColor3ub(lcol[0]->r, lcol[0]->g, lcol[0]->b);
-					glVertex3fv(ls[0]->v->co);
 					glNormal3fv(ls[0]->v->no);
+					glVertex3fv(ls[0]->v->co);
 
 					glTexCoord2fv(luv[1]->uv);
 					glColor3ub(lcol[1]->r, lcol[1]->g, lcol[1]->b);
-					glVertex3fv(ls[1]->v->co);
 					glNormal3fv(ls[1]->v->no);
+					glVertex3fv(ls[1]->v->co);
 
 					glTexCoord2fv(luv[2]->uv);
 					glColor3ub(lcol[2]->r, lcol[2]->g, lcol[2]->b);
-					glVertex3fv(ls[2]->v->co);
 					glNormal3fv(ls[2]->v->no);
+					glVertex3fv(ls[2]->v->co);
 				}
 				glEnd();
 			}
 		}
 	}
-#if 0
-	else {
-		for (i=0,efa= bm->faces.first; efa; i++,efa= efa->next) {
-			MTFace *tf= CustomData_bm_get(&bm->pdata, efa->data, CD_MTFACE);
-			MCol *mcol= CustomData_bm_get(&bm->pdata, efa->data, CD_MCOL);
-			unsigned char *cp= NULL;
-			int drawSmooth= (efa->flag & ME_SMOOTH);
-			int flag;
-
-			if(drawParams)
-				flag= drawParams(tf, mcol, efa->mat_nr);
-			else if(drawParamsMapped)
-				flag= drawParamsMapped(userData, i);
-			else
-				flag= 1;
-
-			if(flag != 0) { /* flag 0 == the face is hidden or invisible */
-				/* we always want smooth here since otherwise vertex colors dont interpolate */
-				if (mcol) {
-					if (flag==1) {
-						cp= (unsigned char*)mcol;
-					}
-				} else {
-					glShadeModel(drawSmooth?GL_SMOOTH:GL_FLAT);
-				} 
-
-				glBegin(efa->v4?GL_QUADS:GL_TRIANGLES);
-				if (!drawSmooth) {
-					glNormal3fv(efa->n);
-
-					if(tf) glTexCoord2fv(tf->uv[0]);
-					if(cp) glColor3ub(cp[3], cp[2], cp[1]);
-					glVertex3fv(efa->v1->co);
-
-					if(tf) glTexCoord2fv(tf->uv[1]);
-					if(cp) glColor3ub(cp[7], cp[6], cp[5]);
-					glVertex3fv(efa->v2->co);
-
-					if(tf) glTexCoord2fv(tf->uv[2]);
-					if(cp) glColor3ub(cp[11], cp[10], cp[9]);
-					glVertex3fv(efa->v3->co);
-
-					if(efa->v4) {
-						if(tf) glTexCoord2fv(tf->uv[3]);
-						if(cp) glColor3ub(cp[15], cp[14], cp[13]);
-						glVertex3fv(efa->v4->co);
-					}
-				} else {
-					if(tf) glTexCoord2fv(tf->uv[0]);
-					if(cp) glColor3ub(cp[3], cp[2], cp[1]);
-					glNormal3fv(efa->v1->no);
-					glVertex3fv(efa->v1->co);
-
-					if(tf) glTexCoord2fv(tf->uv[1]);
-					if(cp) glColor3ub(cp[7], cp[6], cp[5]);
-					glNormal3fv(efa->v2->no);
-					glVertex3fv(efa->v2->co);
-
-					if(tf) glTexCoord2fv(tf->uv[2]);
-					if(cp) glColor3ub(cp[11], cp[10], cp[9]);
-					glNormal3fv(efa->v3->no);
-					glVertex3fv(efa->v3->co);
-
-					if(efa->v4) {
-						if(tf) glTexCoord2fv(tf->uv[3]);
-						if(cp) glColor3ub(cp[15], cp[14], cp[13]);
-						glNormal3fv(efa->v4->no);
-						glVertex3fv(efa->v4->co);
-					}
-				}
-				glEnd();
-			}
-		}
-	}
-#endif
 }
 
 static void bmDM_drawFacesTex(DerivedMesh *dm, int (*setDrawOptions)(MTFace *tface, int has_vcol, int matnr))

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c	2009-07-25 14:09:15 UTC (rev 21882)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c	2009-07-25 14:13:26 UTC (rev 21883)
@@ -537,6 +537,7 @@
   which much be either a BMVert, BMEdge,
   or BMFace, converted to mesh flags.
 */
+
 int BMFlags_To_MEFlags(void *element) {
 	BMHeader *h = element;
 	int f = 0;
@@ -551,9 +552,9 @@
 		if (h->flag & BM_SEAM) f |= ME_SEAM;
 		if (h->flag & BM_SHARP) f |= ME_SHARP;
 		if (BM_Wire_Edge(NULL, element)) f |= ME_LOOSEEDGE;
+		f |= ME_EDGEDRAW;
 	} else if (h->type == BM_VERT) {
 		if (h->flag & BM_SELECT) f |= BM_SELECT;
-		if (h->flag & BM_HIDDEN) f |= ME_HIDE;
 	}
 
 	return f;

Modified: branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c	2009-07-25 14:09:15 UTC (rev 21882)
+++ branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c	2009-07-25 14:13:26 UTC (rev 21883)
@@ -164,8 +164,8 @@
 	BMIter iter, liter;
 	int i, j, ototvert, totloop, numTex, numCol;
 	
-	numTex = CustomData_number_of_layers(&me->pdata, CD_MLOOPUV);
-	numCol = CustomData_number_of_layers(&me->ldata, CD_MLOOPCOL);
+	numTex = CustomData_number_of_layers(&bm->pdata, CD_MTEXPOLY);
+	numCol = CustomData_number_of_layers(&bm->ldata, CD_MLOOPCOL);
 
 	bmtess = BM_Copy_Mesh(bm);
 	BMO_CallOpf(bmtess, "makefgon trifan=%i", 0);

Modified: branches/bmesh/blender/source/blender/editors/space_view3d/drawmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/space_view3d/drawmesh.c	2009-07-25 14:09:15 UTC (rev 21882)
+++ branches/bmesh/blender/source/blender/editors/space_view3d/drawmesh.c	2009-07-25 14:13:26 UTC (rev 21883)
@@ -432,6 +432,7 @@
 
 	if (mpoly && mpoly->flag&ME_HIDE) return 0;
 
+	memset(&mtf, 0, sizeof(mtf));
 	if (tpoly) {
 		mtf.flag = tpoly->flag;
 		mtf.tpage = tpoly->tpage;
@@ -441,7 +442,7 @@
 		mtf.unwrap = tpoly->unwrap;
 	}
 
-	return draw_tface__set_draw(&mtf, CustomData_has_layer(&me->ldata, CD_MLOOPUV), matnr);
+	return draw_tface__set_draw(&mtf, CustomData_has_layer(&me->ldata, CD_MLOOPCOL), matnr);
 }
 
 static int draw_em_tf_mapped__set_draw(void *userData, int index)
@@ -456,9 +457,11 @@
 		return 0;
 
 	tpoly = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
-	has_vcol = CustomData_has_layer(&em->bm->ldata, CD_MLOOPUV);
+	has_vcol = CustomData_has_layer(&em->bm->ldata, CD_MLOOPCOL);
 	matnr = efa->mat_nr;
 
+	memset(&mtf, 0, sizeof(mtf));
+
 	if (tpoly) {
 		mtf.flag = tpoly->flag;
 		mtf.tpage = tpoly->tpage;

Modified: branches/bmesh/blender/source/blender/editors/uvedit/uvedit_ops.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/uvedit/uvedit_ops.c	2009-07-25 14:09:15 UTC (rev 21882)
+++ branches/bmesh/blender/source/blender/editors/uvedit/uvedit_ops.c	2009-07-25 14:13:26 UTC (rev 21883)
@@ -116,7 +116,8 @@
 	
 	/* ensure we have a uv layer */
 	if(!CustomData_has_layer(&em->bm->pdata, CD_MTEXPOLY)) {
-		BM_add_data_layer(em->bm, &em->bm->pdata, CD_MTFACE);
+		BM_add_data_layer(em->bm, &em->bm->pdata, CD_MTEXPOLY);
+		BM_add_data_layer(em->bm, &em->bm->ldata, CD_MLOOPUV);
 		update= 1;
 	}
 





More information about the Bf-blender-cvs mailing list