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);
                


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to