diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index 29c4ae624e9..bd372237e91 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -812,11 +812,13 @@ void BKE_brush_sculpt_reset(Brush *br) /* Use the curve presets by default */ br->curve_preset = BRUSH_CURVE_SMOOTH; - if (br->sculpt_tool == SCULPT_TOOL_DRAW_SHARP) { - br->curve_preset = BRUSH_CURVE_POW4; - } + /* Brush settings */ switch (br->sculpt_tool) { + case SCULPT_TOOL_DRAW_SHARP: + br->flag |= BRUSH_DIR_IN; + br->curve_preset = BRUSH_CURVE_POW4; + br->spacing = 5; case SCULPT_TOOL_CLAY: br->flag |= BRUSH_FRONTFACE; break; @@ -824,41 +826,9 @@ void BKE_brush_sculpt_reset(Brush *br) br->flag |= BRUSH_DIR_IN; br->alpha = 0.25; break; - case SCULPT_TOOL_FILL: - br->add_col[1] = 1; - br->sub_col[0] = 0.25; - br->sub_col[1] = 1; - break; - case SCULPT_TOOL_FLATTEN: - br->add_col[1] = 1; - br->sub_col[0] = 0.25; - br->sub_col[1] = 1; - break; - case SCULPT_TOOL_INFLATE: - br->add_col[0] = 0.750000; - br->add_col[1] = 0.750000; - br->add_col[2] = 0.750000; - br->sub_col[0] = 0.250000; - br->sub_col[1] = 0.250000; - br->sub_col[2] = 0.250000; - break; - case SCULPT_TOOL_NUDGE: - br->add_col[0] = 0.250000; - br->add_col[1] = 1.000000; - br->add_col[2] = 0.250000; - break; - case SCULPT_TOOL_PINCH: - br->add_col[0] = 0.750000; - br->add_col[1] = 0.750000; - br->add_col[2] = 0.750000; - br->sub_col[0] = 0.250000; - br->sub_col[1] = 0.250000; - br->sub_col[2] = 0.250000; - break; case SCULPT_TOOL_SCRAPE: - br->add_col[1] = 1.000000; - br->sub_col[0] = 0.250000; - br->sub_col[1] = 1.000000; + br->alpha = 1.0f; + br->spacing = 7; break; case SCULPT_TOOL_ROTATE: br->alpha = 1.0; @@ -866,22 +836,92 @@ void BKE_brush_sculpt_reset(Brush *br) case SCULPT_TOOL_SMOOTH: br->flag &= ~BRUSH_SPACE_ATTEN; br->spacing = 5; - br->add_col[0] = 0.750000; - br->add_col[1] = 0.750000; - br->add_col[2] = 0.750000; + br->alpha = 0.7f; break; - case SCULPT_TOOL_GRAB: - case SCULPT_TOOL_ELASTIC_DEFORM: - case SCULPT_TOOL_POSE: case SCULPT_TOOL_SNAKE_HOOK: case SCULPT_TOOL_THUMB: br->size = 75; br->flag &= ~BRUSH_ALPHA_PRESSURE; br->flag &= ~BRUSH_SPACE; br->flag &= ~BRUSH_SPACE_ATTEN; - br->add_col[0] = 0.250000; - br->add_col[1] = 1.000000; - br->add_col[2] = 0.250000; + break; + case SCULPT_TOOL_ELASTIC_DEFORM: + br->elastic_deform_volume_preservation = 0.4f; + br->elastic_deform_type = BRUSH_ELASTIC_DEFORM_GRAB_TRISCALE; + br->flag &= ~BRUSH_ALPHA_PRESSURE; + br->flag &= ~BRUSH_SPACE; + br->flag &= ~BRUSH_SPACE_ATTEN; + break; + case SCULPT_TOOL_POSE: + br->flag &= ~BRUSH_ALPHA_PRESSURE; + br->flag &= ~BRUSH_SPACE; + br->flag &= ~BRUSH_SPACE_ATTEN; + break; + case SCULPT_TOOL_GRAB: + br->alpha = 0.4f; + br->size = 75; + br->flag &= ~BRUSH_ALPHA_PRESSURE; + br->flag &= ~BRUSH_SPACE; + br->flag &= ~BRUSH_SPACE_ATTEN; + break; + default: + break; + } + + /* Cursor colors */ + switch (br->sculpt_tool) { + case SCULPT_TOOL_DRAW: + case SCULPT_TOOL_DRAW_SHARP: + case SCULPT_TOOL_CLAY: + case SCULPT_TOOL_CLAY_STRIPS: + case SCULPT_TOOL_LAYER: + case SCULPT_TOOL_INFLATE: + case SCULPT_TOOL_BLOB: + case SCULPT_TOOL_CREASE: + br->add_col[0] = 0.65f; + br->add_col[1] = 0.85f; + br->add_col[2] = 0.9f; + br->sub_col[0] = 0.65f; + br->sub_col[1] = 0.85f; + br->sub_col[2] = 0.9f; + break; + + case SCULPT_TOOL_SMOOTH: + case SCULPT_TOOL_FLATTEN: + case SCULPT_TOOL_FILL: + case SCULPT_TOOL_SCRAPE: + br->add_col[0] = 1.0f; + br->add_col[1] = 0.39f; + br->add_col[2] = 0.39f; + br->sub_col[0] = 1.0f; + br->sub_col[1] = 0.39f; + br->sub_col[2] = 0.39f; + break; + + case SCULPT_TOOL_PINCH: + case SCULPT_TOOL_GRAB: + case SCULPT_TOOL_SNAKE_HOOK: + case SCULPT_TOOL_THUMB: + case SCULPT_TOOL_NUDGE: + case SCULPT_TOOL_ROTATE: + case SCULPT_TOOL_ELASTIC_DEFORM: + case SCULPT_TOOL_POSE: + br->add_col[0] = 1.0f; + br->add_col[1] = 1.0f; + br->add_col[2] = 0.39f; + br->sub_col[0] = 1.0f; + br->sub_col[1] = 1.0f; + br->sub_col[2] = 0.39f; + break; + + case SCULPT_TOOL_SIMPLIFY: + case SCULPT_TOOL_MASK: + br->add_col[0] = 0.750000; + br->add_col[1] = 0.750000; + br->add_col[2] = 0.750000; + br->sub_col[0] = 0.750000; + br->sub_col[1] = 0.750000; + br->sub_col[2] = 0.750000; break; default: break; diff --git a/source/blender/blenloader/intern/versioning_defaults.c b/source/blender/blenloader/intern/versioning_defaults.c index 87c8869622a..15d200f72d9 100644 --- a/source/blender/blenloader/intern/versioning_defaults.c +++ b/source/blender/blenloader/intern/versioning_defaults.c @@ -41,6 +41,7 @@ #include "DNA_light_types.h" #include "BKE_appdir.h" +#include "BKE_brush.h" #include "BKE_colortools.h" #include "BKE_layer.h" #include "BKE_library.h" @@ -285,6 +286,10 @@ static void blo_update_defaults_scene(Main *bmain, Scene *scene) CURVEMAP_SLOPE_POSITIVE); } + if (ts->sculpt) { + ts->sculpt->paint.symmetry_flags |= PAINT_SYMMETRY_FEATHER; + } + /* Correct default startup UV's. */ Mesh *me = BLI_findstring(&bmain->meshes, "Cube", offsetof(ID, name) + 2); if (me && (me->totloop == 24) && (me->mloopuv != NULL)) { @@ -423,5 +428,40 @@ void BLO_update_defaults_startup_blend(Main *bmain, const char *app_template) if (brush) { brush->spacing = 3.0; } + + brush = BLI_findstring(&bmain->brushes, "Draw Sharp", offsetof(ID, name) + 2); + if (!brush) { + brush = BKE_brush_add(bmain, "Draw Sharp", OB_MODE_SCULPT); + id_us_min(&brush->id); + brush->sculpt_tool = SCULPT_TOOL_DRAW_SHARP; + } + + brush = BLI_findstring(&bmain->brushes, "Elastic Deform", offsetof(ID, name) + 2); + if (!brush) { + brush = BKE_brush_add(bmain, "Elastic Defrom", OB_MODE_SCULPT); + id_us_min(&brush->id); + brush->sculpt_tool = SCULPT_TOOL_ELASTIC_DEFORM; + } + + brush = BLI_findstring(&bmain->brushes, "Pose", offsetof(ID, name) + 2); + if (!brush) { + brush = BKE_brush_add(bmain, "Pose", OB_MODE_SCULPT); + id_us_min(&brush->id); + brush->sculpt_tool = SCULPT_TOOL_POSE; + } + + brush = BLI_findstring(&bmain->brushes, "Simplify", offsetof(ID, name) + 2); + if (!brush) { + brush = BKE_brush_add(bmain, "Simplify", OB_MODE_SCULPT); + id_us_min(&brush->id); + brush->sculpt_tool = SCULPT_TOOL_SIMPLIFY; + } + + /* Use the same tool icon color in the brush cursor */ + for (Brush *brush = bmain->brushes.first; brush; brush = brush->id.next) { + if (brush->sculpt_tool) { + BKE_brush_sculpt_reset(brush); + } + } } }