[Bf-blender-cvs] [9975974e58b] temp-gpencil-bezier-stroke-type: GPencil: Offset modifier add randomize to bezier type
Cody Winchester
noreply at git.blender.org
Mon May 10 17:10:15 CEST 2021
Commit: 9975974e58b60bd97bcc71708400d6259f4dd2ca
Author: Cody Winchester
Date: Mon May 10 17:06:57 2021 +0200
Branches: temp-gpencil-bezier-stroke-type
https://developer.blender.org/rB9975974e58b60bd97bcc71708400d6259f4dd2ca
GPencil: Offset modifier add randomize to bezier type
This patch adds the randomize offsets functionality to the bezier stroke type and moves the code to a shared generic function between the 2 stroke types.
Differential Revision: https://developer.blender.org/D11218
===================================================================
M source/blender/gpencil_modifiers/intern/MOD_gpenciloffset.c
===================================================================
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpenciloffset.c b/source/blender/gpencil_modifiers/intern/MOD_gpenciloffset.c
index 95156d9072d..827109a8d9e 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpenciloffset.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpenciloffset.c
@@ -103,20 +103,11 @@ static float prepare_matrix(OffsetGpencilModifierData *mmd, float weight, float
return (scale[0] + scale[1] + scale[2]) / 3.0f;
}
-/* change stroke offsetness */
-static void deformPolyline(GpencilModifierData *md,
- Depsgraph *UNUSED(depsgraph),
- Object *ob,
- bGPDlayer *gpl,
- bGPDframe *gpf,
- bGPDstroke *gps)
+/* Calculate random transform matrix. */
+static void prepare_random_matrix(
+ GpencilModifierData *md, Object *ob, bGPDframe *gpf, bGPDstroke *gps, float mat_rnd[4][4])
{
OffsetGpencilModifierData *mmd = (OffsetGpencilModifierData *)md;
- const int def_nr = BKE_object_defgroup_name_index(ob, mmd->vgname);
-
- if (!do_modifier(ob, mmd, gpl, gps)) {
- return;
- }
int seed = mmd->seed;
/* Make sure different modifiers get different seeds. */
@@ -148,14 +139,32 @@ static void deformPolyline(GpencilModifierData *md,
}
}
}
- /* Calculate Random matrix. */
- float mat_rnd[4][4];
float rnd_loc[3], rnd_rot[3];
float rnd_scale[3] = {1.0f, 1.0f, 1.0f};
mul_v3_v3v3(rnd_loc, mmd->rnd_offset, rand[0]);
mul_v3_v3v3(rnd_rot, mmd->rnd_rot, rand[1]);
madd_v3_v3v3(rnd_scale, mmd->rnd_scale, rand[2]);
loc_eul_size_to_mat4(mat_rnd, rnd_loc, rnd_rot, rnd_scale);
+}
+
+/* change stroke offsetness */
+static void deformPolyline(GpencilModifierData *md,
+ Depsgraph *UNUSED(depsgraph),
+ Object *ob,
+ bGPDlayer *gpl,
+ bGPDframe *gpf,
+ bGPDstroke *gps)
+{
+ OffsetGpencilModifierData *mmd = (OffsetGpencilModifierData *)md;
+ const int def_nr = BKE_object_defgroup_name_index(ob, mmd->vgname);
+
+ if (!do_modifier(ob, mmd, gpl, gps)) {
+ return;
+ }
+
+ /* Calculate Random matrix. */
+ float mat_rnd[4][4];
+ prepare_random_matrix(md, ob, gpf, gps, mat_rnd);
bGPdata *gpd = ob->data;
for (int i = 0; i < gps->totpoints; i++) {
@@ -186,7 +195,7 @@ static void deformBezier(GpencilModifierData *md,
Depsgraph *UNUSED(depsgraph),
Object *ob,
bGPDlayer *gpl,
- bGPDframe *UNUSED(gpf),
+ bGPDframe *gpf,
bGPDstroke *gps)
{
OffsetGpencilModifierData *mmd = (OffsetGpencilModifierData *)md;
@@ -196,6 +205,10 @@ static void deformBezier(GpencilModifierData *md,
return;
}
+ /* Calculate Random matrix. */
+ float mat_rnd[4][4];
+ prepare_random_matrix(md, ob, gpf, gps, mat_rnd);
+
bGPdata *gpd = ob->data;
bGPDcurve *gpc = gps->editcurve;
@@ -210,6 +223,11 @@ static void deformBezier(GpencilModifierData *md,
if (weight < 0.0f) {
continue;
}
+ /* Apply randomness matrix. */
+ for (int j = 0; j < 3; j++) {
+ mul_m4_v3(mat_rnd, bezt->vec[j]);
+ }
+
float mat[4][4];
float unit_scale = prepare_matrix(mmd, weight, mat);
pt->pressure *= unit_scale;
More information about the Bf-blender-cvs
mailing list