UI: Tweak labels, descriptions, and panel layout for line art

Changes include:
 - Use `IFACE_` for UI labels set in the modifier panels
 - Use a sub-sub-panel for transparency
 - Fix grammar and spelling mistakes
 - Use more natural user-friendly wording
 - Make descriptions more specific and more useful
 - Don't capitalize "line art" in descriptions (tooltips)

These changes are aimed at making the UI strings more consistent with
the rest of the UI and being more helpful to someone trying to understand
how to use the modifier.

Differential Revision: https://developer.blender.org/D10750
This commit is contained in:
Hans Goudey 2021-03-17 13:46:41 -04:00
parent 0ff3f96a1b
commit be33d3eccd
Notes: blender-bot 2023-02-14 08:08:56 +01:00
Referenced by commit de6d6e171e, Cleanup: Remove commented code
7 changed files with 157 additions and 123 deletions

View File

@ -62,18 +62,6 @@ class COLLECTION_PT_collection_flags(CollectionButtonsPanel, Panel):
col.prop(vlc, "indirect_only", toggle=False)
class COLLECTION_PT_lineart_collection(CollectionButtonsPanel, Panel):
bl_label = "Line Art"
def draw(self, context):
layout = self.layout
layout.use_property_split = True
layout.use_property_decorate = False
collection = context.collection
row = layout.row()
row.prop(collection, "lineart_usage")
class COLLECTION_PT_instancing(CollectionButtonsPanel, Panel):
bl_label = "Instancing"
@ -86,10 +74,24 @@ class COLLECTION_PT_instancing(CollectionButtonsPanel, Panel):
row = layout.row()
row.prop(collection, "instance_offset")
class COLLECTION_PT_lineart_collection(CollectionButtonsPanel, Panel):
bl_label = "Line Art"
def draw(self, context):
layout = self.layout
layout.use_property_split = True
layout.use_property_decorate = False
collection = context.collection
row = layout.row()
row.prop(collection, "lineart_usage")
classes = (
COLLECTION_PT_collection_flags,
COLLECTION_PT_lineart_collection,
COLLECTION_PT_instancing,
COLLECTION_PT_lineart_collection,
)
if __name__ == "__main__": # only for live edit.

View File

@ -267,29 +267,28 @@ static void panel_draw(const bContext *UNUSED(C), Panel *panel)
uiLayout *col = uiLayoutColumnWithHeading(layout, true, IFACE_("Edge Types"));
uiItemR(col, ptr, "use_contour", 0, "Contour", ICON_NONE);
uiItemR(col, ptr, "use_material", 0, "Material", ICON_NONE);
uiItemR(col, ptr, "use_edge_mark", 0, "Edge Marks", ICON_NONE);
uiItemR(col, ptr, "use_intersection", 0, "Intersection", ICON_NONE);
uiItemR(col, ptr, "use_contour", 0, IFACE_("Contour"), ICON_NONE);
uiItemR(col, ptr, "use_material", 0, IFACE_("Material Borders"), ICON_NONE);
uiItemR(col, ptr, "use_edge_mark", 0, IFACE_("Edge Marks"), ICON_NONE);
uiItemR(col, ptr, "use_intersection", 0, IFACE_("Intersections"), ICON_NONE);
uiItemR(col, ptr, "use_crease", 0, IFACE_("Crease"), ICON_NONE);
uiLayout *sub = uiLayoutRow(col, true);
uiLayoutSetActive(sub, RNA_boolean_get(ptr, "use_crease"));
uiLayoutSetPropSep(sub, true);
uiLayout *row = uiLayoutRow(col, true);
/* Don't automatically add the "animate property" button. */
uiLayoutSetPropDecorate(row, false);
const bool use_crease = RNA_boolean_get(ptr, "use_crease");
uiLayout *sub = uiLayoutRow(row, true);
uiItemR(sub, ptr, "use_crease", 0, "Crease", ICON_NONE);
sub = uiLayoutRow(sub, true);
uiLayoutSetEnabled(sub, use_crease);
uiItemR(sub, ptr, "crease_threshold", UI_ITEM_R_SLIDER, "", ICON_NONE);
uiItemDecoratorR(row, ptr, "crease_threshold", 0);
uiItemR(sub, ptr, "crease_threshold", UI_ITEM_R_SLIDER, " ", ICON_NONE);
uiItemPointerR(layout, ptr, "target_layer", &obj_data_ptr, "layers", NULL, ICON_GREASEPENCIL);
uiItemPointerR(
layout, ptr, "target_material", &obj_data_ptr, "materials", NULL, ICON_SHADING_TEXTURE);
uiItemR(layout, ptr, "remove_doubles", 0, NULL, ICON_NONE);
uiItemR(layout, ptr, "allow_overlapping_edges", 0, "Overlapping Edges As Contour", ICON_NONE);
uiItemR(layout,
ptr,
"allow_overlapping_edges",
0,
IFACE_("Overlapping Edges As Contour"),
ICON_NONE);
gpencil_modifier_panel_end(layout, ptr);
}
@ -322,9 +321,8 @@ static void occlusion_panel_draw(const bContext *UNUSED(C), Panel *panel)
uiLayoutSetEnabled(layout, !is_baked);
const bool use_multiple_levels = RNA_boolean_get(ptr, "use_multiple_levels");
const bool use_transparency = RNA_boolean_get(ptr, "use_transparency");
uiItemR(layout, ptr, "use_multiple_levels", 0, "Multiple Levels", ICON_NONE);
uiItemR(layout, ptr, "use_multiple_levels", 0, IFACE_("Range"), ICON_NONE);
if (use_multiple_levels) {
uiLayout *col = uiLayoutColumn(layout, true);
@ -332,28 +330,43 @@ static void occlusion_panel_draw(const bContext *UNUSED(C), Panel *panel)
uiItemR(col, ptr, "level_end", 0, NULL, ICON_NONE);
}
else {
uiItemR(layout, ptr, "level_start", 0, "Level", ICON_NONE);
uiItemR(layout, ptr, "level_start", 0, IFACE_("Level"), ICON_NONE);
}
}
uiItemR(layout, ptr, "use_transparency", 0, "Transparency", ICON_NONE);
static void transparency_panel_draw_header(const bContext *UNUSED(C), Panel *panel)
{
uiLayout *layout = panel->layout;
PointerRNA *ptr = gpencil_modifier_panel_get_property_pointers(panel, NULL);
uiItemR(layout, ptr, "use_transparency", 0, IFACE_("Transparency"), ICON_NONE);
}
static void transparency_panel_draw(const bContext *UNUSED(C), Panel *panel)
{
uiLayout *layout = panel->layout;
PointerRNA *ptr = gpencil_modifier_panel_get_property_pointers(panel, NULL);
uiLayoutSetPropSep(layout, true);
uiLayoutSetActive(layout, RNA_boolean_get(ptr, "use_transparency"));
uiLayout *row = uiLayoutRow(layout, true);
uiLayoutSetPropDecorate(row, false);
uiLayout *sub = uiLayoutRow(row, true);
uiItemR(sub, ptr, "transparency_mask_0", UI_ITEM_R_TOGGLE, IFACE_("0"), ICON_NONE);
uiItemR(sub, ptr, "transparency_mask_1", UI_ITEM_R_TOGGLE, IFACE_("1"), ICON_NONE);
uiItemR(sub, ptr, "transparency_mask_2", UI_ITEM_R_TOGGLE, IFACE_("2"), ICON_NONE);
uiItemR(sub, ptr, "transparency_mask_3", UI_ITEM_R_TOGGLE, IFACE_("3"), ICON_NONE);
uiItemR(sub, ptr, "transparency_mask_4", UI_ITEM_R_TOGGLE, IFACE_("4"), ICON_NONE);
uiItemR(sub, ptr, "transparency_mask_5", UI_ITEM_R_TOGGLE, IFACE_("5"), ICON_NONE);
uiItemR(sub, ptr, "transparency_mask_6", UI_ITEM_R_TOGGLE, IFACE_("6"), ICON_NONE);
uiItemR(sub, ptr, "transparency_mask_7", UI_ITEM_R_TOGGLE, IFACE_("7"), ICON_NONE);
uiItemL(row, "", ICON_BLANK1); /* Space for decorator. */
uiLayout *col = uiLayoutColumn(layout, true);
if (use_transparency) {
uiItemR(col, ptr, "transparency_match", 0, "Match", ICON_NONE);
}
if (use_transparency) {
uiLayout *row = uiLayoutRow(col, true);
uiItemR(row, ptr, "transparency_mask_0", UI_ITEM_R_TOGGLE, "0", ICON_NONE);
uiItemR(row, ptr, "transparency_mask_1", UI_ITEM_R_TOGGLE, "1", ICON_NONE);
uiItemR(row, ptr, "transparency_mask_2", UI_ITEM_R_TOGGLE, "2", ICON_NONE);
uiItemR(row, ptr, "transparency_mask_3", UI_ITEM_R_TOGGLE, "3", ICON_NONE);
uiItemR(row, ptr, "transparency_mask_4", UI_ITEM_R_TOGGLE, "4", ICON_NONE);
uiItemR(row, ptr, "transparency_mask_5", UI_ITEM_R_TOGGLE, "5", ICON_NONE);
uiItemR(row, ptr, "transparency_mask_6", UI_ITEM_R_TOGGLE, "6", ICON_NONE);
uiItemR(row, ptr, "transparency_mask_7", UI_ITEM_R_TOGGLE, "7", ICON_NONE);
}
// uiLayoutSetPropDecorate(col, true);
uiItemR(col, ptr, "transparency_match", 0, IFACE_("Match All Masks"), ICON_NONE);
}
static void chaining_panel_draw(const bContext *UNUSED(C), Panel *panel)
@ -395,17 +408,18 @@ static void vgroup_panel_draw(const bContext *UNUSED(C), Panel *panel)
uiLayout *col = uiLayoutColumn(layout, true);
uiLayout *row = uiLayoutRow(col, true);
uiItemR(row, ptr, "source_vertex_group", 0, "Filter Source", ICON_GROUP_VERTEX);
uiItemR(row, ptr, "source_vertex_group", 0, IFACE_("Filter Source"), ICON_GROUP_VERTEX);
uiItemR(row, ptr, "invert_source_vertex_group", UI_ITEM_R_TOGGLE, "", ICON_ARROW_LEFTRIGHT);
uiItemR(col, ptr, "match_output_vertex_group", 0, NULL, ICON_NONE);
bool match_output = RNA_boolean_get(ptr, "match_output_vertex_group");
if (!match_output) {
uiItemPointerR(col, ptr, "vertex_group", &ob_ptr, "vertex_groups", "Target", ICON_NONE);
uiItemPointerR(
col, ptr, "vertex_group", &ob_ptr, "vertex_groups", IFACE_("Target"), ICON_NONE);
}
uiItemR(layout, ptr, "soft_selection", 0, NULL, ICON_NONE);
uiItemR(col, ptr, "soft_selection", 0, NULL, ICON_NONE);
}
static void baking_panel_draw(const bContext *UNUSED(C), Panel *panel)
@ -421,8 +435,9 @@ static void baking_panel_draw(const bContext *UNUSED(C), Panel *panel)
if (is_baked) {
uiLayout *col = uiLayoutColumn(layout, false);
uiLayoutSetPropSep(col, false);
uiItemL(col, "Modifier has baked data.", ICON_NONE);
uiItemR(col, ptr, "is_baked", UI_ITEM_R_TOGGLE, "Continue Without Clearing", ICON_NONE);
uiItemL(col, IFACE_("Modifier has baked data."), ICON_NONE);
uiItemR(
col, ptr, "is_baked", UI_ITEM_R_TOGGLE, IFACE_("Continue Without Clearing"), ICON_NONE);
}
uiLayout *col = uiLayoutColumn(layout, false);
@ -442,8 +457,14 @@ static void panelRegister(ARegionType *region_type)
gpencil_modifier_subpanel_register(
region_type, "style", "Style", NULL, style_panel_draw, panel_type);
gpencil_modifier_subpanel_register(
PanelType *occlusion_panel = gpencil_modifier_subpanel_register(
region_type, "occlusion", "Occlusion", NULL, occlusion_panel_draw, panel_type);
gpencil_modifier_subpanel_register(region_type,
"transparency",
"",
transparency_panel_draw_header,
transparency_panel_draw,
occlusion_panel);
gpencil_modifier_subpanel_register(
region_type, "chaining", "Chaining", NULL, chaining_panel_draw, panel_type);
gpencil_modifier_subpanel_register(

View File

@ -402,7 +402,7 @@ void OBJECT_OT_lineart_bake_strokes(wmOperatorType *ot)
void OBJECT_OT_lineart_bake_strokes_all(wmOperatorType *ot)
{
ot->name = "Bake Line Art (All)";
ot->description = "Bake all GPencil objects who has at least one Line Art modifier";
ot->description = "Bake all Grease Pencil objects that have a line art modifier";
ot->idname = "OBJECT_OT_lineart_bake_strokes_all";
ot->invoke = lineart_gpencil_bake_strokes_all_invoke;
@ -424,7 +424,7 @@ void OBJECT_OT_lineart_clear(wmOperatorType *ot)
void OBJECT_OT_lineart_clear_all(wmOperatorType *ot)
{
ot->name = "Clear Baked Line Art (All)";
ot->description = "Clear all strokes in all GPencil obejcts who has a Line Art modifier";
ot->description = "Clear all strokes in all Grease Pencil objects that have a line art modifier";
ot->idname = "OBJECT_OT_lineart_clear_all";
ot->exec = lineart_gpencil_clear_strokes_all_exec;

View File

@ -520,28 +520,32 @@ void RNA_def_collections(BlenderRNA *brna)
RNA_def_property_update(prop, NC_SCENE | ND_LAYER_CONTENT, "rna_Collection_flag_update");
static const EnumPropertyItem rna_collection_lineart_usage[] = {
{COLLECTION_LRT_INCLUDE, "INCLUDE", 0, "Include", "Collection will produce feature lines"},
{COLLECTION_LRT_INCLUDE,
"INCLUDE",
0,
"Include",
"Generate feature lines for this collection"},
{COLLECTION_LRT_OCCLUSION_ONLY,
"OCCLUSION_ONLY",
0,
"Occlusion Only",
"Only use the collection to produce occlusion"},
{COLLECTION_LRT_EXCLUDE, "EXCLUDE", 0, "Exclude", "Don't use this collection in LRT"},
{COLLECTION_LRT_EXCLUDE, "EXCLUDE", 0, "Exclude", "Don't use this collection in line art"},
{COLLECTION_LRT_INTERSECTION_ONLY,
"INTERSECTION_ONLY",
0,
"Intersection Only",
"Only generate intersection lines with this collection"},
"Only generate intersection lines for this collection"},
{COLLECTION_LRT_NO_INTERSECTION,
"NO_INTERSECTION",
0,
"No Intersection",
"Do not generate intersection lines for this collection"},
"Include this collection but do not generate intersection lines"},
{0, NULL, 0, NULL, NULL}};
prop = RNA_def_property(srna, "lineart_usage", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_items(prop, rna_collection_lineart_usage);
RNA_def_property_ui_text(prop, "Usage", "How to use this collection in LRT");
RNA_def_property_ui_text(prop, "Usage", "How to use this collection in line art");
RNA_def_property_update(prop, NC_SCENE, NULL);
prop = RNA_def_property(srna, "color_tag", PROP_ENUM, PROP_NONE);

View File

@ -90,9 +90,9 @@ const EnumPropertyItem rna_enum_object_greasepencil_modifier_type_items[] = {
"Subdivide stroke adding more control points"},
{eGpencilModifierType_Lineart,
"GP_LINEART",
ICON_MOD_EDGESPLIT,
ICON_MOD_EDGESPLIT, /* TODO: Use a proper icon. */
"Line Art",
"Generate Line Art strokes from selected source"},
"Generate line art strokes from selected source"},
{0, "", 0, N_("Deform"), ""},
{eGpencilModifierType_Armature,
"GP_ARMATURE",
@ -2327,7 +2327,7 @@ static void rna_def_modifier_gpencillineart(BlenderRNA *brna)
srna = RNA_def_struct(brna, "LineartGpencilModifier", "GpencilModifier");
RNA_def_struct_ui_text(
srna, "Line Art Modifier", "Generate Line Art strokes from selected source");
srna, "Line Art Modifier", "Generate line art strokes from selected source");
RNA_def_struct_sdna(srna, "LineartGpencilModifierData");
RNA_def_struct_ui_icon(srna, ICON_MOD_EDGESPLIT);
@ -2355,9 +2355,10 @@ static void rna_def_modifier_gpencillineart(BlenderRNA *brna)
prop = RNA_def_property(srna, "allow_overlapping_edges", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "calculation_flags", LRT_ALLOW_OVERLAPPING_EDGES);
RNA_def_property_ui_text(prop,
"Handle Overlapping Edges",
"Allow lines from edge split to show properly, may run slower");
RNA_def_property_ui_text(
prop,
"Handle Overlapping Edges",
"Allow edges in the same location (i.e. from edge split) to show properly. May run slower");
RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "allow_clipping_boundaries", PROP_BOOLEAN, PROP_NONE);
@ -2384,13 +2385,13 @@ static void rna_def_modifier_gpencillineart(BlenderRNA *brna)
prop = RNA_def_property(srna, "remove_doubles", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "calculation_flags", LRT_REMOVE_DOUBLES);
RNA_def_property_ui_text(
prop, "Remove Doubles", "Remove doubles when line art is loading geometries");
prop, "Remove Doubles", "Remove doubles from the source geometry before generating stokes");
RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "chaining_geometry_threshold", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_ui_text(prop,
"Geometry Threshold",
"Segments where their geometric distance between them lower than this "
"Segments with a geometric distance between them lower than this "
"will be chained together");
RNA_def_property_ui_range(prop, 0.0f, 0.5f, 0.001f, 3);
RNA_def_property_range(prop, 0.0f, 0.5f);
@ -2407,7 +2408,7 @@ static void rna_def_modifier_gpencillineart(BlenderRNA *brna)
prop = RNA_def_property(srna, "source_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_items(prop, modifier_lineart_source_type);
RNA_def_property_ui_text(prop, "Source Type", "Lineart stroke source type");
RNA_def_property_ui_text(prop, "Source Type", "Line art stroke source type");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
prop = RNA_def_property(srna, "source_object", PROP_POINTER, PROP_NONE);
@ -2415,7 +2416,7 @@ static void rna_def_modifier_gpencillineart(BlenderRNA *brna)
RNA_def_property_struct_type(prop, "Object");
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
RNA_def_property_ui_text(
prop, "Source Object", "Source object that this modifier grabs data from");
prop, "Source Object", "Source object that this modifier uses data from");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
prop = RNA_def_property(srna, "source_collection", PROP_POINTER, PROP_NONE);
@ -2429,45 +2430,45 @@ static void rna_def_modifier_gpencillineart(BlenderRNA *brna)
/* types */
prop = RNA_def_property(srna, "use_contour", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "line_types", LRT_EDGE_FLAG_CONTOUR);
RNA_def_property_ui_text(prop, "Use Contour", "Include contour lines in the result");
RNA_def_property_ui_text(prop, "Use Contour", "Generate strokes from contours lines");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "use_crease", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "line_types", LRT_EDGE_FLAG_CREASE);
RNA_def_property_ui_text(prop, "Use Crease", "Include sharp edges in the result");
RNA_def_property_ui_text(prop, "Use Crease", "Generate strokes from creased edges");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "use_material", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "line_types", LRT_EDGE_FLAG_MATERIAL);
RNA_def_property_ui_text(
prop, "Use Material", "Include material separation lines in the result");
prop, "Use Material", "Generate strokes from borders between materials");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "use_edge_mark", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "line_types", LRT_EDGE_FLAG_EDGE_MARK);
RNA_def_property_ui_text(prop, "Use Edge Mark", "Include freestyle edge marks in the result");
RNA_def_property_ui_text(prop, "Use Edge Mark", "Generate strokes from freestyle marked edges");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "use_intersection", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "line_types", LRT_EDGE_FLAG_INTERSECTION);
RNA_def_property_ui_text(prop, "Use Intersection", "Include intersection lines in the result");
RNA_def_property_ui_text(prop, "Use Intersection", "Generate strokes from intersections");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "use_multiple_levels", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "use_multiple_levels", 0);
RNA_def_property_ui_text(
prop, "Use Multiple Levels", "Select lines from multiple occlusion levels");
prop, "Use Occlusion Range", "Generate strokes from a range of occlusion levels");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "level_start", PROP_INT, PROP_NONE);
RNA_def_property_ui_text(
prop, "Level Start", "Minimum level of occlusion level that gets selected");
prop, "Level Start", "Minimum number of occlusions for the generated strokes");
RNA_def_property_range(prop, 0, 128);
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "level_end", PROP_INT, PROP_NONE);
RNA_def_property_ui_text(
prop, "Level End", "Maximum level of occlusion level that gets selected");
prop, "Level End", "Maximum number of occlusions for the generated strokes");
RNA_def_property_range(prop, 0, 128);
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
@ -2488,7 +2489,7 @@ static void rna_def_modifier_gpencillineart(BlenderRNA *brna)
RNA_def_property_ui_text(
prop,
"Source Vertex Group",
"Matches the beginning of vertex group names from mesh objects, match all when left empty");
"Match the beginning of vertex group names from mesh objects, match all when left empty");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
@ -2499,18 +2500,18 @@ static void rna_def_modifier_gpencillineart(BlenderRNA *brna)
prop = RNA_def_property(srna, "invert_source_vertex_group", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", LRT_GPENCIL_INVERT_SOURCE_VGROUP);
RNA_def_property_ui_text(prop, "Invert Source", "Invert source vertex group values");
RNA_def_property_ui_text(prop, "Invert Vertex Group", "Invert source vertex group values");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "match_output_vertex_group", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", LRT_GPENCIL_MATCH_OUTPUT_VGROUP);
RNA_def_property_ui_text(prop, "Match Output", "Match output vertex group");
RNA_def_property_ui_text(prop, "Match Output", "Match output vertex group based on name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "soft_selection", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", LRT_GPENCIL_SOFT_SELECTION);
RNA_def_property_ui_text(
prop, "Soft selection", "Preserve original vertex weight instead of clipping to 0/1");
prop, "Clip", "Preserve original vertex weight instead of clipping to 0/1");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "is_baked", PROP_BOOLEAN, PROP_NONE);
@ -2519,19 +2520,20 @@ static void rna_def_modifier_gpencillineart(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "thickness", PROP_INT, PROP_NONE);
RNA_def_property_ui_text(prop, "Thickness", "The thickness that used to generate strokes");
RNA_def_property_ui_text(prop, "Thickness", "The thickness for the generated strokes");
RNA_def_property_ui_range(prop, 1, 100, 1, 1);
RNA_def_property_range(prop, 1, 200);
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "opacity", PROP_FLOAT, PROP_FACTOR);
RNA_def_property_ui_text(prop, "Opacity", "The strength value used to generate strokes");
RNA_def_property_ui_text(prop, "Opacity", "The strength value for the generate strokes");
RNA_def_property_ui_range(prop, 0.0f, 1.0f, 0.01f, 2);
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "pre_sample_length", PROP_FLOAT, PROP_NONE);
RNA_def_property_ui_text(prop, "Pre Sample Length", "Sample strokes before sending out");
RNA_def_property_ui_text(
prop, "Sample Length", "Resolution to sample the generated strokes with");
RNA_def_property_ui_range(prop, 0.0f, 1.0f, 0.01f, 2);
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
@ -2539,52 +2541,53 @@ static void rna_def_modifier_gpencillineart(BlenderRNA *brna)
prop = RNA_def_property(srna, "use_transparency", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "transparency_flags", LRT_GPENCIL_TRANSPARENCY_ENABLE);
RNA_def_property_ui_text(
prop, "Use Transparency", "Use transparency mask from this material in Line Art");
prop, "Use Transparency", "Use transparency mask from this material in line art");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "transparency_match", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "transparency_flags", LRT_GPENCIL_TRANSPARENCY_MATCH);
RNA_def_property_ui_text(prop, "Match Transparency", "Match all transparency bits");
RNA_def_property_ui_text(
prop, "Match Transparency", "Require matching all transparency masks instead of just one");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "transparency_mask_0", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "transparency_mask", 1 << 0);
RNA_def_property_ui_text(prop, "Mask 0", "Mask bit 0");
RNA_def_property_ui_text(prop, "Mask 0", "");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "transparency_mask_1", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "transparency_mask", 1 << 1);
RNA_def_property_ui_text(prop, "Mask 1", "Mask bit 1");
RNA_def_property_ui_text(prop, "Mask 1", "");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "transparency_mask_2", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "transparency_mask", 1 << 2);
RNA_def_property_ui_text(prop, "Mask 2", "Mask bit 2");
RNA_def_property_ui_text(prop, "Mask 2", "");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "transparency_mask_3", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "transparency_mask", 1 << 3);
RNA_def_property_ui_text(prop, "Mask 3", "Mask bit 3");
RNA_def_property_ui_text(prop, "Mask 3", "");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "transparency_mask_4", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "transparency_mask", 1 << 4);
RNA_def_property_ui_text(prop, "Mask 4", "Mask bit 4");
RNA_def_property_ui_text(prop, "Mask 4", "");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "transparency_mask_5", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "transparency_mask", 1 << 5);
RNA_def_property_ui_text(prop, "Mask 5", "Mask bit 5");
RNA_def_property_ui_text(prop, "Mask 5", "");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "transparency_mask_6", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "transparency_mask", 1 << 6);
RNA_def_property_ui_text(prop, "mask 6", "Mask bit 6");
RNA_def_property_ui_text(prop, "Mask 6", "");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "transparency_mask_7", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "transparency_mask", 1 << 7);
RNA_def_property_ui_text(prop, "Mask 7", "Mask bit 7");
RNA_def_property_ui_text(prop, "Mask 7", "");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
}

View File

@ -692,55 +692,55 @@ static void rna_def_material_lineart(BlenderRNA *brna)
RNA_def_property_boolean_default(prop, 0);
RNA_def_property_boolean_sdna(prop, NULL, "flags", LRT_MATERIAL_TRANSPARENCY_ENABLED);
RNA_def_property_ui_text(
prop, "Use Transparency", "Use transparency mask from this material in Line Art");
prop, "Use Transparency", "Use transparency mask from this material in line art");
RNA_def_property_update(prop, NC_GPENCIL | ND_SHADING, "rna_MaterialLineArt_update");
prop = RNA_def_property(srna, "transparency_mask_0", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_default(prop, 0);
RNA_def_property_boolean_sdna(prop, NULL, "transparency_mask", 1 << 0);
RNA_def_property_ui_text(prop, "Mask 0", "Mask bit 0");
RNA_def_property_ui_text(prop, "Mask 0", "");
RNA_def_property_update(prop, NC_GPENCIL | ND_SHADING, "rna_MaterialLineArt_update");
prop = RNA_def_property(srna, "transparency_mask_1", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_default(prop, 0);
RNA_def_property_boolean_sdna(prop, NULL, "transparency_mask", 1 << 1);
RNA_def_property_ui_text(prop, "Mask 1", "Mask bit 1");
RNA_def_property_ui_text(prop, "Mask 1", "");
RNA_def_property_update(prop, NC_GPENCIL | ND_SHADING, "rna_MaterialLineArt_update");
prop = RNA_def_property(srna, "transparency_mask_2", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_default(prop, 0);
RNA_def_property_boolean_sdna(prop, NULL, "transparency_mask", 1 << 2);
RNA_def_property_ui_text(prop, "Mask 2", "Mask bit 2");
RNA_def_property_ui_text(prop, "Mask 2", "");
RNA_def_property_update(prop, NC_GPENCIL | ND_SHADING, "rna_MaterialLineArt_update");
prop = RNA_def_property(srna, "transparency_mask_3", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_default(prop, 0);
RNA_def_property_boolean_sdna(prop, NULL, "transparency_mask", 1 << 3);
RNA_def_property_ui_text(prop, "Mask 3", "Mask bit 3");
RNA_def_property_ui_text(prop, "Mask 3", "");
RNA_def_property_update(prop, NC_GPENCIL | ND_SHADING, "rna_MaterialLineArt_update");
prop = RNA_def_property(srna, "transparency_mask_4", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_default(prop, 0);
RNA_def_property_boolean_sdna(prop, NULL, "transparency_mask", 1 << 4);
RNA_def_property_ui_text(prop, "Mask 4", "Mask bit 4");
RNA_def_property_ui_text(prop, "Mask 4", "");
RNA_def_property_update(prop, NC_GPENCIL | ND_SHADING, "rna_MaterialLineArt_update");
prop = RNA_def_property(srna, "transparency_mask_5", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_default(prop, 0);
RNA_def_property_boolean_sdna(prop, NULL, "transparency_mask", 1 << 5);
RNA_def_property_ui_text(prop, "Mask 5", "Mask bit 5");
RNA_def_property_ui_text(prop, "Mask 5", "");
RNA_def_property_update(prop, NC_GPENCIL | ND_SHADING, "rna_MaterialLineArt_update");
prop = RNA_def_property(srna, "transparency_mask_6", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_default(prop, 0);
RNA_def_property_boolean_sdna(prop, NULL, "transparency_mask", 1 << 6);
RNA_def_property_ui_text(prop, "mask 6", "Mask bit 6");
RNA_def_property_ui_text(prop, "mask 6", "");
RNA_def_property_update(prop, NC_GPENCIL | ND_SHADING, "rna_MaterialLineArt_update");
prop = RNA_def_property(srna, "transparency_mask_7", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_default(prop, 0);
RNA_def_property_boolean_sdna(prop, NULL, "transparency_mask", 1 << 7);
RNA_def_property_ui_text(prop, "Mask 7", "Mask bit 7");
RNA_def_property_ui_text(prop, "Mask 7", "");
RNA_def_property_update(prop, NC_GPENCIL | ND_SHADING, "rna_MaterialLineArt_update");
}
@ -911,7 +911,7 @@ void RNA_def_material(BlenderRNA *brna)
/* line art */
prop = RNA_def_property(srna, "lineart", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "lineart");
RNA_def_property_ui_text(prop, "Line Art Settings", "Line Art settings for material");
RNA_def_property_ui_text(prop, "Line Art Settings", "Line art settings for material");
rna_def_material_greasepencil(brna);
rna_def_material_lineart(brna);

View File

@ -164,17 +164,17 @@ const EnumPropertyItem rna_enum_object_gpencil_type_items[] = {
"LRT_SCENE",
ICON_SCENE_DATA,
"Scene Line Art",
"Quickly set up Line Art for the whole scene"},
"Quickly set up line art for the entire scene"},
{GP_LRT_COLLECTION,
"LRT_COLLECTION",
ICON_OUTLINER_COLLECTION,
"Collection Line Art",
"Quickly set up Line Art for active collection"},
"Quickly set up line art for the active collection"},
{GP_LRT_OBJECT,
"LRT_OBJECT",
ICON_OBJECT_DATA,
"Object Line Art",
"Quickly set up Line Art for the active object"},
"Quickly set up line art for the active object"},
{0, NULL, 0, NULL, NULL}};
static const EnumPropertyItem parent_type_items[] = {
@ -2673,23 +2673,27 @@ static void rna_def_object_lineart(BlenderRNA *brna)
PropertyRNA *prop;
static EnumPropertyItem prop_feature_line_usage_items[] = {
{OBJECT_LRT_INHERENT,
"INHEREIT",
{OBJECT_LRT_INHERENT, "INHEREIT", 0, "Inhereit", "Use settings from the parent collection"},
{OBJECT_LRT_INCLUDE,
"INCLUDE",
0,
"Inhereit",
"Follow settings from the parent collection"},
{OBJECT_LRT_INCLUDE, "INCLUDE", 0, "Include", "Include this object into LRT calculation"},
"Include",
"Generate feature lines for this object's data"},
{OBJECT_LRT_OCCLUSION_ONLY,
"OCCLUSION_ONLY",
0,
"Occlusion Only",
"Don't produce lines, only used as occlusion object"},
{OBJECT_LRT_EXCLUDE, "EXCLUDE", 0, "Exclude", "Don't use this object for LRT rendering"},
"Only use the object data to produce occlusion"},
{OBJECT_LRT_EXCLUDE,
"EXCLUDE",
0,
"Exclude",
"Don't use this object for Line Art rendering"},
{OBJECT_LRT_INTERSECTION_ONLY,
"INTERSECTION_ONLY",
0,
"Intersection Only",
"Only to generate intersection lines with this object"},
"Only generate intersection lines for this collection"},
{OBJECT_LRT_NO_INTERSECTION,
"NO_INTERSECTION",
0,
@ -2699,7 +2703,7 @@ static void rna_def_object_lineart(BlenderRNA *brna)
};
srna = RNA_def_struct(brna, "ObjectLineArt", NULL);
RNA_def_struct_ui_text(srna, "Object Line Art", "Object lineart settings");
RNA_def_struct_ui_text(srna, "Object Line Art", "Object line art settings");
RNA_def_struct_sdna(srna, "ObjectLineArt");
prop = RNA_def_property(srna, "usage", PROP_ENUM, PROP_NONE);
@ -2709,14 +2713,14 @@ static void rna_def_object_lineart(BlenderRNA *brna)
prop = RNA_def_property(srna, "use_crease_override", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", OBJECT_LRT_OWN_CREASE);
RNA_def_property_ui_text(prop, "Own Crease", "Use own crease setting to overwrite scene global");
RNA_def_property_ui_text(
prop, "Use Crease", "Use this object's crease setting to overwrite scene global");
RNA_def_property_update(prop, 0, "rna_object_lineart_update");
prop = RNA_def_property(srna, "crease_threshold", PROP_FLOAT, PROP_ANGLE);
RNA_def_property_range(prop, 0, DEG2RAD(180.0f));
RNA_def_property_ui_range(prop, 0.0f, DEG2RAD(180.0f), 0.01f, 1);
RNA_def_property_ui_text(
prop, "Own Crease", "Angles smaller than this will be treated as creases");
RNA_def_property_ui_text(prop, "Crease", "Angles smaller than this will be treated as creases");
RNA_def_property_update(prop, 0, "rna_object_lineart_update");
}
@ -3492,7 +3496,7 @@ static void rna_def_object(BlenderRNA *brna)
/* Line Art */
prop = RNA_def_property(srna, "lineart", PROP_POINTER, PROP_NONE);
RNA_def_property_struct_type(prop, "ObjectLineArt");
RNA_def_property_ui_text(prop, "Line Art", "Line Art settings for the object");
RNA_def_property_ui_text(prop, "Line Art", "Line art settings for the object");
RNA_define_lib_overridable(false);