Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenrik Dick <weasel>2019-11-03 06:24:24 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-11-04 02:35:21 +0300
commite45cfb574ee75b85de084d09fcb8325778806bd2 (patch)
tree519a3d3e709402b593c37e03120a09e6ebc6bd3d /source/blender/makesdna
parentb5244cd5dc1aa9ac70f926435e1449aa77548fae (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')
-rw-r--r--source/blender/makesdna/DNA_modifier_types.h30
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 {