From d590db83705b9bfbb663c9aa388f5bf6fff09116 Mon Sep 17 00:00:00 2001 From: Pablo Dobarro Date: Thu, 3 Oct 2019 23:46:29 +0200 Subject: [PATCH] Sculpt: Clay Strips brush tweaks - Fix accumulate by allowing normal radius greater than one. Now it works as it should and it should be enabled by default - Make the square test sharper. This gives a lot more definition to the brush, even when working with fewer polygons Reviewed By: brecht Differential Revision: https://developer.blender.org/D5984 --- source/blender/blenkernel/intern/brush.c | 7 +++++++ source/blender/editors/sculpt_paint/sculpt.c | 7 ++++--- source/blender/makesrna/intern/rna_brush.c | 4 ++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index f80d262ee47..39a12a997ef 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -909,6 +909,13 @@ void BKE_brush_sculpt_reset(Brush *br) case SCULPT_TOOL_CLAY: br->flag |= BRUSH_FRONTFACE; break; + case SCULPT_TOOL_CLAY_STRIPS: + br->flag |= BRUSH_ACCUMULATE; + br->alpha = 0.7f; + br->normal_radius_factor = 1.7f; + br->curve_preset = BRUSH_CURVE_SPHERE; + br->spacing = 6; + break; case SCULPT_TOOL_CREASE: br->flag |= BRUSH_DIR_IN; br->alpha = 0.25; diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 6e9f62b980c..64674ecd0a1 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -1098,9 +1098,8 @@ bool sculpt_brush_test_cube(SculptBrushTest *test, const float co[3], float loca local_co[1] = fabsf(local_co[1]); local_co[2] = fabsf(local_co[2]); + const float p = 8.0f; if (local_co[0] <= side && local_co[1] <= side && local_co[2] <= side) { - float p = 4.0f; - test->dist = ((powf(local_co[0], p) + powf(local_co[1], p) + powf(local_co[2], p)) / powf(side, p)); @@ -1740,11 +1739,13 @@ static float brush_strength(const Sculpt *sd, switch (brush->sculpt_tool) { case SCULPT_TOOL_CLAY: - case SCULPT_TOOL_CLAY_STRIPS: case SCULPT_TOOL_DRAW: case SCULPT_TOOL_DRAW_SHARP: case SCULPT_TOOL_LAYER: return alpha * flip * pressure * overlap * feather; + case SCULPT_TOOL_CLAY_STRIPS: + /* Clay Strips needs extra strength to compensate for its default normal radius */ + return alpha * flip * pressure * overlap * feather * 1.3f; case SCULPT_TOOL_MASK: overlap = (1 + overlap) / 2; diff --git a/source/blender/makesrna/intern/rna_brush.c b/source/blender/makesrna/intern/rna_brush.c index d64970d03ab..2aaa9e7855e 100644 --- a/source/blender/makesrna/intern/rna_brush.c +++ b/source/blender/makesrna/intern/rna_brush.c @@ -1885,8 +1885,8 @@ static void rna_def_brush(BlenderRNA *brna) prop = RNA_def_property(srna, "normal_radius_factor", PROP_FLOAT, PROP_FACTOR); RNA_def_property_float_sdna(prop, NULL, "normal_radius_factor"); - RNA_def_property_range(prop, 0.0f, 1.0f); - RNA_def_property_ui_range(prop, 0.0f, 1.0f, 0.001, 3); + RNA_def_property_range(prop, 0.0f, 2.0f); + RNA_def_property_ui_range(prop, 0.0f, 2.0f, 0.001, 3); RNA_def_property_ui_text(prop, "Normal Radius", "Ratio between the brush radius and the radius that is going to be "