GP: New option to paint a predefined weight

Enabling this option, the weight is set to the predefined value and not the result of the sum of the paint actions.
This commit is contained in:
Antonioya 2018-11-20 18:11:42 +01:00
parent 53d9ddf772
commit ec908beab3
4 changed files with 30 additions and 4 deletions

@ -405,8 +405,15 @@ class _draw_left_context_mode:
layout.prop(brush, "size", slider=True)
row = layout.row(align=True)
row.prop(brush, "strength", slider=True)
row.prop(brush, "use_pressure_strength", text="")
row.prop(settings, "use_fix_weight", text="", icon='WPAINT_HLT')
if settings.use_fix_weight is False:
row.prop(brush, "strength", slider=True)
else:
row.prop(brush, "strength", text="Weight", slider=True)
sub = row.row(align=True)
sub.enabled = not settings.use_fix_weight
sub.prop(brush, "use_pressure_strength", text="")
@staticmethod
def PARTICLE(context, layout, tool):

@ -903,11 +903,21 @@ static bool gp_brush_weight_apply(
if (gp_brush_invert_check(gso)) {
/* reduce weight */
curweight -= inf;
if (gso->settings->flag & GP_SCULPT_SETT_FLAG_PAINT_WEIGHT) {
curweight = 0.0f;
}
else {
curweight -= inf;
}
}
else {
/* increase weight */
curweight += inf;
if (gso->settings->flag & GP_SCULPT_SETT_FLAG_PAINT_WEIGHT) {
curweight = gso->gp_brush->strength;
}
else {
curweight += inf;
}
}
CLAMP(curweight, 0.0f, 1.0f);

@ -1051,6 +1051,8 @@ typedef enum eGP_Sculpt_SettingsFlag {
GP_SCULPT_SETT_FLAG_FRAME_FALLOFF = (1 << 5),
/* apply brush to uv data */
GP_SCULPT_SETT_FLAG_APPLY_UV = (1 << 6),
/* paint weight, not add/substract */
GP_SCULPT_SETT_FLAG_PAINT_WEIGHT = (1 << 7),
} eGP_Sculpt_SettingsFlag;
/* Settings for GP Interpolation Operators */

@ -1244,6 +1244,13 @@ static void rna_def_gpencil_sculpt(BlenderRNA *brna)
RNA_def_parameter_clear_flags(prop, PROP_ANIMATABLE, 0);
RNA_def_property_update(prop, NC_SCENE | ND_TOOLSETTINGS, NULL);
prop = RNA_def_property(srna, "use_fix_weight", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SCULPT_SETT_FLAG_PAINT_WEIGHT);
RNA_def_property_ui_text(prop, "Fix Weight",
"Set the predefined weight to any point affected by the brush");
RNA_def_parameter_clear_flags(prop, PROP_ANIMATABLE, 0);
RNA_def_property_update(prop, NC_SCENE | ND_TOOLSETTINGS, NULL);
prop = RNA_def_property(srna, "use_multiframe_falloff", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SCULPT_SETT_FLAG_FRAME_FALLOFF);
RNA_def_property_ui_text(prop, "Use Falloff", "Use falloff effect when edit in multiframe mode to compute brush effect by frame");