[Bf-blender-cvs] [cfdff4fb633] blender-v2.83-release: GPencil: Improve Market Chisel angle algorithm

Antonio Vazquez noreply at git.blender.org
Sat May 2 10:47:54 CEST 2020


Commit: cfdff4fb6331d1bffdafda645d9fbce4aca04901
Author: Antonio Vazquez
Date:   Sat May 2 10:47:45 2020 +0200
Branches: blender-v2.83-release
https://developer.blender.org/rBcfdff4fb6331d1bffdafda645d9fbce4aca04901

GPencil: Improve Market Chisel angle algorithm

With the previous commit, the angle effect was too subtle. Now the effect is more visible,

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

M	source/blender/editors/gpencil/gpencil_paint.c

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

diff --git a/source/blender/editors/gpencil/gpencil_paint.c b/source/blender/editors/gpencil/gpencil_paint.c
index 0f7091b8b46..561104b0b98 100644
--- a/source/blender/editors/gpencil/gpencil_paint.c
+++ b/source/blender/editors/gpencil/gpencil_paint.c
@@ -3151,7 +3151,6 @@ static void gp_brush_angle_segment(tGPsdata *p, tGPspoint *pt_prev, tGPspoint *p
 
   float mvec[2];
   float fac;
-  float mpressure;
 
   /* angle vector of the brush with full thickness */
   float v0[2] = {cos(angle), sin(angle)};
@@ -3159,11 +3158,9 @@ static void gp_brush_angle_segment(tGPsdata *p, tGPspoint *pt_prev, tGPspoint *p
   mvec[0] = pt->x - pt_prev->x;
   mvec[1] = pt->y - pt_prev->y;
   normalize_v2(mvec);
-
   fac = 1.0f - fabs(dot_v2v2(v0, mvec)); /* 0.0 to 1.0 */
   /* interpolate with previous point for smoother transitions */
-  mpressure = interpf(pt->pressure - (sen * fac), pt_prev->pressure, 0.3f);
-  pt->pressure = mpressure;
+  pt->pressure = interpf(pt->pressure - (sen * fac), pt_prev->pressure, 0.5f);
 
   CLAMP(pt->pressure, pt_prev->pressure * 0.5f, 1.0f);
 }
@@ -3241,6 +3238,7 @@ static void gpencil_add_arc_points(tGPsdata *p, float mval[2], int segments)
   corner[0] = midpoint[0] - (cp1[0] - midpoint[0]);
   corner[1] = midpoint[1] - (cp1[1] - midpoint[1]);
 
+  tGPspoint *pt_step = pt_prev;
   for (int i = 0; i < segments; i++) {
     pt = &points[idx_prev + i - 1];
     pt->x = corner[0] + (end[0] - corner[0]) * sinf(a) + (start[0] - corner[0]) * cosf(a);
@@ -3250,6 +3248,14 @@ static void gpencil_add_arc_points(tGPsdata *p, float mval[2], int segments)
     pt->pressure = pt_prev->pressure;
     pt->strength = pt_prev->strength;
 
+    /* Apply angle of stroke to brush size to interpolated points but slightly attenuated.. */
+    if (brush_settings->draw_angle_factor != 0.0f) {
+      gp_brush_angle_segment(p, pt_step, pt);
+      CLAMP(pt->pressure, pt_prev->pressure * 0.8f, 1.0f);
+      /* Use the previous interpolated point for next segment. */
+      pt_step = pt;
+    }
+
     /* Apply randomness to pressure. */
     if (brush_settings->draw_random_press > 0.0f) {
       float rand = BLI_rng_get_float(p->rng) * 2.0f - 1.0f;



More information about the Bf-blender-cvs mailing list