[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20831] branches/bmesh/blender/source/ blender: moved the active face pointer to BMesh, where I think it belongs.

Joseph Eagar joeedh at gmail.com
Fri Jun 12 16:02:37 CEST 2009


Revision: 20831
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20831
Author:   joeedh
Date:     2009-06-12 16:02:37 +0200 (Fri, 12 Jun 2009)

Log Message:
-----------
moved the active face pointer to BMesh, where I think it belongs.  also made some fixes to the ccgsubsurf derivedmesh, and some general modifier bugfixes.  note that modifiers are still rather buggy and crashy at the moment, heh :) also made some functions for converting Mesh flags to BMesh flags, and back.

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/blenkernel/BKE_tessmesh.h
    branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c
    branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c
    branches/bmesh/blender/source/blender/blenkernel/intern/modifier.c
    branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c
    branches/bmesh/blender/source/blender/blenlib/intern/edgehash.c
    branches/bmesh/blender/source/blender/bmesh/bmesh.h
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_opdefines.c
    branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c
    branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c
    branches/bmesh/blender/source/blender/editors/mesh/bmeshutils.c

Modified: branches/bmesh/blender/source/blender/blenkernel/BKE_tessmesh.h
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/BKE_tessmesh.h	2009-06-12 13:53:08 UTC (rev 20830)
+++ branches/bmesh/blender/source/blender/blenkernel/BKE_tessmesh.h	2009-06-12 14:02:37 UTC (rev 20831)
@@ -41,9 +41,6 @@
 	/*retopo data pointer*/
 	struct RetopoPaintData *retopo_paint_data;
 
-	/*active face pointer*/
-	struct BMFace *act_face; 
-
 	/*index tables, to map indices to elements via
 	  EDBM_init_index_arrays and associated functions.  don't
 	  touch this or read it directly.*/

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c	2009-06-12 13:53:08 UTC (rev 20830)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c	2009-06-12 14:02:37 UTC (rev 20831)
@@ -1676,7 +1676,7 @@
 	mp = cddm->mpoly;
 	ml = cddm->mloop;
 	l = 0;
-	for (i=0; i<cddm->dm.numFaceData; i++, mf++) {
+	for (i=0; i<cddm->dm.numFaceData; i++, mf++, mp++) {
 		mp->flag = mf->flag;
 		mp->loopstart = l;
 		mp->mat_nr = mf->mat_nr;

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c	2009-06-12 13:53:08 UTC (rev 20830)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c	2009-06-12 14:02:37 UTC (rev 20831)
@@ -107,7 +107,6 @@
 	*tm2 = *tm;
 	
 	tm2->derivedCage = tm2->derivedFinal = NULL;
-	tm2->act_face = NULL;
 	
 	tm2->looptris = NULL;
 	tm2->bm = BM_Copy_Mesh(tm->bm);
@@ -214,7 +213,6 @@
 	}
 
 	em->retopo_paint_data= NULL;
-	em->act_face = NULL;
 
 	if (em->looptris) MEM_freeN(em->looptris);
 

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/modifier.c	2009-06-12 13:53:08 UTC (rev 20830)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/modifier.c	2009-06-12 14:02:37 UTC (rev 20831)
@@ -575,7 +575,7 @@
 			   if(source.v4)
 				   source.v4 = GET_INT_FROM_POINTER(BLI_ghash_lookup(vertHash, SET_INT_IN_POINTER(source.v4)));
 
-			   DM_copy_face_data(dm, result, faceMap[i], i, 1);
+			   DM_copy_tessface_data(dm, result, faceMap[i], i, 1);
 			   *dest = source;
 
 			   test_index_face(dest, &result->faceData, i, (orig_v4 ? 4 : 3));
@@ -930,7 +930,7 @@
 		if (source.v4)
 		   source.v4 = GET_INT_FROM_POINTER(BLI_ghash_lookup(vertHash, SET_INT_IN_POINTER(source.v4)));
 		
-		DM_copy_face_data(dm, result, oldIndex, newIndex, 1);
+		DM_copy_tessface_data(dm, result, oldIndex, newIndex, 1);
 		*dest = source;
 		
 		test_index_face(dest, &result->faceData, newIndex, (orig_v4 ? 4 : 3));
@@ -1366,7 +1366,7 @@
 
 			  dm->getTessFace(dm, i, &inMF);
 
-			  DM_copy_face_data(dm, result, i, numFaces, 1);
+			  DM_copy_tessface_data(dm, result, i, numFaces, 1);
 			  *mf = inMF;
 
 			  mf->v1 = indexMap[inMF.v1].new;
@@ -1402,7 +1402,7 @@
 			  {
 				  MFace *mf2 = &mface[numFaces];
 
-				  DM_copy_face_data(dm, result, i, numFaces, 1);
+				  DM_copy_tessface_data(dm, result, i, numFaces, 1);
 				  *mf2 = *mf;
 
 				  mf2->v1 = calc_mapping(indexMap, inMF.v1, j);
@@ -1499,7 +1499,7 @@
 			  }
 			  origindex = result->getTessFaceDataArray(result, CD_ORIGINDEX);
 			  for(i = 0; i < capFaces; i++) {
-				  DM_copy_face_data(start_cap, result, i, numFaces, 1);
+				  DM_copy_tessface_data(start_cap, result, i, numFaces, 1);
 				  mface[numFaces] = cap_mface[i];
 				  mface[numFaces].v1 = vert_map[mface[numFaces].v1];
 				  mface[numFaces].v2 = vert_map[mface[numFaces].v2];
@@ -1600,7 +1600,7 @@
 			  }
 			  origindex = result->getTessFaceDataArray(result, CD_ORIGINDEX);
 			  for(i = 0; i < capFaces; i++) {
-				  DM_copy_face_data(end_cap, result, i, numFaces, 1);
+				  DM_copy_tessface_data(end_cap, result, i, numFaces, 1);
 				  mface[numFaces] = cap_mface[i];
 				  mface[numFaces].v1 = vert_map[mface[numFaces].v1];
 				  mface[numFaces].v2 = vert_map[mface[numFaces].v2];
@@ -1978,7 +1978,7 @@
 		
 		dm->getTessFace(dm, i, &inMF);
 		
-		DM_copy_face_data(dm, result, i, numFaces, 1);
+		DM_copy_tessface_data(dm, result, i, numFaces, 1);
 		*mf = inMF;
 		numFaces++;
 		
@@ -1994,7 +1994,7 @@
 			MFace *mf2 = CDDM_get_tessface(result, numFaces);
 			static int corner_indices[4] = {2, 1, 0, 3};
 			
-			DM_copy_face_data(dm, result, i, numFaces, 1);
+			DM_copy_tessface_data(dm, result, i, numFaces, 1);
 			*mf2 = *mf;
 			
 			mf2->v1 += indexMap[inMF.v1][1];
@@ -2475,7 +2475,7 @@
 		SmoothFace *face = &mesh->faces[i];
 		MFace *newMF = &new_faces[face->newIndex];
 
-		DM_copy_face_data(mesh->dm, result,
+		DM_copy_tessface_data(mesh->dm, result,
 				  face->oldIndex, face->newIndex, 1);
 		mesh->dm->getTessFace(mesh->dm, face->oldIndex, newMF);
 
@@ -6590,7 +6590,7 @@
 		}
 
 		inMF = orig_mface + i%totface;
-		DM_copy_face_data(dm, result, i%totface, i, 1);
+		DM_copy_tessface_data(dm, result, i%totface, i, 1);
 		*mf = *inMF;
 
 		mf->v1+=(i/totface)*totvert;
@@ -6870,7 +6870,7 @@
 		dm->getTessFace(dm, i, &source);
 		dest = CDDM_get_tessface(splitdm, i);
 
-		DM_copy_face_data(dm, splitdm, i, i, 1);
+		DM_copy_tessface_data(dm, splitdm, i, i, 1);
 		*dest = source;
 	}
 
@@ -6913,7 +6913,7 @@
 			/* ouch! creating new faces & remapping them to new verts is no fun */
 			if(*fs==1){
 				df1=CDDM_get_tessface(splitdm,curdupface);
-				DM_copy_face_data(splitdm,splitdm,i,curdupface,1);
+				DM_copy_tessface_data(splitdm,splitdm,i,curdupface,1);
 				*df1=*mf;
 				curdupface++;
 				
@@ -6937,12 +6937,12 @@
 			}
 			if(*fs==2){
 				df1=CDDM_get_tessface(splitdm,curdupface);
-				DM_copy_face_data(splitdm,splitdm,i,curdupface,1);
+				DM_copy_tessface_data(splitdm,splitdm,i,curdupface,1);
 				*df1=*mf;
 				curdupface++;
 
 				df2=CDDM_get_tessface(splitdm,curdupface);
-				DM_copy_face_data(splitdm,splitdm,i,curdupface,1);
+				DM_copy_tessface_data(splitdm,splitdm,i,curdupface,1);
 				*df2=*mf;
 				curdupface++;
 
@@ -7014,17 +7014,17 @@
 			}
 			else if(*fs==3){
 				df1=CDDM_get_tessface(splitdm,curdupface);
-				DM_copy_face_data(splitdm,splitdm,i,curdupface,1);
+				DM_copy_tessface_data(splitdm,splitdm,i,curdupface,1);
 				*df1=*mf;
 				curdupface++;
 
 				df2=CDDM_get_tessface(splitdm,curdupface);
-				DM_copy_face_data(splitdm,splitdm,i,curdupface,1);
+				DM_copy_tessface_data(splitdm,splitdm,i,curdupface,1);
 				*df2=*mf;
 				curdupface++;
 
 				df3=CDDM_get_tessface(splitdm,curdupface);
-				DM_copy_face_data(splitdm,splitdm,i,curdupface,1);
+				DM_copy_tessface_data(splitdm,splitdm,i,curdupface,1);
 				*df3=*mf;
 				curdupface++;
 
@@ -7115,17 +7115,17 @@
 
 
 					df1=CDDM_get_tessface(splitdm,curdupface);
-					DM_copy_face_data(splitdm,splitdm,i,curdupface,1);
+					DM_copy_tessface_data(splitdm,splitdm,i,curdupface,1);
 					*df1=*mf;
 					curdupface++;
 
 					df2=CDDM_get_tessface(splitdm,curdupface);
-					DM_copy_face_data(splitdm,splitdm,i,curdupface,1);
+					DM_copy_tessface_data(splitdm,splitdm,i,curdupface,1);
 					*df2=*mf;
 					curdupface++;
 
 					df3=CDDM_get_tessface(splitdm,curdupface);
-					DM_copy_face_data(splitdm,splitdm,i,curdupface,1);
+					DM_copy_tessface_data(splitdm,splitdm,i,curdupface,1);
 					*df3=*mf;
 					curdupface++;
 
@@ -7155,17 +7155,17 @@
 				}
 				else{
 					df1=CDDM_get_tessface(splitdm,curdupface);
-					DM_copy_face_data(splitdm,splitdm,i,curdupface,1);
+					DM_copy_tessface_data(splitdm,splitdm,i,curdupface,1);
 					*df1=*mf;
 					curdupface++;
 
 					df2=CDDM_get_tessface(splitdm,curdupface);
-					DM_copy_face_data(splitdm,splitdm,i,curdupface,1);
+					DM_copy_tessface_data(splitdm,splitdm,i,curdupface,1);
 					*df2=*mf;
 					curdupface++;
 
 					df3=CDDM_get_tessface(splitdm,curdupface);
-					DM_copy_face_data(splitdm,splitdm,i,curdupface,1);
+					DM_copy_tessface_data(splitdm,splitdm,i,curdupface,1);
 					*df3=*mf;
 					curdupface++;
 
@@ -7365,7 +7365,7 @@
 		if(source.v4)
 			source.v4 = edgesplit_get(vertpahash, source.v4, mindex);
 
-		DM_copy_face_data(dm,explode,i,i,1);
+		DM_copy_tessface_data(dm,explode,i,i,1);
 
 		*mf = source;
 

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c	2009-06-12 13:53:08 UTC (rev 20830)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c	2009-06-12 14:02:37 UTC (rev 20831)
@@ -1346,6 +1346,11 @@
 {
 	ccgDM_faceIter *fiter = self;
 
+	if (!fiter->ccgdm || !fiter->ccgdm->ss) {
+		fiter->head.done = 1;
+		return;
+	}
+
 	if (fiter->head.index >= ccgSubSurf_getNumTessFaces(fiter->ccgdm->ss)) {
 		fiter->head.done = 1;
 		return;
@@ -2570,19 +2575,21 @@
 		++vertNum;
 
 
-#if 0 //BMESH_TODO
 		for(S = 0; S < numVerts; S++) {
 			int prevS = (S - 1 + numVerts) % numVerts;
 			int nextS = (S + 1) % numVerts;
 			int otherS = (numVerts == 4) ? (S + 2) % numVerts : 3;
+
 			for(x = 1; x < gridFaces; x++) {
 				float w[4];
+#if 0 //BMESH_TODO
 				w[prevS]  = weight[x][0][0];
 				w[S]      = weight[x][0][1];
 				w[nextS]  = weight[x][0][2];
 				w[otherS] = weight[x][0][3];
 				DM_interp_vert_data(dm, &ccgdm->dm, vertIdx, w,
 				                    numVerts, vertNum);
+#endif
 				*vertOrigIndex = ORIGINDEX_NONE;
 				++vertOrigIndex;
 				++vertNum;
@@ -2596,24 +2603,25 @@
 			for(y = 1; y < gridFaces; y++) {
 				for(x = 1; x < gridFaces; x++) {
 					float w[4];
+#if 0 //BMESH_TODO
 					w[prevS]  = weight[y * gridFaces + x][0][0];
 					w[S]      = weight[y * gridFaces + x][0][1];
 					w[nextS]  = weight[y * gridFaces + x][0][2];
 					w[otherS] = weight[y * gridFaces + x][0][3];
 					DM_interp_vert_data(dm, &ccgdm->dm, vertIdx, w,
 					                    numVerts, vertNum);
+#endif
 					*vertOrigIndex = ORIGINDEX_NONE;
 					++vertOrigIndex;
 					++vertNum;
 				}
 			}
 		}
-#endif
+
 		for(i = 0; i < numFinalEdges; ++i)
 			*(int *)DM_get_edge_data(&ccgdm->dm, edgeNum + i,
 			                         CD_ORIGINDEX) = ORIGINDEX_NONE;
 
-#if 0 //BMESH_TODO
 		for(S = 0; S < numVerts; S++) {

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list