[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15473] branches/harmonic-skeleton/source/ blender: Reeb multiresolution filtering, now with more than one level
Martin Poirier
theeth at yahoo.com
Mon Jul 7 19:27:29 CEST 2008
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);
More information about the Bf-blender-cvs
mailing list