diff options
author | Henrik Dick <weasel> | 2019-11-03 06:24:24 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-11-04 02:35:21 +0300 |
commit | e45cfb574ee75b85de084d09fcb8325778806bd2 (patch) | |
tree | 519a3d3e709402b593c37e03120a09e6ebc6bd3d /source/blender/makesdna/DNA_modifier_types.h | |
parent | b5244cd5dc1aa9ac70f926435e1449aa77548fae (diff) |
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.
Diffstat (limited to 'source/blender/makesdna/DNA_modifier_types.h')
-rw-r--r-- | source/blender/makesdna/DNA_modifier_types.h | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h index cceeb9c71d5..9c4d7bcd3b1 100644 --- a/source/blender/makesdna/DNA_modifier_types.h +++ b/source/blender/makesdna/DNA_modifier_types.h @@ -1115,7 +1115,13 @@ typedef struct SolidifyModifierData { float offset_fac_vg; /** Clamp offset based on surrounding geometry. */ float offset_clamp; - char _pad[4]; + char mode; + + /** Variables for #MOD_SOLIDIFY_MODE_NONMANIFOLD. */ + char nonmanifold_offset_mode; + char nonmanifold_boundary_mode; + + char _pad; float crease_inner; float crease_outer; float crease_rim; @@ -1124,6 +1130,7 @@ typedef struct SolidifyModifierData { short mat_ofs_rim; } SolidifyModifierData; +/** #SolidifyModifierData.flag */ enum { MOD_SOLIDIFY_RIM = (1 << 0), MOD_SOLIDIFY_EVEN = (1 << 1), @@ -1134,6 +1141,27 @@ enum { #endif MOD_SOLIDIFY_FLIP = (1 << 5), MOD_SOLIDIFY_NOSHELL = (1 << 6), + MOD_SOLIDIFY_OFFSET_ANGLE_CLAMP = (1 << 7), +}; + +/** #SolidifyModifierData.mode */ +enum { + MOD_SOLIDIFY_MODE_EXTRUDE = 0, + MOD_SOLIDIFY_MODE_NONMANIFOLD = 1, +}; + +/** #SolidifyModifierData.nonmanifold_offset_mode */ +enum { + MOD_SOLIDIFY_NONMANIFOLD_OFFSET_MODE_FIXED = 0, + MOD_SOLIDIFY_NONMANIFOLD_OFFSET_MODE_EVEN = 1, + MOD_SOLIDIFY_NONMANIFOLD_OFFSET_MODE_CONSTRAINTS = 2, +}; + +/** #SolidifyModifierData.nonmanifold_boundary_mode */ +enum { + MOD_SOLIDIFY_NONMANIFOLD_BOUNDARY_MODE_NONE = 0, + MOD_SOLIDIFY_NONMANIFOLD_BOUNDARY_MODE_ROUND = 1, + MOD_SOLIDIFY_NONMANIFOLD_BOUNDARY_MODE_FLAT = 2, }; typedef struct ScrewModifierData { |