Commit: e603f05b6959fd69f99642851ebbf7d44cf264e9
Author: Antonio Vazquez
Date:   Sat Nov 9 16:15:06 2019 +0100
Branches: greasepencil-object
https://developer.blender.org/rBe603f05b6959fd69f99642851ebbf7d44cf264e9

GPencil: Add curve falloff for Vertex Paint brushes

===================================================================

M       release/scripts/startup/bl_ui/space_view3d_toolbar.py
M       source/blender/editors/gpencil/gpencil_vertex_paint.c

===================================================================

diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py 
b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
index fc49be8a82d..262649e695f 100644
--- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
@@ -2318,6 +2318,41 @@ class 
VIEW3D_PT_tools_grease_pencil_brush_vertex(View3DPanel, Panel):
         sub_row.operator("gpencil.tint_flip", icon='FILE_REFRESH', text="")
 
 
+class VIEW3D_PT_tools_grease_pencil_brush_vertex_falloff(Panel, 
View3DPaintPanel):
+    bl_context = ".greasepencil_vertex"
+    bl_label = "Falloff"
+    bl_options = {'DEFAULT_CLOSED'}
+
+    @classmethod
+    def poll(cls, context):
+        ts = context.tool_settings
+        settings = ts.gpencil_vertex_paint
+        brush = settings.brush
+        return (settings and settings.brush and settings.brush.curve)
+
+    def draw(self, context):
+        layout = self.layout
+        ts = context.tool_settings
+        settings = ts.gpencil_vertex_paint
+        brush = settings.brush
+
+        col = layout.column(align=True)
+        row = col.row(align=True)
+        row.prop(brush, "curve_preset", text="")
+
+        if brush.curve_preset == 'CUSTOM':
+            layout.template_curve_mapping(brush, "curve", brush=True)
+
+            col = layout.column(align=True)
+            row = col.row(align=True)
+            row.operator("brush.curve_preset", icon='SMOOTHCURVE', 
text="").shape = 'SMOOTH'
+            row.operator("brush.curve_preset", icon='SPHERECURVE', 
text="").shape = 'ROUND'
+            row.operator("brush.curve_preset", icon='ROOTCURVE', 
text="").shape = 'ROOT'
+            row.operator("brush.curve_preset", icon='SHARPCURVE', 
text="").shape = 'SHARP'
+            row.operator("brush.curve_preset", icon='LINCURVE', text="").shape 
= 'LINE'
+            row.operator("brush.curve_preset", icon='NOCURVE', text="").shape 
= 'MAX'
+
+
 class VIEW3D_PT_tools_grease_pencil_brush_vertex_palette(View3DPanel, Panel):
     bl_context = ".greasepencil_vertex"
     bl_label = "Color Palette"
@@ -2554,6 +2589,7 @@ classes = (
     VIEW3D_PT_tools_grease_pencil_vertex_brush,
     VIEW3D_PT_tools_grease_pencil_brush_vertex,
     VIEW3D_PT_tools_grease_pencil_brush_vertex_palette,
+    VIEW3D_PT_tools_grease_pencil_brush_vertex_falloff,
 )
 
 if __name__ == "__main__":  # only for live edit.
diff --git a/source/blender/editors/gpencil/gpencil_vertex_paint.c 
b/source/blender/editors/gpencil/gpencil_vertex_paint.c
index 12bce027587..d0b57cbced9 100644
--- a/source/blender/editors/gpencil/gpencil_vertex_paint.c
+++ b/source/blender/editors/gpencil/gpencil_vertex_paint.c
@@ -208,6 +208,11 @@ static float brush_influence_calc(tGP_BrushVertexpaintData 
*gso, const int radiu
 
   influence *= fac;
 
+  /* Apply Brush curve. */
+  if (brush->curve) {
+    float brush_fallof = BKE_curvemapping_evaluateF(brush->curve, 0, fac);
+    influence *= brush_fallof;
+  }
   /* apply multiframe falloff */
   influence *= gso->mf_falloff;
 
@@ -391,6 +396,7 @@ static bool gp_vertexpaint_brush_init(bContext *C, 
wmOperator *op)
   op->customdata = gso;
 
   gso->brush = paint->brush;
+  BKE_curvemapping_initialize(gso->brush->curve);
 
   gso->is_painting = false;
   gso->first = true;

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to