Revision: 15473
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15473
Author:   theeth
Date:     2008-07-07 19:27:22 +0200 (Mon, 07 Jul 2008)

Log Message:
-----------
Reeb multiresolution filtering, now with more than one level

Modified Paths:
--------------
    branches/harmonic-skeleton/source/blender/include/reeb.h
    branches/harmonic-skeleton/source/blender/makesdna/DNA_scene_types.h
    branches/harmonic-skeleton/source/blender/src/autoarmature.c
    branches/harmonic-skeleton/source/blender/src/buttons_editing.c
    branches/harmonic-skeleton/source/blender/src/reeb.c

Modified: branches/harmonic-skeleton/source/blender/include/reeb.h
===================================================================
--- branches/harmonic-skeleton/source/blender/include/reeb.h    2008-07-07 
17:14:44 UTC (rev 15472)
+++ branches/harmonic-skeleton/source/blender/include/reeb.h    2008-07-07 
17:27:22 UTC (rev 15473)
@@ -158,6 +158,7 @@
 
 /*********************** PUBLIC *********************************/
 ReebGraph *BIF_ReebGraphFromEditMesh(void);
+ReebGraph *BIF_ReebGraphMultiFromEditMesh(void);
 
 void BIF_GlobalReebGraphFromEditMesh(void);
 void BIF_GlobalReebFree(void);

Modified: branches/harmonic-skeleton/source/blender/makesdna/DNA_scene_types.h
===================================================================
--- branches/harmonic-skeleton/source/blender/makesdna/DNA_scene_types.h        
2008-07-07 17:14:44 UTC (rev 15472)
+++ branches/harmonic-skeleton/source/blender/makesdna/DNA_scene_types.h        
2008-07-07 17:27:22 UTC (rev 15473)
@@ -440,7 +440,10 @@
        char  skgen_postpro;
        char  skgen_postpro_passes;
        char  skgen_subdivisions[3];
+       char  skgen_multi_level;
        
+       char tpad[7];
+       
        /* Alt+RMB option */
        char edge_mode;
 } ToolSettings;

Modified: branches/harmonic-skeleton/source/blender/src/autoarmature.c
===================================================================
--- branches/harmonic-skeleton/source/blender/src/autoarmature.c        
2008-07-07 17:14:44 UTC (rev 15472)
+++ branches/harmonic-skeleton/source/blender/src/autoarmature.c        
2008-07-07 17:27:22 UTC (rev 15473)
@@ -1354,10 +1354,12 @@
        Base *base;
        ReebGraph *reebg;
        
-       reebg = BIF_ReebGraphFromEditMesh();
+       //reebg = BIF_ReebGraphFromEditMesh();
+       //BLI_markdownSymmetry((BGraph*)reebg, reebg->nodes.first, 
G.scene->toolsettings->skgen_symmetry_limit);
        
-       BLI_markdownSymmetry((BGraph*)reebg, reebg->nodes.first, 
G.scene->toolsettings->skgen_symmetry_limit);
+       reebg = BIF_ReebGraphMultiFromEditMesh();
        
+       
        printf("Reeb Graph created\n");
 
        base= FIRSTBASE;

Modified: branches/harmonic-skeleton/source/blender/src/buttons_editing.c
===================================================================
--- branches/harmonic-skeleton/source/blender/src/buttons_editing.c     
2008-07-07 17:14:44 UTC (rev 15472)
+++ branches/harmonic-skeleton/source/blender/src/buttons_editing.c     
2008-07-07 17:27:22 UTC (rev 15473)
@@ -5036,6 +5036,8 @@
        uiDefButBitS(block, TOG, SKGEN_DISP_LENGTH, REDRAWVIEW3D,       
"Length",                       1025, 60, 83,19, 
&G.scene->toolsettings->skgen_options, 0, 0, 0, 0,             "Show Length");
        uiDefButBitS(block, TOG, SKGEN_DISP_WEIGHT, REDRAWVIEW3D,       
"Weight",                       1108, 60, 83,19, 
&G.scene->toolsettings->skgen_options, 0, 0, 0, 0,             "Show Weight");
        uiDefButBitS(block, TOG, SKGEN_DISP_ORIG, REDRAWVIEW3D,         
"Original",                     1191, 60, 84,19, 
&G.scene->toolsettings->skgen_options, 0, 0, 0, 0,             "Show Original 
Graph");
+
+       uiDefButC(block, NUM, REDRAWVIEW3D,                                     
        "Level:",                       1025, 40, 125,19, 
&G.scene->toolsettings->skgen_multi_level, 0, 5, 1, 0,"Specify the level to 
draw");
 }
 
 static void editing_panel_mesh_skgen_retarget(Object *ob, Mesh *me)

Modified: branches/harmonic-skeleton/source/blender/src/reeb.c
===================================================================
--- branches/harmonic-skeleton/source/blender/src/reeb.c        2008-07-07 
17:14:44 UTC (rev 15472)
+++ branches/harmonic-skeleton/source/blender/src/reeb.c        2008-07-07 
17:27:22 UTC (rev 15473)
@@ -2066,13 +2066,16 @@
                        countfaces++;
                        if (countfaces % 100 == 0)
                        {
-                               printf("face %i of %i\n", countfaces, totfaces);
+                               printf("\rface %i of %i", countfaces, totfaces);
                                verifyFaces(rg);
                        }
 #endif
                }
-               
        }
+       
+       printf("\n");
+       
+       
        BLI_listbase_from_dlist(dlist, &rg->nodes);
        
        removeNormalNodes(rg);
@@ -2466,12 +2469,13 @@
                                                        current_eve->tmp.fp = 
currentWeight;
                                                }
                                                
+                                       printf("\redge %i / %i", eIndex, 
totedge);
                                                
                                        } while (select_eed != NULL);
                                        
                                        MEM_freeN(edges);
                                        
-                                       printf("%i / %i\n", eIndex, totedge);
+                                       printf("\n");
                                }
                        }
                }
@@ -2819,6 +2823,7 @@
        EditMesh *em = G.editMesh;
        ReebGraph *rg = NULL;
        ReebGraph *rgi;
+       int i, nb_levels = 5;
        
        if (em == NULL)
                return NULL;
@@ -2850,14 +2855,19 @@
        /* Filtering might have created degree 2 nodes, so remove them */
        removeNormalNodes(rg);
        
-       rg = copyReebGraph(rg);
+       for (i = 0; i < nb_levels; i++)
+       {
+               rg = copyReebGraph(rg);
+       }
        
-       for (rgi = rg; rgi; rgi = rgi->link)
+       for (rgi = rg, i = nb_levels; rgi; rgi = rgi->link, i--)
        {
                /* don't fully filter last level */
                if (rgi->link)
                {
-                       filterGraph(rgi, G.scene->toolsettings->skgen_options, 
G.scene->toolsettings->skgen_threshold_internal, 
G.scene->toolsettings->skgen_threshold_external);
+                       float internal_threshold = 
G.scene->toolsettings->skgen_threshold_internal * (i / (float)nb_levels);
+                       float external_threshold = 
G.scene->toolsettings->skgen_threshold_external * (i / (float)nb_levels);
+                       filterGraph(rgi, G.scene->toolsettings->skgen_options, 
internal_threshold, external_threshold);
                }
                /* on last level, only smart filter and loop filter */
                else
@@ -2971,11 +2981,13 @@
        
        if (GLOBAL_RG->link && G.scene->toolsettings->skgen_options & 
SKGEN_DISP_ORIG)
        {
-               rg = GLOBAL_RG->link;
+               for (rg = GLOBAL_RG; rg->link; rg = rg->link) ;
        }
        else
        {
-               rg = GLOBAL_RG;
+               i = G.scene->toolsettings->skgen_multi_level;
+               
+               for (rg = GLOBAL_RG; i && rg->link; i--, rg = rg->link) ;
        }
        
        glDisable(GL_DEPTH_TEST);


_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to