[Bf-blender-cvs] [0691c3d6407] temp-gpencil-fading-modifier: GPencil: Better fading effect arguments.

YimingWu noreply at git.blender.org
Mon Oct 19 11:08:02 CEST 2020


Commit: 0691c3d6407d944147178ebad13f012e1bb7c1ed
Author: YimingWu
Date:   Mon Oct 19 17:05:56 2020 +0800
Branches: temp-gpencil-fading-modifier
https://developer.blender.org/rB0691c3d6407d944147178ebad13f012e1bb7c1ed

GPencil: Better fading effect arguments.

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

M	release/datafiles/locale
M	release/scripts/addons
M	release/scripts/addons_contrib
M	source/blender/gpencil_modifiers/intern/MOD_gpencilopacity.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilthick.c
M	source/blender/makesdna/DNA_gpencil_modifier_types.h
M	source/blender/makesrna/intern/rna_gpencil_modifier.c
M	source/tools

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

diff --git a/release/datafiles/locale b/release/datafiles/locale
index 8f5a0e027f1..8a05b618f03 160000
--- a/release/datafiles/locale
+++ b/release/datafiles/locale
@@ -1 +1 @@
-Subproject commit 8f5a0e027f131104974763d30db36b1a9ffae16a
+Subproject commit 8a05b618f031582c006c6f62b9e60619ab3eef8b
diff --git a/release/scripts/addons b/release/scripts/addons
index 8ad9de7c1e1..67f1fbca148 160000
--- a/release/scripts/addons
+++ b/release/scripts/addons
@@ -1 +1 @@
-Subproject commit 8ad9de7c1e1022dee907ddce78f4c357111fc09e
+Subproject commit 67f1fbca1482d9d9362a4001332e785c3fd5d230
diff --git a/release/scripts/addons_contrib b/release/scripts/addons_contrib
index 26a8b2eadc7..ef6ef414d22 160000
--- a/release/scripts/addons_contrib
+++ b/release/scripts/addons_contrib
@@ -1 +1 @@
-Subproject commit 26a8b2eadc7abb2a30fac50eb5505aa24daf5785
+Subproject commit ef6ef414d22c2578fad99327743b925ab640a99c
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilopacity.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilopacity.c
index 561d3495d92..6b41bfba87b 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilopacity.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilopacity.c
@@ -87,6 +87,37 @@ static void copyData(const GpencilModifierData *md, GpencilModifierData *target)
   tgmd->curve_intensity = BKE_curvemapping_copy(gmd->curve_intensity);
 }
 
+static float give_opacity_fading_factor(OpacityGpencilModifierData *mmd,
+                                        Object *ob_this,
+                                        float *pos,
+                                        bool apply_obmat)
+{
+  float factor_depth = 1;
+  if (mmd->flag & GP_OPACITY_FADING) {
+    if (mmd->object) {
+      float gvert[3];
+      if (apply_obmat) {
+        mul_v3_m4v3(gvert, ob_this->obmat, pos);
+      }
+      float dist = len_v3v3(mmd->object->obmat[3], gvert);
+      float fading_max = MAX2(mmd->fading_start, mmd->fading_end);
+      float fading_min = MIN2(mmd->fading_start, mmd->fading_end);
+
+      /* Better with ratiof() function from line art. */
+      if (dist > fading_max) {
+        factor_depth = 0;
+      }
+      else if (dist <= fading_max && dist > fading_min) {
+        factor_depth = (fading_max - dist) / (fading_max - fading_min);
+      }
+      else {
+        factor_depth = 1;
+      }
+    }
+  }
+  return factor_depth;
+}
+
 /* opacity strokes */
 static void deformStroke(GpencilModifierData *md,
                          Depsgraph *UNUSED(depsgraph),
@@ -140,29 +171,8 @@ static void deformStroke(GpencilModifierData *md,
         factor_curve *= BKE_curvemapping_evaluateF(mmd->curve_intensity, 0, value);
       }
 
-      float factor_depth = 1;
-      if (mmd->flag & GP_OPACITY_FADING) {
-        if (mmd->object) {
-          float gvert[3];
-          mul_v3_m4v3(gvert, ob->obmat, &pt->x);
-          float dist = len_v3v3(mmd->object->obmat[3], gvert);
-          float fading_max = MAX2(mmd->fading_start, mmd->fading_end);
-          float fading_min = MIN2(mmd->fading_start, mmd->fading_end);
-
-          /* Better with ratiof() function from line art. */
-          if (dist > fading_max) {
-            factor_depth = 0;
-          }
-          else if (dist <= fading_max && dist > fading_min) {
-            factor_depth = (fading_max - dist) / (fading_max - fading_min);
-          }
-          else {
-            factor_depth = 1;
-          }
-        }
-      }
-
-      factor_curve *= factor_depth;
+      float factor_depth = give_opacity_fading_factor(mmd, ob, &pt->x, true);
+      factor_curve = interpf(mmd->factor, mmd->fading_end_factor, factor_depth);
 
       if (def_nr < 0) {
         if (mmd->flag & GP_OPACITY_NORMALIZE) {
@@ -195,28 +205,8 @@ static void deformStroke(GpencilModifierData *md,
 
     gps->fill_opacity_fac = mmd->factor;
 
-    float factor_depth = 1;
-    if (mmd->flag & GP_OPACITY_FADING) {
-      if (mmd->object) {
-
-        float dist = len_v3v3(mmd->object->obmat[3], ob->obmat[3]);
-        float fading_max = MAX2(mmd->fading_start, mmd->fading_end);
-        float fading_min = MIN2(mmd->fading_start, mmd->fading_end);
-
-        /* Better with ratiof() function from line art. */
-        if (dist > fading_max) {
-          factor_depth = 0;
-        }
-        else if (dist <= fading_max && dist > fading_min) {
-          factor_depth = (fading_max - dist) / (fading_max - fading_min);
-        }
-        else {
-          factor_depth = 1;
-        }
-      }
-    }
-
-    gps->fill_opacity_fac *= factor_depth;
+    float factor_depth = give_opacity_fading_factor(mmd, ob, ob->obmat[3], true);
+    gps->fill_opacity_fac = interpf(mmd->factor, mmd->fading_end_factor, factor_depth);
 
     CLAMP(gps->fill_opacity_fac, 0.0f, 1.0f);
   }
@@ -284,6 +274,7 @@ static void panel_draw(const bContext *UNUSED(C), Panel *panel)
     uiLayout *sub = uiLayoutColumn(layout, true);
     uiItemR(sub, ptr, "fading_start", 0, NULL, ICON_NONE);
     uiItemR(sub, ptr, "fading_end", 0, NULL, ICON_NONE);
+    uiItemR(layout, ptr, "fading_end_factor", 0, NULL, ICON_NONE);
   }
 
   gpencil_modifier_panel_end(layout, ptr);
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilthick.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilthick.c
index 736cc7dba6a..f571d5423f4 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilthick.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilthick.c
@@ -155,8 +155,6 @@ static void deformStroke(GpencilModifierData *md,
       }
     }
 
-    curvef *= factor_depth;
-
     if ((mmd->flag & GP_THICK_CUSTOM_CURVE) && (mmd->curve_thickness)) {
       /* Normalize value to evaluate curve. */
       float value = (float)i / (gps->totpoints - 1);
@@ -173,6 +171,9 @@ static void deformStroke(GpencilModifierData *md,
       weight *= curvef;
     }
 
+    float fac_begin = mmd->flag & GP_THICK_NORMALIZE ? 1 : mmd->thickness_fac;
+    target *= interpf(fac_begin, mmd->fading_end_factor, factor_depth);
+
     pt->pressure = interpf(target, pt->pressure, weight);
 
     CLAMP_MIN(pt->pressure, 0.0f);
@@ -227,6 +228,7 @@ static void panel_draw(const bContext *UNUSED(C), Panel *panel)
     uiLayout *sub = uiLayoutColumn(layout, true);
     uiItemR(sub, ptr, "fading_start", 0, NULL, ICON_NONE);
     uiItemR(sub, ptr, "fading_end", 0, NULL, ICON_NONE);
+    uiItemR(layout, ptr, "fading_end_factor", 0, NULL, ICON_NONE);
   }
   gpencil_modifier_panel_end(layout, ptr);
 }
diff --git a/source/blender/makesdna/DNA_gpencil_modifier_types.h b/source/blender/makesdna/DNA_gpencil_modifier_types.h
index b200b10d054..84fd15da30a 100644
--- a/source/blender/makesdna/DNA_gpencil_modifier_types.h
+++ b/source/blender/makesdna/DNA_gpencil_modifier_types.h
@@ -180,9 +180,9 @@ typedef struct ThickGpencilModifierData {
   /** Start/end distances of the fading effect. */
   float fading_start;
   float fading_end;
+  float fading_end_factor;
   /** Custom index for passes. */
   int layer_pass;
-  char _pad[4];
   struct CurveMapping *curve_thickness;
 } ThickGpencilModifierData;
 
@@ -293,9 +293,10 @@ typedef struct OpacityGpencilModifierData {
   /** Start/end distances of the fading effect. */
   float fading_start;
   float fading_end;
+  float fading_end_factor;
   /** Modify stroke, fill or both. */
   char modify_color;
-  char _pad1[7];
+  char _pad1[3];
   /** Custom index for passes. */
   int layer_pass;
 
diff --git a/source/blender/makesrna/intern/rna_gpencil_modifier.c b/source/blender/makesrna/intern/rna_gpencil_modifier.c
index 1712da9537c..d66a28d34a2 100644
--- a/source/blender/makesrna/intern/rna_gpencil_modifier.c
+++ b/source/blender/makesrna/intern/rna_gpencil_modifier.c
@@ -890,7 +890,7 @@ static void rna_def_modifier_gpencilthick(BlenderRNA *brna)
 
   prop = RNA_def_property(srna, "use_fading", PROP_BOOLEAN, PROP_NONE);
   RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_THICK_FADING);
-  RNA_def_property_ui_text(prop, "use_fading", "Fading effect");
+  RNA_def_property_ui_text(prop, "Fading", "Fading effect");
   RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
 
   /* Distance reference object */
@@ -913,6 +913,13 @@ static void rna_def_modifier_gpencilthick(BlenderRNA *brna)
   RNA_def_property_ui_text(prop, "Fading End", "End distance of fading effect");
   RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
 
+  prop = RNA_def_property(srna, "fading_end_factor", PROP_FLOAT, PROP_NONE);
+  RNA_def_property_float_sdna(prop, NULL, "fading_end_factor");
+  RNA_def_property_range(prop, 0.0, FLT_MAX);
+  RNA_def_property_ui_range(prop, 0.0, 10.0, 0.1, 3);
+  RNA_def_property_ui_text(prop, "End Factor", "Fading end thickness factor");
+  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
+
   prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
   RNA_def_property_int_sdna(prop, NULL, "pass_index");
   RNA_def_property_range(prop, 0, 100);
@@ -1404,7 +1411,7 @@ static void rna_def_modifier_gpencilopacity(BlenderRNA *brna)
 
   prop = RNA_def_property(srna, "use_fading", PROP_BOOLEAN, PROP_NONE);
   RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OPACITY_FADING);
-  RNA_def_property_ui_text(prop, "use_fading", "Fading effect");
+  RNA_def_property_ui_text(prop, "Fading", "Fading effect");
   RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
 
   /* Distance reference object */
@@ -1427,6 +1434,13 @@ static void rna_def_modifier_gpencilopacity(BlenderRNA *brna)
   RNA_def_property_ui_text(prop, "Fading End", "End distance of fading effect");
   RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
 
+  prop = RNA_def_property(srna, "fading_end_factor", PROP_FLOAT, PROP_NONE);
+  RNA_def_property_float_sdna(prop, NULL, "fading_end_factor");
+  RNA_def_property_range(prop, 0.0, FLT_MAX);
+  RNA_def_property_ui_range(prop, 0.0, 10.0, 0.1, 3);
+  RNA_def_property_ui_text(prop, "End Factor", "Fading end thickness factor");
+  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
+
   prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
   RNA_def_property_int_sdna(prop, NULL, "pass_index");
   RNA_def_property_range(prop, 0, 100);
diff --git a/sour

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list