[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16208] branches/harmonic-skeleton/source/ blender: Finish yesterday's bugfixing.

Martin Poirier theeth at yahoo.com
Thu Aug 21 19:28:59 CEST 2008


Revision: 16208
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16208
Author:   theeth
Date:     2008-08-21 19:28:58 +0200 (Thu, 21 Aug 2008)

Log Message:
-----------
Finish yesterday's bugfixing.

Making shape function work on cyclic graphs requires tracking the current graph level, which wasn't done correctly when this was implemented. Done properly now so going up and down on graph works as it did before.

Modified Paths:
--------------
    branches/harmonic-skeleton/source/blender/blenlib/intern/graph.c
    branches/harmonic-skeleton/source/blender/src/autoarmature.c

Modified: branches/harmonic-skeleton/source/blender/blenlib/intern/graph.c
===================================================================
--- branches/harmonic-skeleton/source/blender/blenlib/intern/graph.c	2008-08-21 16:13:26 UTC (rev 16207)
+++ branches/harmonic-skeleton/source/blender/blenlib/intern/graph.c	2008-08-21 17:28:58 UTC (rev 16208)
@@ -465,6 +465,8 @@
 
 int BLI_subtreeShape(BGraph *graph, BNode *node, BArc *rootArc, int include_root)
 {
+	BNode *test_node;
+	
 	BLI_flagNodes(graph, 0);
 	return subtreeShape(node, rootArc, include_root);
 }

Modified: branches/harmonic-skeleton/source/blender/src/autoarmature.c
===================================================================
--- branches/harmonic-skeleton/source/blender/src/autoarmature.c	2008-08-21 16:13:26 UTC (rev 16207)
+++ branches/harmonic-skeleton/source/blender/src/autoarmature.c	2008-08-21 17:28:58 UTC (rev 16208)
@@ -1341,8 +1341,6 @@
 	cost_cache = MEM_callocN(sizeof(float) * nb_edges, "Cost cache");
 	vec_cache = MEM_callocN(sizeof(float*) * (nb_edges + 1), "Vec cache");
 	
-//	/* symmetry axis */
-//	if (earc->symmetry_level == 1 && iarc->symmetry_level == 1)
 	if (testFlipArc(iarc, inode_start))
 	{
 		node_start = earc->tail;
@@ -1693,8 +1691,6 @@
 	float *previous_vec = NULL;
 
 	
-//	/* symmetry axis */
-//	if (earc->symmetry_level == 1 && iarc->symmetry_level == 1)
 	if (testFlipArc(iarc, inode_start))
 	{
 		node_start = (ReebNode*)earc->tail;
@@ -1798,13 +1794,10 @@
 		RigEdge *edge = iarc->edges.first;
 		EditBone *bone = edge->bone;
 		
-//		/* symmetry axis */
-//		if (earc->symmetry_level == 1 && iarc->symmetry_level == 1)
 		if (testFlipArc(iarc, inode_start))
 		{
 			repositionBone(rigg, bone, earc->tail->p, earc->head->p);
 		}
-		/* or not */
 		else
 		{
 			repositionBone(rigg, bone, earc->head->p, earc->tail->p);
@@ -1868,7 +1861,7 @@
 		next_earc = next_earc->link_up;
 		reebg = reebg->link_up;
 		enode = next_earc->head;
-		eshape = BLI_subtreeShape((BGraph*)rigg->link_mesh, (BNode*)enode, (BArc*)next_earc, 1) % SHAPE_LEVELS;
+		eshape = BLI_subtreeShape((BGraph*)reebg, (BNode*)enode, (BArc*)next_earc, 1) % SHAPE_LEVELS;
 	} 
 
 	next_earc->flag = 1; // mark as taken
@@ -1915,16 +1908,20 @@
 	
 	next_iarc->link_mesh = NULL;
 		
+	printf("-----------------------\n");
+	printf("MATCHING LIMB\n");
+	RIG_printArcBones(next_iarc);
+	
 	for(i = 0; i < enode->degree; i++)
 	{
 		next_earc = (ReebArc*)enode->arcs[i];
 		
 		if (next_earc->flag == 0)
 		{
-			printf("candidate (flag %i == %i) (group %i == %i) (level %i == %i)\n",
-			next_earc->symmetry_flag, symmetry_flag,
-			next_earc->symmetry_group, symmetry_group,
-			next_earc->symmetry_level, symmetry_level);
+			printf("candidate (flag %i ?= %i) (group %i ?= %i) (level %i ?= %i)\n",
+			symmetry_flag, next_earc->symmetry_flag, 
+			symmetry_group, next_earc->symmetry_flag, 
+			symmetry_level, next_earc->symmetry_level);
 		}
 		
 		if (next_earc->flag == 0 && /* not already taken */
@@ -1932,9 +1929,7 @@
 			next_earc->symmetry_group == symmetry_group &&
 			next_earc->symmetry_level == symmetry_level)
 		{
-			printf("-----------------------\n");
 			printf("CORRESPONDING ARC FOUND\n");
-			RIG_printArcBones(next_iarc);
 			printf("flag %i -- symmetry level %i -- symmetry flag %i\n", next_earc->flag, next_earc->symmetry_level, next_earc->symmetry_flag);
 			
 			matchMultiResolutionArc(rigg, start_node, next_iarc, next_earc);
@@ -1945,19 +1940,8 @@
 	/* not found, try at higher nodes (lower node might have filtered internal arcs, messing shape of tree */
 	if (next_iarc->link_mesh == NULL)
 	{
-		printf("--------------------------\n");
 		printf("NO CORRESPONDING ARC FOUND - GOING TO HIGHER LEVELS\n");
-		RIG_printArcBones(next_iarc);
 		
-		printf("LOOKING FOR\n");
-		printf("flag %i -- symmetry level %i -- symmetry flag %i\n", 0, symmetry_level, symmetry_flag);
-		
-		printf("CANDIDATES\n");
-		for(i = 0; i < enode->degree; i++)
-		{
-			next_earc = (ReebArc*)enode->arcs[i];
-			printf("flag %i -- symmetry level %i -- symmetry flag %i\n", next_earc->flag, next_earc->symmetry_level, next_earc->symmetry_flag);
-		}
 		if (enode->link_up)
 		{
 			start_node->link_mesh = enode->link_up;
@@ -1968,7 +1952,6 @@
 	/* still not found, print debug info */
 	if (next_iarc->link_mesh == NULL)
 	{
-		printf("--------------------------\n");
 		printf("NO CORRESPONDING ARC FOUND\n");
 		RIG_printArcBones(next_iarc);
 		





More information about the Bf-blender-cvs mailing list