Weld Modifier: add "loose_edges" option
This improve the cloth modeling workflow by allowing you to weld only the edges that are used for the sewing forces. Reviewed By: mano-wii, weasel Differential Revision: https://developer.blender.org/D10710
This commit is contained in:
parent
3123f33380
commit
2beff6197e
|
@ -2023,6 +2023,7 @@ typedef struct WeldModifierData {
|
|||
/* WeldModifierData->flag */
|
||||
enum {
|
||||
MOD_WELD_INVERT_VGROUP = (1 << 0),
|
||||
MOD_WELD_LOOSE_EDGES = (1 << 1),
|
||||
};
|
||||
|
||||
/* #WeldModifierData.mode */
|
||||
|
|
|
@ -6279,6 +6279,12 @@ static void rna_def_modifier_weld(BlenderRNA *brna)
|
|||
RNA_def_property_ui_text(prop, "Invert", "Invert vertex group influence");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop = RNA_def_property(srna, "loose_edges", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_WELD_LOOSE_EDGES);
|
||||
RNA_def_property_ui_text(
|
||||
prop, "Only Loose Edges", "Collapse edges without faces, cloth sewing edges");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
RNA_define_lib_overridable(false);
|
||||
}
|
||||
|
||||
|
|
|
@ -1735,6 +1735,9 @@ static Mesh *weldModifier_doWeld(WeldModifierData *wmd,
|
|||
uint v1 = me->v1;
|
||||
uint v2 = me->v2;
|
||||
|
||||
if (wmd->flag & MOD_WELD_LOOSE_EDGES && (me->flag & ME_LOOSEEDGE) == 0) {
|
||||
continue;
|
||||
}
|
||||
while (v1 != vert_dest_map[v1]) {
|
||||
v1 = vert_dest_map[v1];
|
||||
}
|
||||
|
@ -2019,11 +2022,15 @@ static void panel_draw(const bContext *UNUSED(C), Panel *panel)
|
|||
|
||||
PointerRNA ob_ptr;
|
||||
PointerRNA *ptr = modifier_panel_get_property_pointers(panel, &ob_ptr);
|
||||
int weld_mode = RNA_enum_get(ptr, "mode");
|
||||
|
||||
uiLayoutSetPropSep(layout, true);
|
||||
|
||||
uiItemR(layout, ptr, "mode", 0, NULL, ICON_NONE);
|
||||
uiItemR(layout, ptr, "merge_threshold", 0, IFACE_("Distance"), ICON_NONE);
|
||||
if (weld_mode == MOD_WELD_MODE_CONNECTED) {
|
||||
uiItemR(layout, ptr, "loose_edges", 0, NULL, ICON_NONE);
|
||||
}
|
||||
modifier_vgroup_ui(layout, ptr, &ob_ptr, "vertex_group", "invert_vertex_group", NULL);
|
||||
|
||||
modifier_panel_end(layout, ptr);
|
||||
|
|
Loading…
Reference in New Issue