From d2c07c1ea37a3537f43d01ff83d0350f10141857 Mon Sep 17 00:00:00 2001 From: YimingWu Date: Wed, 21 Feb 2024 14:43:54 +0800 Subject: [PATCH] Fix #118492: GPv3: Noise modifier weight influence The vertex weight influence was missing for grease pencil v3 noise modifier due to missing API at first. Now added back. --- .../modifiers/intern/MOD_grease_pencil_noise.cc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/source/blender/modifiers/intern/MOD_grease_pencil_noise.cc b/source/blender/modifiers/intern/MOD_grease_pencil_noise.cc index 5850b3866bc..4d46cce317a 100644 --- a/source/blender/modifiers/intern/MOD_grease_pencil_noise.cc +++ b/source/blender/modifiers/intern/MOD_grease_pencil_noise.cc @@ -117,8 +117,6 @@ static void deform_drawing(const GreasePencilNoiseModifierData &mmd, return; } - const OffsetIndices points_by_curve = strokes.points_by_curve(); - int seed = mmd.seed; /* Make sure different modifiers get different seeds. */ seed += BLI_hash_string(ob.id.name + 2); @@ -133,12 +131,17 @@ static void deform_drawing(const GreasePencilNoiseModifierData &mmd, } } + const OffsetIndices points_by_curve = strokes.points_by_curve(); + const VArray vgroup_weights = modifier::greasepencil::get_influence_vertex_weights( + strokes, mmd.influence); + auto get_weight = [&](const IndexRange points, const int point_i) { + const float vertex_weight = vgroup_weights[points[point_i]]; if (!use_curve) { - return 1.0f; + return vertex_weight; } const float value = float(point_i) / float(points.size() - 1); - return BKE_curvemapping_evaluateF(mmd.influence.custom_curve, 0, value); + return vertex_weight * BKE_curvemapping_evaluateF(mmd.influence.custom_curve, 0, value); }; auto get_noise = [](const Array &noise_table, const float value) { -- 2.30.2