diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-03-28 20:44:05 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-03-31 02:20:11 +0300 |
commit | c16a8983efba9ecacd8da408d03c37a55483e528 (patch) | |
tree | bfeb0f644ac3bd8782bef474329e5a991c82d08c /source/blender/makesdna/DNA_modifier_types.h | |
parent | 660173ed72d9c69f6891d5ad05a8c4a35ece9c7c (diff) |
Corrective Smooth Modifier (aka delta-mush)
This modifier can be used to correct bad deformations,
Original patch D1183 by @sazerac, with own modifications
Diffstat (limited to 'source/blender/makesdna/DNA_modifier_types.h')
-rw-r--r-- | source/blender/makesdna/DNA_modifier_types.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h index b32b228fda4..f3c61f0ab6c 100644 --- a/source/blender/makesdna/DNA_modifier_types.h +++ b/source/blender/makesdna/DNA_modifier_types.h @@ -84,6 +84,7 @@ typedef enum ModifierType { eModifierType_Wireframe = 48, eModifierType_DataTransfer = 49, eModifierType_NormalEdit = 50, + eModifierType_CorrectiveSmooth = 51, NUM_MODIFIER_TYPES } ModifierType; @@ -1288,6 +1289,48 @@ enum { MOD_LAPLACIANSMOOTH_NORMALIZED = (1 << 5), }; + +typedef struct CorrectiveSmoothModifierData { + ModifierData modifier; + + /* positions set during 'bind' operator + * use for MOD_CORRECTIVESMOOTH_RESTSOURCE_BIND */ + float (*bind_coords)[3]; + + /* note: -1 is used to bind */ + unsigned int bind_coords_num; + + float lambda; + short repeat, flag; + char smooth_type, rest_source; + char pad[2]; + + char defgrp_name[64]; /* MAX_VGROUP_NAME */ + + /* runtime-only cache (delta's between), + * delta's between the original positions and the smoothed positions */ + float (*delta_cache)[3]; + unsigned int delta_cache_num; + char pad2[4]; +} CorrectiveSmoothModifierData; + +enum { + MOD_CORRECTIVESMOOTH_SMOOTH_SIMPLE = 0, + MOD_CORRECTIVESMOOTH_SMOOTH_LENGTH_WEIGHT = 1, +}; + +enum { + MOD_CORRECTIVESMOOTH_RESTSOURCE_ORCO = 0, + MOD_CORRECTIVESMOOTH_RESTSOURCE_BIND = 1, +}; + +/* Corrective Smooth modifier flags */ +enum { + MOD_CORRECTIVESMOOTH_INVERT_VGROUP = (1 << 0), + MOD_CORRECTIVESMOOTH_ONLY_SMOOTH = (1 << 1), + MOD_CORRECTIVESMOOTH_PIN_BOUNDARY = (1 << 2), +}; + typedef struct UVWarpModifierData { ModifierData modifier; |