Vertex Paint: use brush front-face setting

Follow sculpt mode more closely by using the brush front-face option.
This commit is contained in:
Campbell Barton 2017-10-06 18:57:37 +11:00
parent 082987ec74
commit 8ef757df3d
Notes: blender-bot 2023-02-14 08:28:46 +01:00
Referenced by issue #75518, Weight paint brush: front faces only not working.
4 changed files with 19 additions and 29 deletions

View File

@ -1080,10 +1080,8 @@ class VIEW3D_PT_tools_brush(Panel, View3DPaintPanel):
# use_frontface
col.separator()
row = col.row()
row.prop(brush, "use_frontface", text="Front Faces Only")
col.row().prop(brush, "use_projected", expand=True)
col.prop(brush, "use_frontface", text="Front Faces Only")
col.prop(brush, "use_projected")
# direction
col.separator()
@ -1133,13 +1131,15 @@ class VIEW3D_PT_tools_brush(Panel, View3DPaintPanel):
self.prop_unified_strength(row, context, brush, "strength", text="Strength")
self.prop_unified_strength(row, context, brush, "use_pressure_strength")
col.separator()
col.prop(brush, "vertex_tool", text="Blend")
if brush.vertex_tool != 'SMEAR':
col.prop(brush, "use_accumulate")
col.separator()
col.row().prop(brush, "use_projected")
col.prop(brush, "use_frontface", text="Front Faces Only")
col.prop(brush, "use_projected")
col = layout.column()
col.prop(toolsettings, "use_auto_normalize", text="Auto Normalize")
@ -1166,17 +1166,16 @@ class VIEW3D_PT_tools_brush(Panel, View3DPaintPanel):
self.prop_unified_strength(row, context, brush, "strength", text="Strength")
self.prop_unified_strength(row, context, brush, "use_pressure_strength")
# XXX - TODO
# row = col.row(align=True)
# row.prop(brush, "jitter", slider=True)
# row.prop(brush, "use_pressure_jitter", toggle=True, text="")
col.separator()
col.prop(brush, "vertex_tool", text="Blend")
col.prop(brush, "use_accumulate")
col.prop(brush, "use_alpha")
col.row().prop("use_projected")
if brush.vertex_tool != 'SMEAR':
col.prop(brush, "use_accumulate")
col.separator()
col.prop(brush, "use_frontface", text="Front Faces Only")
col.prop(brush, "use_projected")
col.separator()
col.template_ID(settings, "palette", new="palette.new")
@ -1769,8 +1768,7 @@ class VIEW3D_PT_tools_weightpaint_options(Panel, View3DPaintPanel):
col = layout.column()
col.label("Falloff:")
row = col.row()
row.prop(wpaint, "use_backface_culling")
row = col.row()
row.prop(wpaint, "use_normal_falloff")
sub = row.row()
@ -1811,8 +1809,6 @@ class VIEW3D_PT_tools_vertexpaint(Panel, View3DPaintPanel):
col = layout.column()
col.label("Falloff:")
row = col.row()
row.prop(vpaint, "use_backface_culling")
row = col.row()
row.prop(vpaint, "use_normal_falloff")
sub = row.row()
sub.active = (vpaint.use_normal_falloff)

View File

@ -143,7 +143,7 @@ static float view_angle_limits_apply_falloff(
static bool vwpaint_use_normal(const VPaint *vp)
{
return ((vp->flag & VP_FLAG_PROJECT_BACKFACE) == 0) ||
return ((vp->paint.brush->flag & BRUSH_FRONTFACE) != 0) ||
((vp->flag & VP_FLAG_PROJECT_FLAT) == 0);
}
@ -1556,7 +1556,7 @@ static void do_wpaint_brush_blur_task_cb_ex(
float brush_strength = cache->bstrength;
const float angle_cos = (use_normal && vd.no) ?
dot_vf3vs3(ss->cache->sculpt_normal_symm, vd.no) : 1.0f;
if (((data->vp->flag & VP_FLAG_PROJECT_BACKFACE) ||
if (((brush->flag & BRUSH_FRONTFACE) == 0 ||
(angle_cos > 0.0f)) &&
((data->vp->flag & VP_FLAG_PROJECT_FLAT) ||
view_angle_limits_apply_falloff(&data->wpd->normal_angle_precalc, angle_cos, &brush_strength)))
@ -1632,7 +1632,7 @@ static void do_wpaint_brush_smear_task_cb_ex(
float brush_strength = cache->bstrength;
const float angle_cos = (use_normal && vd.no) ?
dot_vf3vs3(ss->cache->sculpt_normal_symm, vd.no) : 1.0f;
if (((data->vp->flag & VP_FLAG_PROJECT_BACKFACE) ||
if (((brush->flag & BRUSH_FRONTFACE) == 0 ||
(angle_cos > 0.0f)) &&
((data->vp->flag & VP_FLAG_PROJECT_FLAT) ||
view_angle_limits_apply_falloff(&data->wpd->normal_angle_precalc, angle_cos, &brush_strength)))
@ -1733,7 +1733,7 @@ static void do_wpaint_brush_draw_task_cb_ex(
float brush_strength = cache->bstrength;
const float angle_cos = (use_normal && vd.no) ?
dot_vf3vs3(ss->cache->sculpt_normal_symm, vd.no) : 1.0f;
if (((data->vp->flag & VP_FLAG_PROJECT_BACKFACE) ||
if (((brush->flag & BRUSH_FRONTFACE) == 0 ||
(angle_cos > 0.0f)) &&
((data->vp->flag & VP_FLAG_PROJECT_FLAT) ||
view_angle_limits_apply_falloff(&data->wpd->normal_angle_precalc, angle_cos, &brush_strength)))
@ -2530,7 +2530,7 @@ static void do_vpaint_brush_draw_task_cb_ex(
float brush_strength = cache->bstrength;
const float angle_cos = (use_normal && vd.no) ?
dot_vf3vs3(ss->cache->sculpt_normal_symm, vd.no) : 1.0f;
if (((data->vp->flag & VP_FLAG_PROJECT_BACKFACE) ||
if (((brush->flag & BRUSH_FRONTFACE) == 0 ||
(angle_cos > 0.0f)) &&
((data->vp->flag & VP_FLAG_PROJECT_FLAT) ||
view_angle_limits_apply_falloff(&data->vpd->normal_angle_precalc, angle_cos, &brush_strength)))
@ -2616,7 +2616,7 @@ static void do_vpaint_brush_blur_task_cb_ex(
float brush_strength = cache->bstrength;
const float angle_cos = (use_normal && vd.no) ?
dot_vf3vs3(ss->cache->sculpt_normal_symm, vd.no) : 1.0f;
if (((data->vp->flag & VP_FLAG_PROJECT_BACKFACE) ||
if (((brush->flag & BRUSH_FRONTFACE) == 0 ||
(angle_cos > 0.0f)) &&
((data->vp->flag & VP_FLAG_PROJECT_FLAT) ||
view_angle_limits_apply_falloff(&data->vpd->normal_angle_precalc, angle_cos, &brush_strength)))
@ -2731,7 +2731,7 @@ static void do_vpaint_brush_smear_task_cb_ex(
float brush_strength = cache->bstrength;
const float angle_cos = (use_normal && vd.no) ?
dot_vf3vs3(ss->cache->sculpt_normal_symm, vd.no) : 1.0f;
if (((data->vp->flag & VP_FLAG_PROJECT_BACKFACE) ||
if (((brush->flag & BRUSH_FRONTFACE) == 0 ||
(angle_cos > 0.0f)) &&
((data->vp->flag & VP_FLAG_PROJECT_FLAT) ||
view_angle_limits_apply_falloff(&data->vpd->normal_angle_precalc, angle_cos, &brush_strength)))

View File

@ -1125,7 +1125,6 @@ typedef struct VPaint {
/* VPaint.flag */
enum {
VP_FLAG_PROJECT_BACKFACE = (1 << 0),
/* TODO */
// VP_FLAG_PROJECT_XRAY = (1 << 1),
VP_FLAG_PROJECT_FLAT = (1 << 3),

View File

@ -671,11 +671,6 @@ static void rna_def_vertex_paint(BlenderRNA *brna)
RNA_def_struct_path_func(srna, "rna_VertexPaint_path");
RNA_def_struct_ui_text(srna, "Vertex Paint", "Properties of vertex and weight paint mode");
prop = RNA_def_property(srna, "use_backface_culling", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", VP_FLAG_PROJECT_BACKFACE);
RNA_def_property_ui_text(prop, "Cull", "Ignore vertices pointing away from the view (faster)");
RNA_def_property_update(prop, NC_SCENE | ND_TOOLSETTINGS, NULL);
prop = RNA_def_property(srna, "use_normal_falloff", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", VP_FLAG_PROJECT_FLAT);
RNA_def_property_ui_text(prop, "Normals", "Paint most on faces pointing towards the view");