forked from bartvdbraak/blender
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:
parent
db5a83d083
commit
426451a44d
@ -161,6 +161,9 @@ void verifyBuckets(ReebGraph *rg);
|
||||
void verifyFaces(ReebGraph *rg);
|
||||
|
||||
/*********************** PUBLIC *********************************/
|
||||
|
||||
#define REEB_MAX_MULTI_LEVEL 10
|
||||
|
||||
ReebGraph *BIF_ReebGraphFromEditMesh(void);
|
||||
ReebGraph *BIF_ReebGraphMultiFromEditMesh(void);
|
||||
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_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)
|
||||
|
@ -3153,7 +3153,7 @@ ReebGraph *BIF_ReebGraphMultiFromEditMesh(void)
|
||||
EditMesh *em = G.editMesh;
|
||||
ReebGraph *rg = NULL;
|
||||
ReebGraph *rgi, *previous;
|
||||
int i, nb_levels = 5;
|
||||
int i, nb_levels = REEB_MAX_MULTI_LEVEL;
|
||||
|
||||
if (em == 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 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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user