Solidify Modifier: support non-manifold input

This adds a new mode to solidify to support non-manifold geometry
with edges using 3 or more faces as input, resulting in a manifold mesh.

Since the differences between these methods don't translate well
into short terms, they're named "Simple" and "Complex" in the UI.

This also adds clamp with respect to angles
to the existing solidify modifier calculation.
This commit is contained in:
Henrik Dick
2019-11-03 14:24:24 +11:00
committed by Campbell Barton
parent b5244cd5dc
commit e45cfb574e
8 changed files with 3552 additions and 927 deletions

View File

@@ -954,11 +954,23 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
layout.label(text="Settings are inside the Physics tab")
def SOLIDIFY(self, layout, ob, md):
layout.row().prop(md, "solidify_mode")
solidify_mode = md.solidify_mode
if solidify_mode == 'NON_MANIFOLD':
layout.prop(md, "nonmanifold_thickness_mode")
layout.prop(md, "nonmanifold_boundary_mode")
split = layout.split()
col = split.column()
col.prop(md, "thickness")
col.prop(md, "thickness_clamp")
row = col.row()
row.active = md.thickness_clamp > 0.0
row.prop(md, "use_thickness_angle_clamp")
col.separator()
@@ -972,18 +984,22 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
sub.active = bool(md.vertex_group)
sub.prop(md, "thickness_vertex_group", text="Factor")
col.label(text="Crease:")
col.prop(md, "edge_crease_inner", text="Inner")
col.prop(md, "edge_crease_outer", text="Outer")
col.prop(md, "edge_crease_rim", text="Rim")
if solidify_mode == 'EXTRUDE':
col.label(text="Crease:")
col.prop(md, "edge_crease_inner", text="Inner")
col.prop(md, "edge_crease_outer", text="Outer")
col.prop(md, "edge_crease_rim", text="Rim")
col = split.column()
col.prop(md, "offset")
col.prop(md, "use_flip_normals")
col.prop(md, "use_even_offset")
col.prop(md, "use_quality_normals")
if solidify_mode == 'EXTRUDE':
col.prop(md, "use_even_offset")
col.prop(md, "use_quality_normals")
col.prop(md, "use_rim")
col_rim = col.column()
col_rim.active = md.use_rim