LineArt: Invert collection option.

Allows conveniently selecting an inverse of a collection.

Reviewed By: Antonio Vazquez (antoniov)

Differential Revision: https://developer.blender.org/D13846
This commit is contained in:
YimingWu 2022-01-17 17:20:47 +08:00
parent e1e3043a51
commit 40c8e23d48
Notes: blender-bot 2023-02-13 18:10:36 +01:00
Referenced by issue #87739, Line Art further improvement list
4 changed files with 20 additions and 3 deletions

View File

@ -314,7 +314,9 @@ static void panel_draw(const bContext *UNUSED(C), Panel *panel)
uiItemR(layout, ptr, "source_object", 0, NULL, ICON_OBJECT_DATA);
}
else if (source_type == LRT_SOURCE_COLLECTION) {
uiItemR(layout, ptr, "source_collection", 0, NULL, ICON_OUTLINER_COLLECTION);
uiLayout *sub = uiLayoutRow(layout, true);
uiItemR(sub, ptr, "source_collection", 0, NULL, ICON_OUTLINER_COLLECTION);
uiItemR(sub, ptr, "use_invert_collection", 0, "", ICON_ARROW_LEFTRIGHT);
}
else {
/* Source is Scene. */

View File

@ -4363,8 +4363,15 @@ static void lineart_gpencil_generate(LineartCache *cache,
continue;
}
if (orig_col && ec->object_ref) {
if (!BKE_collection_has_object_recursive_instanced(orig_col, (Object *)ec->object_ref)) {
continue;
if (BKE_collection_has_object_recursive_instanced(orig_col, (Object *)ec->object_ref)) {
if (modifier_flags & LRT_GPENCIL_INVERT_COLLECTION) {
continue;
}
}
else {
if (!(modifier_flags & LRT_GPENCIL_INVERT_COLLECTION)) {
continue;
}
}
}
if (mask_switches & LRT_GPENCIL_MATERIAL_MASK_ENABLE) {

View File

@ -989,6 +989,7 @@ typedef enum eLineArtGPencilModifierFlags {
LRT_GPENCIL_IS_BAKED = (1 << 3),
LRT_GPENCIL_USE_CACHE = (1 << 4),
LRT_GPENCIL_OFFSET_TOWARDS_CUSTOM_CAMERA = (1 << 5),
LRT_GPENCIL_INVERT_COLLECTION = (1 << 6),
} eLineArtGPencilModifierFlags;
typedef enum eLineartGpencilMaskSwitches {

View File

@ -3446,6 +3446,13 @@ static void rna_def_modifier_gpencillineart(BlenderRNA *brna)
"Trim all edges right at the boundary of image(including overscan region)");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "use_invert_collection", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", LRT_GPENCIL_INVERT_COLLECTION);
RNA_def_property_ui_text(prop,
"Invert Collection Filtering",
"Select everything except lines from specified collection");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
RNA_define_lib_overridable(false);
}