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