[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