Commit: 1db1e9f816916f901f37b40fd1b7dd11160fd09f
Author: Antonio Vazquez
Date:   Tue Jul 18 14:16:53 2017 +0200
Branches: greasepencil-object
https://developer.blender.org/rB1db1e9f816916f901f37b40fd1b7dd11160fd09f

Noise modifier move full stroke

Now it's possible to move points or full stroke

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

M       release/scripts/startup/bl_ui/properties_data_modifier.py
M       source/blender/blenkernel/intern/gpencil.c
M       source/blender/makesdna/DNA_modifier_types.h
M       source/blender/makesrna/intern/rna_modifier.c
M       source/blender/modifiers/intern/MOD_gpencilnoise.c

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

diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py 
b/release/scripts/startup/bl_ui/properties_data_modifier.py
index 3374dc37590..a589668915f 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -1540,6 +1540,10 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
         row.enabled = md.random
         row.prop(md, "step")
 
+        row = col.row()
+        row.enabled = bool(md.step == 1 or md.random is False)
+        row.prop(md, "full_stroke")
+
         col = split.column()
         col.label("Layer:")
         col.prop_search(md, "layer", gpd, "layers", text="", 
icon="GREASEPENCIL")
diff --git a/source/blender/blenkernel/intern/gpencil.c 
b/source/blender/blenkernel/intern/gpencil.c
index 56c99488379..27455d44c0d 100644
--- a/source/blender/blenkernel/intern/gpencil.c
+++ b/source/blender/blenkernel/intern/gpencil.c
@@ -1583,7 +1583,7 @@ static void ED_gpencil_stroke_normal(const bGPDstroke 
*gps, float r_normal[3])
 void ED_gpencil_noise_modifier(GpencilNoiseModifierData *mmd, bGPDlayer *gpl, 
bGPDstroke *gps)
 {
        bGPDspoint *pt0, *pt1;
-       float shift, vran, vdir;
+       float shift, vran, vdir, vfull;
        float normal[3];
        float vec1[3], vec2[3];
        Scene *scene = NULL;
@@ -1596,6 +1596,8 @@ void ED_gpencil_noise_modifier(GpencilNoiseModifierData 
*mmd, bGPDlayer *gpl, bG
 
        scene = mmd->modifier.scene;
        sc_frame = CFRA;
+       zero_v3(vec2);
+       vfull = BLI_frand();
 
        /* calculate stroke normal*/
        ED_gpencil_stroke_normal(gps, normal);
@@ -1614,9 +1616,16 @@ void ED_gpencil_noise_modifier(GpencilNoiseModifierData 
*mmd, bGPDlayer *gpl, bG
                if (mmd->flag & GP_NOISE_USE_RANDOM) {
                        sc_diff = abs(mmd->scene_frame - sc_frame);
                        /* only recalc if the gp frame change or the number of 
scene frames is bigger than step */
-                       if ((!gpl->actframe) || (mmd->gp_frame != 
gpl->actframe->framenum) || (sc_diff >= mmd->step)) {
+                       if ((!gpl->actframe) || (mmd->gp_frame != 
gpl->actframe->framenum) || 
+                               (sc_diff >= mmd->step) || (mmd->step == 1)) 
+                       {
                                vran = mmd->vrand1 = BLI_frand();
-                               vdir = mmd->vrand2 = BLI_frand();
+                               if (mmd->flag & GP_NOISE_FULL_STROKE) {
+                                       vdir = mmd->vrand2 = vfull;
+                               }
+                               else {
+                                       vdir = mmd->vrand2 = BLI_frand();
+                               }
                                mmd->gp_frame = gpl->actframe->framenum;
                                mmd->scene_frame = sc_frame;
                        }
@@ -1627,7 +1636,12 @@ void ED_gpencil_noise_modifier(GpencilNoiseModifierData 
*mmd, bGPDlayer *gpl, bG
                }
                else {
                        vran = 1.0f;
-                       vdir = i % 2;
+                       if (mmd->flag & GP_NOISE_FULL_STROKE) {
+                               vdir = gps->totpoints % 2;
+                       }
+                       else {
+                               vdir = i % 2;
+                       }
                        mmd->gp_frame = -999999;
                }
 
@@ -1650,7 +1664,7 @@ void ED_gpencil_noise_modifier(GpencilNoiseModifierData 
*mmd, bGPDlayer *gpl, bG
                                pt1->pressure -= pt1->pressure * vran * 
mmd->factor;
                        }
                        else {
-                               pt1->pressure += pt1->pressure * vran * 
mmd->factor;;
+                               pt1->pressure += pt1->pressure * vran * 
mmd->factor;
                        }
                        CLAMP_MIN(pt1->pressure, GPENCIL_STRENGTH_MIN);
                }
diff --git a/source/blender/makesdna/DNA_modifier_types.h 
b/source/blender/makesdna/DNA_modifier_types.h
index f5cdfafea08..0fc1697e3b3 100644
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@ -1633,6 +1633,7 @@ typedef enum eGpencilNoise_Flag {
        GP_NOISE_MOD_LOCATION   = (1 << 1),
        GP_NOISE_MOD_STRENGTH   = (1 << 2),
        GP_NOISE_MOD_THICKNESS  = (1 << 3),
+       GP_NOISE_FULL_STROKE    = (1 << 4),
 } eGpencilNoise_Flag;
 
 
diff --git a/source/blender/makesrna/intern/rna_modifier.c 
b/source/blender/makesrna/intern/rna_modifier.c
index 57ff93aef79..b75f9b12480 100644
--- a/source/blender/makesrna/intern/rna_modifier.c
+++ b/source/blender/makesrna/intern/rna_modifier.c
@@ -4814,6 +4814,11 @@ static void rna_def_modifier_gpencilnoise(BlenderRNA 
*brna)
        RNA_def_property_ui_text(prop, "Affect Thickness", "The modifier 
affects the thickness of the point");
        RNA_def_property_update(prop, 0, "rna_Modifier_update");
 
+       prop = RNA_def_property(srna, "full_stroke", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_NOISE_FULL_STROKE);
+       RNA_def_property_ui_text(prop, "Full Stroke", "The noise moves the 
stroke as a whole, not point by point");
+       RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
        prop = RNA_def_property(srna, "passindex", PROP_INT, PROP_NONE);
        RNA_def_property_int_sdna(prop, NULL, "passindex");
        RNA_def_property_range(prop, 0, 100);
diff --git a/source/blender/modifiers/intern/MOD_gpencilnoise.c 
b/source/blender/modifiers/intern/MOD_gpencilnoise.c
index 2f455b7157e..54c0d453d37 100644
--- a/source/blender/modifiers/intern/MOD_gpencilnoise.c
+++ b/source/blender/modifiers/intern/MOD_gpencilnoise.c
@@ -46,6 +46,7 @@ static void initData(ModifierData *md)
        GpencilNoiseModifierData *gpmd = (GpencilNoiseModifierData *)md;
        gpmd->passindex = 0;
        gpmd->flag |= GP_NOISE_MOD_LOCATION;
+       gpmd->flag |= GP_NOISE_FULL_STROKE;
        gpmd->factor = 0.5f;
        gpmd->layername[0] = '\0';
        gpmd->step = 1;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to