[Bf-blender-cvs] [002f53cc87b] greasepencil-object: GPencil: Add Normalize Opacity to Opacity modifier

Antonio Vazquez noreply at git.blender.org
Sat Mar 7 17:15:34 CET 2020


Commit: 002f53cc87b3e154d2669fe55409daa4845eb5c9
Author: Antonio Vazquez
Date:   Sat Mar 7 17:15:24 2020 +0100
Branches: greasepencil-object
https://developer.blender.org/rB002f53cc87b3e154d2669fe55409daa4845eb5c9

GPencil: Add Normalize Opacity to Opacity modifier

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

M	release/scripts/startup/bl_ui/properties_data_modifier.py
M	source/blender/gpencil_modifiers/intern/MOD_gpencilopacity.c
M	source/blender/makesdna/DNA_gpencil_modifier_types.h
M	source/blender/makesrna/intern/rna_gpencil_modifier.c

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

diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index 0c819cce504..9070aa5faee 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -1950,7 +1950,13 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
         split = layout.split()
 
         col = split.column()
-        col.prop(md, "factor")
+        col.prop(md, "normalize_opacity")
+        if md.normalize_opacity is True:
+            text="Strength"
+        else:
+            text="Opacity Factor"
+
+        col.prop(md, "factor", text=text)
         col.prop(md, "modify_color")
 
         self.gpencil_masking(layout, ob, md, True, True)
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilopacity.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilopacity.c
index ecc9aa5e038..1eefb9f11e9 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilopacity.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilopacity.c
@@ -124,7 +124,12 @@ static void deformStroke(GpencilModifierData *md,
       }
 
       if (def_nr < 0) {
-        pt->strength += factor_curve - 1.0f;
+        if (mmd->flag & GP_OPACITY_NORMALIZE) {
+          pt->strength = mmd->factor;
+        }
+        else {
+          pt->strength += factor_curve - 1.0f;
+        }
       }
       else {
         /* High factor values, change weight too. */
@@ -132,7 +137,12 @@ static void deformStroke(GpencilModifierData *md,
           weight += factor_curve - 1.0f;
           CLAMP(weight, 0.0f, 1.0f);
         }
-        pt->strength += (factor_curve - 1) * weight;
+        if (mmd->flag & GP_OPACITY_NORMALIZE) {
+          pt->strength = mmd->factor;
+        }
+        else {
+          pt->strength += (factor_curve - 1) * weight;
+        }
       }
 
       CLAMP(pt->strength, 0.0f, 1.0f);
diff --git a/source/blender/makesdna/DNA_gpencil_modifier_types.h b/source/blender/makesdna/DNA_gpencil_modifier_types.h
index 196803df43e..1121bdf4df0 100644
--- a/source/blender/makesdna/DNA_gpencil_modifier_types.h
+++ b/source/blender/makesdna/DNA_gpencil_modifier_types.h
@@ -316,6 +316,7 @@ typedef enum eOpacityGpencil_Flag {
   GP_OPACITY_INVERT_LAYERPASS = (1 << 4),
   GP_OPACITY_INVERT_MATERIAL = (1 << 5),
   GP_OPACITY_CUSTOM_CURVE = (1 << 6),
+  GP_OPACITY_NORMALIZE = (1 << 7),
 } eOpacityGpencil_Flag;
 
 typedef struct ArrayGpencilModifierData {
diff --git a/source/blender/makesrna/intern/rna_gpencil_modifier.c b/source/blender/makesrna/intern/rna_gpencil_modifier.c
index 6f01273e0b0..0caa93940c8 100644
--- a/source/blender/makesrna/intern/rna_gpencil_modifier.c
+++ b/source/blender/makesrna/intern/rna_gpencil_modifier.c
@@ -375,6 +375,42 @@ static void rna_TimeModifier_end_frame_set(PointerRNA *ptr, int value)
   }
 }
 
+static void rna_GpencilOpacity_range(
+    PointerRNA *ptr, float *min, float *max, float *softmin, float *softmax)
+{
+  OpacityGpencilModifierData *md = (OpacityGpencilModifierData *)ptr->data;
+
+  *min = 0.0f;
+  *softmin = 0.0f;
+
+  *softmax = (md->flag & GP_OPACITY_NORMALIZE) ? 1.0f : 2.0f;
+  *max = *softmax;
+}
+
+static void rna_GpencilOpacity_max_set(PointerRNA *ptr, float value)
+{
+  OpacityGpencilModifierData *md = (OpacityGpencilModifierData *)ptr->data;
+
+  md->factor = value;
+  if (md->flag & GP_OPACITY_NORMALIZE) {
+    if (md->factor > 1.0f) {
+      md->factor = 1.0f;
+    }
+  }
+}
+
+static void rna_GpencilModifier_opacity_update(Main *bmain, Scene *scene, PointerRNA *ptr)
+{
+  OpacityGpencilModifierData *md = (OpacityGpencilModifierData *)ptr->data;
+  if (md->flag & GP_OPACITY_NORMALIZE) {
+    if (md->factor > 1.0f) {
+      md->factor = 1.0f;
+    }
+  }
+
+  rna_GpencilModifier_update(bmain, scene, ptr);
+}
+
 #else
 
 static void rna_def_modifier_gpencilnoise(BlenderRNA *brna)
@@ -1267,6 +1303,8 @@ static void rna_def_modifier_gpencilopacity(BlenderRNA *brna)
   prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE);
   RNA_def_property_float_sdna(prop, NULL, "factor");
   RNA_def_property_ui_range(prop, 0, 2.0, 0.1, 2);
+  RNA_def_property_float_funcs(
+      prop, NULL, "rna_GpencilOpacity_max_set", "rna_GpencilOpacity_range");
   RNA_def_property_ui_text(prop, "Opacity Factor", "Factor of Opacity");
   RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
 
@@ -1307,6 +1345,11 @@ static void rna_def_modifier_gpencilopacity(BlenderRNA *brna)
   RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
   RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
 
+  prop = RNA_def_property(srna, "normalize_opacity", PROP_BOOLEAN, PROP_NONE);
+  RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OPACITY_NORMALIZE);
+  RNA_def_property_ui_text(prop, "Uniform Opacity", "Replace the stroke opacity");
+  RNA_def_property_update(prop, 0, "rna_GpencilModifier_opacity_update");
+
   prop = RNA_def_property(srna, "use_custom_curve", PROP_BOOLEAN, PROP_NONE);
   RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OPACITY_CUSTOM_CURVE);
   RNA_def_property_ui_text(



More information about the Bf-blender-cvs mailing list