[Bf-blender-cvs] [8b584b3c16a] greasepencil-object: GPencil: Truncate last stroke buffer points with very low pressure

Antonio Vazquez noreply at git.blender.org
Tue Sep 24 19:42:55 CEST 2019


Commit: 8b584b3c16aa4c8a2e640a154489804b0c273daf
Author: Antonio Vazquez
Date:   Tue Sep 24 19:25:37 2019 +0200
Branches: greasepencil-object
https://developer.blender.org/rB8b584b3c16aa4c8a2e640a154489804b0c273daf

GPencil: Truncate last stroke buffer points with very low pressure

This reduces the drag line when move very fast the pen.

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

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 0dc01dc27c6..ab357289791 100644
--- a/source/blender/editors/gpencil/gpencil_paint.c
+++ b/source/blender/editors/gpencil/gpencil_paint.c
@@ -1001,6 +1001,22 @@ static void gp_stroke_newfrombuffer(tGPsdata *p)
                          (!is_depth);
   int i, totelem;
 
+  /* For very low pressure at the end, truncate stroke. */
+  if (p->paintmode == GP_PAINTMODE_DRAW) {
+    int last_i = gpd->runtime.sbuffer_used - 1;
+    while (last_i > 0) {
+      ptc = (tGPspoint *)gpd->runtime.sbuffer + last_i;
+      if (ptc->pressure > 0.005f) {
+        break;
+      }
+      else {
+        gpd->runtime.sbuffer_used = last_i - 1;
+        CLAMP_MIN(gpd->runtime.sbuffer_used, 1);
+      }
+
+      last_i--;
+    }
+  }
   /* Since strokes are so fine,
    * when using their depth we need a margin otherwise they might get missed. */
   int depth_margin = (ts->gpencil_v3d_align & GP_PROJECT_DEPTH_STROKE) ? 4 : 0;



More information about the Bf-blender-cvs mailing list