[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36097] branches/bmesh/blender/source/ blender/editors/mesh/knifetool.c: forgot to remove the old function

Joseph Eagar joeedh at gmail.com
Mon Apr 11 03:40:12 CEST 2011


Revision: 36097
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36097
Author:   joeedh
Date:     2011-04-11 01:40:12 +0000 (Mon, 11 Apr 2011)
Log Message:
-----------
forgot to remove the old function

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/editors/mesh/knifetool.c

Modified: branches/bmesh/blender/source/blender/editors/mesh/knifetool.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/knifetool.c	2011-04-11 01:38:20 UTC (rev 36096)
+++ branches/bmesh/blender/source/blender/editors/mesh/knifetool.c	2011-04-11 01:40:12 UTC (rev 36097)
@@ -1563,333 +1563,6 @@
 	BLI_smallhash_release(hash);	
 	
 	BMO_pop(bm);
-}
-
-/*use edgenet to fill faces.  this is a bit annoying and convoluted.*/
-void knifenet_fill_faces_old(knifetool_opdata *kcd)
-{
-	BLI_mempool_iter iter;
-	BMOperator bmop;
-	BMesh *bm = kcd->em->bm;
-	BMOIter siter;
-	BMIter bmiter;
-	BMFace *f;
-	BMEdge *e;
-	KnifeVert *kfv;
-	KnifeEdge *kfe;
-	float (*vertcos)[3] = NULL;
-	void **blocks = NULL;
-	BLI_array_declare(blocks);
-	BLI_array_declare(vertcos);
-	float *w = NULL;
-	BLI_array_declare(w);
-	
-	BMO_push(bm, NULL);
-	
-	BM_ITER(f, &bmiter, bm, BM_FACES_OF_MESH, NULL) {
-		BMINDEX_SET(f, 0);
-	}
-
-	/*assign a bit flag to each face.  adjacent
-	  faces cannot share the same bit flag, nor can
-	  diagonally adjacent faces*/
-	BM_ITER(f, &bmiter, bm, BM_FACES_OF_MESH, NULL) {
-		BMIter bmiter2;
-		BMLoop *l;
-		int group = 0, ok=0;
-		
-		while (!ok) {
-			ok = 1;
-			BM_ITER(l, &bmiter2, bm, BM_LOOPS_OF_FACE, f) {
-				BMLoop *l2 = l->radial_next;
-				while (l2 != l) {
-					BMLoop *l3;
-					BMIter bmiter3;
-					
-					if (l2->f == l->f) {
-						l2 = l2->radial_next;
-						continue;
-					}
-					
-					if (BMINDEX_GET(l2->f) == (1<<group) && group <= MAXGROUP) {
-						group++;
-						ok = 0;
-					} else if (BMINDEX_GET(l2->f) == (1<<group)) {
-						printf("yeek! ran out of groups! 1\n");
-					}
-
-					BM_ITER(l3, &bmiter3, bm, BM_LOOPS_OF_FACE, l2->f) {
-						BMLoop *l4 = l3->radial_next;
-						
-						do {
-							if (l4->f == l->f) {
-								l4 = l4->radial_next;
-								continue;
-							}
-							
-							if (BMINDEX_GET(l4->f) == (1<<group) && group <= MAXGROUP) {
-								group++;
-								ok = 0;
-							} else if (BMINDEX_GET(l4->f) == (1<<group)) {
-								printf("yeek! ran out of groups! 2`\n");
-							}
-							
-							l4 = l4->radial_next;
-						} while (l4 != l3);
-					}
-					
-					l2 = l2->radial_next;
-				}
-			}
-		}
-		
-		BMINDEX_SET(f, (1<<group));
-	}
-
-	/*turn knife verts into real verts, as necassary*/
-	BLI_mempool_iternew(kcd->kverts, &iter);
-	for (kfv=BLI_mempool_iterstep(&iter); kfv; kfv=BLI_mempool_iterstep(&iter)) {
-		if (!kfv->v) {
-			kfv->v = BM_Make_Vert(bm, kfv->co, NULL);
-			kfv->flag = 1;
-		} else {
-			kfv->flag = 0;
-			BMO_SetFlag(bm, kfv->v, VERT_ORIG);
-		}
-
-		BMO_SetFlag(bm, kfv->v, MARK);
-	}
-
-	BMO_InitOpf(bm, &bmop, "edgenet_fill use_restrict=%i", 1);
-
-	/*turn knife edges into real edges, and assigns bit masks representing
-	  the faces they are adjacent too*/
-	BLI_mempool_iternew(kcd->kedges, &iter);
-	for (kfe=BLI_mempool_iterstep(&iter); kfe; kfe=BLI_mempool_iterstep(&iter)) {
-		int group = 0;
-
-		if (!kfe->v1 || !kfe->v2)
-			continue;
-		
-		if (kfe->e) {
-			BM_ITER(f, &bmiter, bm, BM_FACES_OF_EDGE, kfe->e) {
-				group |= BMINDEX_GET(f);
-
-				if (kfe->v1->v != kfe->e->v1 || kfe->v2->v != kfe->e->v2) {
-					BMO_SetFlag(bm, f, DEL);
-				}
-			}
-
-			kfe->oe = kfe->e;
-
-			if (kfe->v1->v != kfe->e->v1 || kfe->v2->v != kfe->e->v2) {
-				BMO_SetFlag(bm, kfe->e, DEL);
-				BMO_ClearFlag(bm, kfe->e, MARK);
-				
-				if (kfe->v1->v != kfe->e->v1)
-					BMO_SetFlag(bm, kfe->v1->v, VERT_ON_EDGE);
-				if (kfe->v2->v != kfe->e->v2)
-					BMO_SetFlag(bm, kfe->v2->v, VERT_ON_EDGE);
-
-				kfe->e = NULL;
-			}
-		}
-		
-		if (!kfe->e) {
-			kfe->e = BM_Make_Edge(bm, kfe->v1->v, kfe->v2->v, NULL, 0);
-		}
-		
-		BMO_SetFlag(bm, kfe->e, MARK);
-		
-		if (kfe->basef) {
-			BMEdge *e;
-			BM_ITER(e, &bmiter, bm, BM_EDGES_OF_FACE, kfe->basef) {
-				BMO_SetFlag(bm, e, MARK);			
-			}
-
-			BMO_SetFlag(bm, kfe->basef, DEL);
-			group |= BMINDEX_GET(kfe->basef);
-		} 
-		
-		if (!group) {
-			Ref *ref;
-			
-			for (ref=kfe->faces.first; ref; ref=ref->next) {
-				kfe->basef = ref->ref;
-				group |= BMINDEX_GET(ref->ref);	
-			}
-		}
-
-		if (group)
-			BMO_Insert_MapInt(bm, &bmop, "restrict", kfe->e, group);
-		else
-			printf("yeek!\n");
-	}
-	
-	/*not sure why this is needed, sanity check to make sure del'd edges are not
-	  marked as well*/
-	BM_ITER(e, &bmiter, bm, BM_EDGES_OF_MESH, NULL) {
-		if (BMO_TestFlag(bm, e, DEL))
-			BMO_ClearFlag(bm, e, MARK);
-	}
-
-	BM_ITER(f, &bmiter, bm, BM_FACES_OF_MESH, NULL) {
-		BMIter eiter;
-		
-		if (!BMO_TestFlag(bm, f, DEL))
-			continue;
-		
-		BM_ITER(e, &eiter, bm, BM_EDGES_OF_FACE, f) {
-			BMIter liter;
-			BMLoop *l;
-			
-			BMO_SetFlag(bm, e, MARK);
-			
-			BM_ITER(l, &liter, bm, BM_LOOPS_OF_EDGE, e) {
-				BMINDEX_SET(e, BMINDEX_GET(e)|BMINDEX_GET(l->f));
-			}
-		}
-	}
-
-	BMO_Flag_To_Slot(bm, &bmop, "edges", MARK, BM_EDGE);
-	BMO_Flag_To_Slot(bm, &bmop, "excludefaces", DEL, BM_FACE);
-	
-	/*execute the edgenet fill operator.  it will restrict filled faces to edges
-	  belonging to the same group (note edges can belong to multiple groups, using
-	  bitmasks)*/
-	BMO_Exec_Op(bm, &bmop);
-	BMO_Flag_Buffer(bm, &bmop, "faceout", MARK, BM_FACE);
-	
-	BM_Compute_Normals(bm);
-	
-	//void interp_weights_poly_v3(float *w,float v[][3], int n, float *co)
-	
-	/* interpolate customdata */
-	
-	/*first deal with interpolating vertices that lie on original edges*/	
-	BLI_mempool_iternew(kcd->kedges, &iter);
-	for (kfe=BLI_mempool_iterstep(&iter); kfe; kfe=BLI_mempool_iterstep(&iter)) {
-		BMLoop *l1, *l2;
-		float fac, w[2];
-		void *blocks[2];
-		
-		if (!kfe->oe)
-			continue;
-		
-		BM_ITER(l1, &bmiter, bm, BM_LOOPS_OF_EDGE, kfe->oe) {
-			BMLoop *l2 = NULL;
-			BMIter liter;
-			int i, j;
-			
-			BM_ITER(l2, &liter, bm, BM_LOOPS_OF_EDGE, kfe->e) {
-				if (!BM_Vert_In_Edge(kfe->e, l2->next->v)) {
-					l2 = l2->prev;
-				}
-				
-				if (!BMO_InMap(bm, &bmop, "faceout_groupmap", l2->f))
-					continue;
-				
-				if (BMINDEX_GET(l1->f) == BMO_Get_MapInt(bm, &bmop, "faceout_groupmap", l2->f))
-					break;	
-			}
-			
-			if (!l2)
-				continue;
-			
-			if (dot_v3v3(l1->f->no, l2->f->no) < 0.0f) {
-				BMO_SetFlag(bm, l2->f, FACE_FLIP);
-			}
-			
-			for (i=0; i<2; i++) {
-				if (i)
-					l2 = l2->next;
-				
-				fac = len_v3v3(kfe->oe->v1->co, l2->v->co) / (len_v3v3(kfe->oe->v1->co, kfe->oe->v2->co)+FLT_EPSILON);
-				
-				if (kfe->oe->v1 == l1->v) {
-					w[0] = 1.0-fac;
-					w[1] = fac;
-				} else {
-					w[0] = fac;
-					w[1] = 1.0-fac;
-				}
-				
-				if (l1->e == kfe->oe) {
-					blocks[0] = l1->head.data;
-					blocks[1] = l1->next->head.data;
-				} else {
-					blocks[0] = l1->prev->head.data;
-					blocks[1] = l1->head.data;
-				}
-				
-				BM_Copy_Attributes(bm, bm, l1->f, l2->f);
-				CustomData_bmesh_interp(&bm->ldata, blocks, w, NULL, 2, l2->head.data);
-			}
-		}
-	}
-	
-	/*ensure normals are correct*/
-	BM_ITER(f, &bmiter, bm, BM_FACES_OF_MESH, NULL) {
-		if (BMO_TestFlag(bm, f, FACE_FLIP)) {
-			BM_flip_normal(bm, f);
-		}
-	}
-
-	/*now deal with interior vertex interpolation
-	  still kindof buggy*/
-	BMO_ITER(f, &siter, bm, &bmop, "faceout_groupmap", BM_FACE) {
-		BMLoop *l1, *l2;
-		BMFace *f2; 
-		BMIter liter1, liter2;
-		int group = *(int*)BMO_IterMapVal(&siter);
-		
-		BM_ITER(l1, &liter1, bm, BM_LOOPS_OF_FACE, f) {
-			float co[3], hit[3];
-			float dir[3];
-			int i;
-			
-			if (BMO_TestFlag(bm, l1->v, VERT_ORIG) || BMO_TestFlag(bm, l1->v, VERT_ON_EDGE))
-				continue;
-			
-			copy_v3_v3(co, l1->v->co);
-			copy_v3_v3(dir, l1->v->no);
-			mul_v3_fl(dir, 0.001f);
-			
-			add_v3_v3(co, dir);
-			copy_v3_v3(dir, l1->v->no);
-			mul_v3_fl(dir, -1.0);
-			
-			f2 = BMBVH_RayCast(kcd->bmbvh, co, dir, hit);
-			if (!f2) {
-				printf("eek!!\n");
-				continue;
-			}
-			
-			BLI_array_empty(vertcos);
-			BLI_array_empty(blocks);
-			BLI_array_empty(w);
-			BM_ITER(l2, &liter2, bm, BM_LOOPS_OF_FACE, f2) {
-				BLI_array_growone(vertcos);
-				BLI_array_append(blocks, l2->head.data);
-
-				copy_v3_v3(vertcos[BLI_array_count(vertcos)-1], l2->v->co);
-				BLI_array_append(w, 0.0f);
-			}
-			
-			BM_Copy_Attributes(bm, bm, f2, f);
-
-			interp_weights_poly_v3(w, vertcos, f2->len, l1->v->co);
-			CustomData_bmesh_interp(&bm->ldata, blocks, w, NULL, BLI_array_count(blocks), l1->head.data);
-		}
-	}
-
-	BMO_Finish_Op(bm, &bmop);
-
-	/*delete left over faces*/
-	BMO_CallOpf(bm, "del geom=%ff context=%i", DEL, DEL_ONLYFACES);
-	BMO_CallOpf(bm, "del geom=%fe context=%i", DEL, DEL_EDGES);
-
-	BMO_pop(bm);
 	BMO_ClearStack(bm); /*remerge_faces sometimes raises errors, so make sure to clear them*/
 }
 




More information about the Bf-blender-cvs mailing list