More levels for multi resolution (smoother progression between filtering values). Also different progression for internal edges filtering than external edges (small internal and less important than small external).

This commit is contained in:
Martin Poirier 2008-07-17 17:33:45 +00:00
parent db5a83d083
commit 426451a44d
3 changed files with 18 additions and 2 deletions

@ -161,6 +161,9 @@ void verifyBuckets(ReebGraph *rg);
void verifyFaces(ReebGraph *rg); void verifyFaces(ReebGraph *rg);
/*********************** PUBLIC *********************************/ /*********************** PUBLIC *********************************/
#define REEB_MAX_MULTI_LEVEL 10
ReebGraph *BIF_ReebGraphFromEditMesh(void); ReebGraph *BIF_ReebGraphFromEditMesh(void);
ReebGraph *BIF_ReebGraphMultiFromEditMesh(void); ReebGraph *BIF_ReebGraphMultiFromEditMesh(void);
void BIF_flagMultiArcs(ReebGraph *rg, int flag); void BIF_flagMultiArcs(ReebGraph *rg, int flag);

@ -5050,7 +5050,7 @@ static void editing_panel_mesh_skgen_display(Object *ob, Mesh *me)
uiDefButBitS(block, TOG, SKGEN_DISP_WEIGHT, REDRAWVIEW3D, "Weight", 1108, 40, 83,19, &G.scene->toolsettings->skgen_options, 0, 0, 0, 0, "Show Weight"); uiDefButBitS(block, TOG, SKGEN_DISP_WEIGHT, REDRAWVIEW3D, "Weight", 1108, 40, 83,19, &G.scene->toolsettings->skgen_options, 0, 0, 0, 0, "Show Weight");
uiDefButBitS(block, TOG, SKGEN_DISP_ORIG, REDRAWVIEW3D, "Original", 1191, 40, 84,19, &G.scene->toolsettings->skgen_options, 0, 0, 0, 0, "Show Original Graph"); uiDefButBitS(block, TOG, SKGEN_DISP_ORIG, REDRAWVIEW3D, "Original", 1191, 40, 84,19, &G.scene->toolsettings->skgen_options, 0, 0, 0, 0, "Show Original Graph");
uiDefButC(block, NUM, REDRAWVIEW3D, "Level:", 1025, 20, 125,19, &G.scene->toolsettings->skgen_multi_level, 0, 5, 1, 0,"Specify the level to draw"); uiDefButC(block, NUM, REDRAWVIEW3D, "Level:", 1025, 20, 125,19, &G.scene->toolsettings->skgen_multi_level, 0, REEB_MAX_MULTI_LEVEL, 1, 0,"Specify the level to draw");
} }
static void editing_panel_mesh_skgen_retarget(Object *ob, Mesh *me) static void editing_panel_mesh_skgen_retarget(Object *ob, Mesh *me)

@ -3153,7 +3153,7 @@ ReebGraph *BIF_ReebGraphMultiFromEditMesh(void)
EditMesh *em = G.editMesh; EditMesh *em = G.editMesh;
ReebGraph *rg = NULL; ReebGraph *rg = NULL;
ReebGraph *rgi, *previous; ReebGraph *rgi, *previous;
int i, nb_levels = 5; int i, nb_levels = REEB_MAX_MULTI_LEVEL;
if (em == NULL) if (em == NULL)
return NULL; return NULL;
@ -3205,6 +3205,19 @@ ReebGraph *BIF_ReebGraphMultiFromEditMesh(void)
{ {
float internal_threshold = rg->length * G.scene->toolsettings->skgen_threshold_internal * (i / (float)nb_levels); float internal_threshold = rg->length * G.scene->toolsettings->skgen_threshold_internal * (i / (float)nb_levels);
float external_threshold = rg->length * G.scene->toolsettings->skgen_threshold_external * (i / (float)nb_levels); float external_threshold = rg->length * G.scene->toolsettings->skgen_threshold_external * (i / (float)nb_levels);
/* filter internal progressively in second half only*/
if (i > nb_levels / 2)
{
internal_threshold = rg->length * G.scene->toolsettings->skgen_threshold_internal;
}
else
{
internal_threshold = rg->length * G.scene->toolsettings->skgen_threshold_internal * (2 * i / (float)nb_levels);
}
external_threshold = rg->length * G.scene->toolsettings->skgen_threshold_external * (i / (float)nb_levels);
filterGraph(rgi, G.scene->toolsettings->skgen_options, internal_threshold, external_threshold); filterGraph(rgi, G.scene->toolsettings->skgen_options, internal_threshold, external_threshold);
} }