[Bf-blender-cvs] [4c0fd967689] temp-gpencil-bezier-stroke-type: GPencil: Change Array modifier to work with Bezier type
Antonio Vazquez
noreply at git.blender.org
Mon Mar 15 15:29:07 CET 2021
Commit: 4c0fd9676896d8ed992b4030579516b6f9feec17
Author: Antonio Vazquez
Date: Mon Mar 15 15:29:01 2021 +0100
Branches: temp-gpencil-bezier-stroke-type
https://developer.blender.org/rB4c0fd9676896d8ed992b4030579516b6f9feec17
GPencil: Change Array modifier to work with Bezier type
===================================================================
M source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c
===================================================================
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c
index b8fa88327fc..4edd172046d 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c
@@ -265,7 +265,29 @@ static void generate_geometry(GpencilModifierData *md,
/* Duplicate stroke */
bGPDstroke *gps_dst = BKE_gpencil_stroke_duplicate(iter->gps, true, true);
- /* Move points */
+ /* Bezier type. */
+ if (GPENCIL_STROKE_TYPE_BEZIER(gps_dst)) {
+ bGPDcurve *gpc = gps_dst->editcurve;
+ for (int i = 0; i < gpc->tot_curve_points; i++) {
+ bGPDcurve_point *pt = &gpc->curve_points[i];
+ BezTriple *bezt = &pt->bezt;
+
+ for (int j = 0; j < 3; j++) {
+ /* Apply randomness matrix. */
+ mul_m4_v3(mat_rnd, bezt->vec[j]);
+ /* Apply object local transform (Rot/Scale). */
+ if ((mmd->flag & GP_ARRAY_USE_OB_OFFSET) && (mmd->object)) {
+ mul_m4_v3(mat, bezt->vec[j]);
+ }
+ /* Global Rotate and scale. */
+ mul_mat3_m4_v3(current_offset, bezt->vec[j]);
+ /* Global translate. */
+ add_v3_v3(bezt->vec[j], current_offset[3]);
+ }
+ }
+ }
+
+ /* Polygon type. Do always because point data is used by draw manager. */
for (int i = 0; i < iter->gps->totpoints; i++) {
bGPDspoint *pt = &gps_dst->points[i];
/* Apply randomness matrix. */
More information about the Bf-blender-cvs
mailing list