GPv3: Opacity modifier #116946

Merged
Lukas Tönne merged 52 commits from LukasTonne/blender:gp3-opacity-modifier into main 2024-01-16 16:56:22 +01:00
3 changed files with 18 additions and 18 deletions
Showing only changes of commit 0e9a03886c - Show all commits

View File

@ -52,7 +52,7 @@ static void init_data(ModifierData *md)
BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(omd, modifier));
MEMCPY_STRUCT_AFTER(omd, DNA_struct_default_get(GreasePencilOpacityModifierData), modifier);
greasepencil::init_influence_data(&omd->influence, true);
modifier::greasepencil::init_influence_data(&omd->influence, true);
}
static void copy_data(const ModifierData *md, ModifierData *target, const int flag)
@ -62,22 +62,22 @@ static void copy_data(const ModifierData *md, ModifierData *target, const int fl
GreasePencilOpacityModifierData *tomd = reinterpret_cast<GreasePencilOpacityModifierData *>(
target);
greasepencil::free_influence_data(&tomd->influence);
modifier::greasepencil::free_influence_data(&tomd->influence);
BKE_modifier_copydata_generic(md, target, flag);
greasepencil::copy_influence_data(&omd->influence, &tomd->influence, flag);
modifier::greasepencil::copy_influence_data(&omd->influence, &tomd->influence, flag);
}
static void free_data(ModifierData *md)
{
GreasePencilOpacityModifierData *omd = reinterpret_cast<GreasePencilOpacityModifierData *>(md);
greasepencil::free_influence_data(&omd->influence);
modifier::greasepencil::free_influence_data(&omd->influence);
}
static void foreach_ID_link(ModifierData *md, Object *ob, IDWalkFunc walk, void *user_data)
{
GreasePencilOpacityModifierData *omd = reinterpret_cast<GreasePencilOpacityModifierData *>(md);
greasepencil::foreach_influence_ID_link(&omd->influence, ob, walk, user_data);
modifier::greasepencil::foreach_influence_ID_link(&omd->influence, ob, walk, user_data);
}
static void modify_stroke_color(const GreasePencilOpacityModifierData &omd,
LukasTonne marked this conversation as resolved
Review

You should just be able to retrieve the vertex group as an attribute

You should just be able to retrieve the vertex group as an attribute
Review

Took some explaining from @filedescriptor how this works (maybe a good topic for technical docs?). As far as i understand the VArray wrapper for the curves->deform_verts() is ok here, since we're only using a single vertex group. For something like the armature modifier i'd guess we still want to use the MDeformVert directly.

Took some explaining from @filedescriptor how this works (maybe a good topic for technical docs?). As far as i understand the `VArray` wrapper for the `curves->deform_verts()` is ok here, since we're only using a single vertex group. For something like the armature modifier i'd guess we still want to use the `MDeformVert` directly.
Review

Right, exactly

Right, exactly
@ -195,7 +195,7 @@ static void modify_curves(ModifierData *md,
GreasePencilOpacityModifierData *omd = reinterpret_cast<GreasePencilOpacityModifierData *>(md);
IndexMaskMemory mask_memory;
IndexMask curves_mask = greasepencil::get_filtered_stroke_mask(
IndexMask curves_mask = modifier::greasepencil::get_filtered_stroke_mask(
ctx->object, curves, omd->influence, mask_memory);
switch (omd->color_mode) {
LukasTonne marked this conversation as resolved
Review

C++ style casts (elsewhere in this file too)

C++ style casts (elsewhere in this file too)
@ -229,9 +229,9 @@ static void modify_geometry_set(ModifierData *md,
}
IndexMaskMemory mask_memory;
IndexMask layer_mask = greasepencil::get_filtered_layer_mask(
IndexMask layer_mask = modifier::greasepencil::get_filtered_layer_mask(
*grease_pencil, omd->influence, mask_memory);
Vector<Drawing *> drawings = greasepencil::get_drawings_for_write(
Vector<Drawing *> drawings = modifier::greasepencil::get_drawings_for_write(
*grease_pencil, layer_mask, frame);
for (Drawing *drawing : drawings) {
modify_curves(md, ctx, drawing->strokes_for_write());
@ -275,10 +275,10 @@ static void panel_draw(const bContext *C, Panel *panel)
if (uiLayout *influence_panel = uiLayoutPanel(
C, layout, "Influence", ptr, "open_influence_panel"))
{
greasepencil::draw_layer_filter_settings(C, influence_panel, ptr);
greasepencil::draw_material_filter_settings(C, influence_panel, ptr);
greasepencil::draw_vertex_group_settings(C, influence_panel, ptr);
greasepencil::draw_custom_curve_settings(C, influence_panel, ptr);
modifier::greasepencil::draw_layer_filter_settings(C, influence_panel, ptr);
modifier::greasepencil::draw_material_filter_settings(C, influence_panel, ptr);
modifier::greasepencil::draw_vertex_group_settings(C, influence_panel, ptr);
modifier::greasepencil::draw_custom_curve_settings(C, influence_panel, ptr);
}
modifier_panel_end(layout, ptr);
@ -295,14 +295,14 @@ static void blend_write(BlendWriter *writer, const ID * /*id_owner*/, const Modi
reinterpret_cast<const GreasePencilOpacityModifierData *>(md);
BLO_write_struct(writer, GreasePencilOpacityModifierData, omd);
greasepencil::write_influence_data(writer, &omd->influence);
modifier::greasepencil::write_influence_data(writer, &omd->influence);
}
static void blend_read(BlendDataReader *reader, ModifierData *md)
{
GreasePencilOpacityModifierData *omd = reinterpret_cast<GreasePencilOpacityModifierData *>(md);
greasepencil::read_influence_data(reader, &omd->influence);
modifier::greasepencil::read_influence_data(reader, &omd->influence);
}
} // namespace blender

View File

@ -34,7 +34,7 @@
#include "UI_interface.hh"
namespace blender::greasepencil {
namespace blender::modifier::greasepencil {
using bke::greasepencil::Drawing;
using bke::greasepencil::Layer;
@ -332,4 +332,4 @@ Vector<bke::greasepencil::Drawing *> get_drawings_for_write(GreasePencil &grease
return drawings;
}
} // namespace blender::greasepencil
} // namespace blender::modifier::greasepencil

View File

@ -29,7 +29,7 @@ class Drawing;
}
} // namespace blender::bke
namespace blender::greasepencil {
namespace blender::modifier::greasepencil {
void init_influence_data(GreasePencilModifierInfluenceData *influence_data, bool has_custom_curve);
void copy_influence_data(const GreasePencilModifierInfluenceData *influence_data_src,
@ -63,4 +63,4 @@ Vector<bke::greasepencil::Drawing *> get_drawings_for_write(GreasePencil &grease
const IndexMask &layer_mask,
int frame);
} // namespace blender::greasepencil
} // namespace blender::modifier::greasepencil