[Bf-blender-cvs] [fa7c2b6b22a] temp-gpencil-bezier-stroke-type: GPemcil: Add new deformBezier callback for modifiers

Antonio Vazquez noreply at git.blender.org
Sat Mar 20 16:18:01 CET 2021


Commit: fa7c2b6b22aaf2fcc265a42628736bda95e64645
Author: Antonio Vazquez
Date:   Sat Mar 20 16:17:57 2021 +0100
Branches: temp-gpencil-bezier-stroke-type
https://developer.blender.org/rBfa7c2b6b22aaf2fcc265a42628736bda95e64645

GPemcil: Add new deformBezier callback for modifiers

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

M	source/blender/blenkernel/BKE_gpencil_modifier.h
M	source/blender/blenkernel/intern/gpencil_modifier.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilarmature.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilbuild.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilcolor.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilhook.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencillattice.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilmirror.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilmultiply.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilnoise.c
M	source/blender/gpencil_modifiers/intern/MOD_gpenciloffset.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilopacity.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilsimplify.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilsmooth.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilsubdiv.c
M	source/blender/gpencil_modifiers/intern/MOD_gpenciltexture.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilthick.c
M	source/blender/gpencil_modifiers/intern/MOD_gpenciltime.c
M	source/blender/gpencil_modifiers/intern/MOD_gpenciltint.c

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

diff --git a/source/blender/blenkernel/BKE_gpencil_modifier.h b/source/blender/blenkernel/BKE_gpencil_modifier.h
index 7a2c1ef046d..c8bcac0f318 100644
--- a/source/blender/blenkernel/BKE_gpencil_modifier.h
+++ b/source/blender/blenkernel/BKE_gpencil_modifier.h
@@ -137,6 +137,17 @@ typedef struct GpencilModifierTypeInfo {
                          struct bGPDframe *gpf,
                          struct bGPDstroke *gps);
 
+  /**
+   *  Callback for GP "bezier stroke" modifiers that operate on the
+   * shape and parameters of the provided strokes (e.g. Thickness, Noise, etc.)
+   */
+  void (*deformBezier)(struct GpencilModifierData *md,
+                       struct Depsgraph *depsgraph,
+                       struct Object *ob,
+                       struct bGPDlayer *gpl,
+                       struct bGPDframe *gpf,
+                       struct bGPDstroke *gps);
+
   /**
    * Callback for GP "geometry" modifiers that create extra geometry
    * in the frame (e.g. Array)
diff --git a/source/blender/blenkernel/intern/gpencil_modifier.c b/source/blender/blenkernel/intern/gpencil_modifier.c
index c1ee0791872..ea7a4551723 100644
--- a/source/blender/blenkernel/intern/gpencil_modifier.c
+++ b/source/blender/blenkernel/intern/gpencil_modifier.c
@@ -781,16 +781,20 @@ void BKE_gpencil_modifiers_calc(Depsgraph *depsgraph, Scene *scene, Object *ob)
       }
 
       /* Apply deform modifiers and Time remap (only change geometry). */
-      if ((time_remap) || (mti && mti->deformPolyline)) {
+      if ((time_remap) || (mti && mti->deformPolyline) || (mti && mti->deformBezier)) {
         LISTBASE_FOREACH (bGPDlayer *, gpl, &gpd->layers) {
           bGPDframe *gpf = BKE_gpencil_frame_retime_get(depsgraph, scene, ob, gpl);
           if (gpf == NULL) {
             continue;
           }
-
-          if (mti->deformPolyline) {
-            LISTBASE_FOREACH (bGPDstroke *, gps, &gpf->strokes) {
-              mti->deformPolyline(md, depsgraph, ob, gpl, gpf, gps);
+          LISTBASE_FOREACH (bGPDstroke *, gps, &gpf->strokes) {
+            if (!GPENCIL_STROKE_TYPE_BEZIER(gps)) {
+              if (mti->deformPolyline) {
+                mti->deformPolyline(md, depsgraph, ob, gpl, gpf, gps);
+              }
+            }
+            else if (mti->deformBezier) {
+              mti->deformBezier(md, depsgraph, ob, gpl, gpf, gps);
             }
           }
         }
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilarmature.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilarmature.c
index 5fdc714e61f..32f275c2cf8 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilarmature.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilarmature.c
@@ -240,6 +240,7 @@ GpencilModifierTypeInfo modifierType_Gpencil_Armature = {
     /* copyData */ copyData,
 
     /* deformPolyline */ deformPolyline,
+    /* deformBezier */ NULL,
     /* generateStrokes */ NULL,
     /* bakeModifier */ bakeModifier,
     /* remapTime */ NULL,
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c
index c4185de96ad..b0e8fbbb14a 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c
@@ -478,6 +478,7 @@ GpencilModifierTypeInfo modifierType_Gpencil_Array = {
     /* copyData */ copyData,
 
     /* deformPolyline */ NULL,
+    /* deformBezier */ NULL,
     /* generateStrokes */ generateStrokes,
     /* bakeModifier */ bakeModifier,
     /* remapTime */ NULL,
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilbuild.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilbuild.c
index bb6358ec190..db7d501b6e6 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilbuild.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilbuild.c
@@ -630,6 +630,7 @@ GpencilModifierTypeInfo modifierType_Gpencil_Build = {
     /* copyData */ copyData,
 
     /* deformPolyline */ NULL,
+    /* deformBezier */ NULL,
     /* generateStrokes */ generateStrokes,
     /* bakeModifier */ NULL,
     /* remapTime */ NULL,
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilcolor.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilcolor.c
index b675dab9769..b107e263ab7 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilcolor.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilcolor.c
@@ -241,6 +241,7 @@ GpencilModifierTypeInfo modifierType_Gpencil_Color = {
     /* copyData */ copyData,
 
     /* deformPolyline */ deformPolyline,
+    /* deformBezier */ NULL,
     /* generateStrokes */ NULL,
     /* bakeModifier */ bakeModifier,
     /* remapTime */ NULL,
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilhook.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilhook.c
index a56f60a8fe5..b2ddb69cdef 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilhook.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilhook.c
@@ -433,6 +433,7 @@ GpencilModifierTypeInfo modifierType_Gpencil_Hook = {
     /* copyData */ copyData,
 
     /* deformPolyline */ deformPolyline,
+    /* deformBezier */ NULL,
     /* generateStrokes */ NULL,
     /* bakeModifier */ bakeModifier,
     /* remapTime */ NULL,
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencillattice.c b/source/blender/gpencil_modifiers/intern/MOD_gpencillattice.c
index 5b123cbae6f..e3825e8b5b3 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencillattice.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencillattice.c
@@ -272,6 +272,7 @@ GpencilModifierTypeInfo modifierType_Gpencil_Lattice = {
     /* copyData */ copyData,
 
     /* deformPolyline */ deformPolyline,
+    /* deformBezier */ NULL,
     /* generateStrokes */ NULL,
     /* bakeModifier */ bakeModifier,
     /* remapTime */ NULL,
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c b/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
index 8de37acbda1..2ff106f756c 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
@@ -487,6 +487,7 @@ GpencilModifierTypeInfo modifierType_Gpencil_Lineart = {
     /* copyData. */ copyData,
 
     /* deformPolyline. */ NULL,
+    /* deformBezier. */ NULL,
     /* generateStrokes. */ generateStrokes,
     /* bakeModifier. */ bakeModifier,
     /* remapTime. */ NULL,
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilmirror.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilmirror.c
index 4b9da9ce7b6..87767f2561d 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilmirror.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilmirror.c
@@ -270,6 +270,7 @@ GpencilModifierTypeInfo modifierType_Gpencil_Mirror = {
     /* copyData */ copyData,
 
     /* deformPolyline */ NULL,
+    /* deformBezier */ NULL,
     /* generateStrokes */ generateStrokes,
     /* bakeModifier */ bakeModifier,
     /* remapTime */ NULL,
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilmultiply.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilmultiply.c
index af639086706..4c84be571a8 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilmultiply.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilmultiply.c
@@ -384,6 +384,7 @@ GpencilModifierTypeInfo modifierType_Gpencil_Multiply = {
     /* copyData */ copyData,
 
     /* deformPolyline */ NULL,
+    /* deformBezier */ NULL,
     /* generateStrokes */ generateStrokes,
     /* bakeModifier */ bakeModifier,
     /* remapTime */ NULL,
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilnoise.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilnoise.c
index 3f2daca1c71..25afa081d31 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilnoise.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilnoise.c
@@ -364,6 +364,7 @@ GpencilModifierTypeInfo modifierType_Gpencil_Noise = {
     /* copyData */ copyData,
 
     /* deformPolyline */ deformPolyline,
+    /* deformBezier */ NULL,
     /* generateStrokes */ NULL,
     /* bakeModifier */ bakeModifier,
     /* remapTime */ NULL,
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpenciloffset.c b/source/blender/gpencil_modifiers/intern/MOD_gpenciloffset.c
index 7aae34f9c79..98e242dcf99 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpenciloffset.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpenciloffset.c
@@ -190,6 +190,7 @@ GpencilModifierTypeInfo modifierType_Gpencil_Offset = {
     /* copyData */ copyData,
 
     /* deformPolyline */ deformPolyline,
+    /* deformBezier */ NULL,
     /* generateStrokes */ NULL,
     /* bakeModifier */ bakeModifier,
     /* remapTime */ NULL,
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilopacity.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilopacity.c
index 49ff06af331..0b7c926207e 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilopacity.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilopacity.c
@@ -285,6 +285,7 @@ GpencilModifierTypeInfo modifierType_Gpencil_Opacity = {
     /* copyData */ copyData,
 
     /* deformPolyline */ deformPolyline,
+    /* deformBezier */ NULL,
     /* generateStrokes */ NULL,
     /* bakeModifier */ bakeModifier,
     /* remapTime */ NULL,
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilsimplify.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilsimplify.c
index c223bbd01cb..e3738e82483 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilsimplify.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilsimplify.c
@@ -193,6 +193,7 @@ GpencilModifierTypeInfo modifierType_Gpencil_Simplify = {
     /* copyData */ copyData,
 
     /* deformPolyline */ deformPolyline,
+    /* deformBezier */ NULL,
     /* generateStrokes */ NULL,
     /* bakeModifier */ bakeModifier,
     /* remapTime */ NULL,
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilsmooth.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilsmooth.c
index 45e80839996..3a0d4811dc4 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilsmooth

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list