diff options
author | Andre Susano Pinto <andresusanopinto@gmail.com> | 2008-07-26 03:52:16 +0400 |
---|---|---|
committer | Andre Susano Pinto <andresusanopinto@gmail.com> | 2008-07-26 03:52:16 +0400 |
commit | 9e1ca2c1bef2d0e8db5e22a284134c37b2f6a457 (patch) | |
tree | 45093c4d265fa2af0db28ad284bdbd6c797fd205 /source/blender | |
parent | 1537e75cba4df5604b695be54bbae724df5d4095 (diff) |
Fixed simple deform strech/squash function
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenkernel/intern/simple_deform.c | 18 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_modifier_types.h | 11 | ||||
-rw-r--r-- | source/blender/src/buttons_editing.c | 11 |
3 files changed, 16 insertions, 24 deletions
diff --git a/source/blender/blenkernel/intern/simple_deform.c b/source/blender/blenkernel/intern/simple_deform.c index 0c58543a58d..86fef7208a1 100644 --- a/source/blender/blenkernel/intern/simple_deform.c +++ b/source/blender/blenkernel/intern/simple_deform.c @@ -68,17 +68,17 @@ static void simpleDeform_tapperXY(const float factor, const float *dcut, float * } } -/* TODO strech and squash need review on function */ static void simpleDeform_strech(const float factor, const float dcut[3], float *co) { float x = co[0], y = co[1], z = co[2]; float scale; - scale = z*factor; - scale = scale*scale; + scale = (z*z*factor-factor + 1.0); + + co[0] = x*scale; + co[1] = y*scale; + co[2] = z*(1.0+factor); - co[0] += x+x*scale; - co[1] += y+y*scale; if(dcut) { @@ -86,7 +86,6 @@ static void simpleDeform_strech(const float factor, const float dcut[3], float * co[1] += dcut[0]*scale; co[2] += dcut[2]; } - } static void simpleDeform_squash(const float factor, const float dcut[3], float *co) @@ -237,15 +236,10 @@ void SimpleDeformModifier_do(SimpleDeformModifierData *smd, struct Object *ob, s simpleDeform_tapperXY(smd->factor[0], dcut, co); break; - case MOD_SIMPLEDEFORM_MODE_STRECH: + case MOD_SIMPLEDEFORM_MODE_STRECH_SQUASH: axis_limit(2, smd->factor+1, co, dcut); simpleDeform_strech(smd->factor[0], dcut, co); break; - - case MOD_SIMPLEDEFORM_MODE_SQUASH: - axis_limit(2, smd->factor+1, co, dcut); - simpleDeform_squash(smd->factor[0], dcut, co); - break; } //linear interpolation diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h index 44a7017158b..e63eb608295 100644 --- a/source/blender/makesdna/DNA_modifier_types.h +++ b/source/blender/makesdna/DNA_modifier_types.h @@ -531,11 +531,10 @@ typedef struct SimpleDeformModifierData { } SimpleDeformModifierData; -#define MOD_SIMPLEDEFORM_MODE_TWIST 1 -#define MOD_SIMPLEDEFORM_MODE_BEND 2 -#define MOD_SIMPLEDEFORM_MODE_TAPER_X 3 -#define MOD_SIMPLEDEFORM_MODE_TAPER_XY 4 -#define MOD_SIMPLEDEFORM_MODE_STRECH 5 -#define MOD_SIMPLEDEFORM_MODE_SQUASH 6 +#define MOD_SIMPLEDEFORM_MODE_TWIST 1 +#define MOD_SIMPLEDEFORM_MODE_BEND 2 +#define MOD_SIMPLEDEFORM_MODE_TAPER_X 3 +#define MOD_SIMPLEDEFORM_MODE_TAPER_XY 4 +#define MOD_SIMPLEDEFORM_MODE_STRECH_SQUASH 5 #endif diff --git a/source/blender/src/buttons_editing.c b/source/blender/src/buttons_editing.c index d0b970bf5c6..252350ea72b 100644 --- a/source/blender/src/buttons_editing.c +++ b/source/blender/src/buttons_editing.c @@ -982,12 +982,11 @@ static uiBlock *modifiers_select_simpledeform_typemenu(void *ob_v) block= uiNewBlock(&curarea->uiblocks, "modifiers_select_simpledeform_typemenu", UI_EMBOSSP, UI_HELV, G.curscreen->mainwin); uiBlockSetButmFunc(block, do_modifiers_select_simpledeform_typemenu, ob_v); - uiDefBut(block, BUTM, B_MODIFIER_RECALC, "Twist", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, MOD_SIMPLEDEFORM_MODE_TWIST, ""); - uiDefBut(block, BUTM, B_MODIFIER_RECALC, "Bend", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, MOD_SIMPLEDEFORM_MODE_BEND, ""); - uiDefBut(block, BUTM, B_MODIFIER_RECALC, "Tapper X", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, MOD_SIMPLEDEFORM_MODE_TAPER_X, ""); - uiDefBut(block, BUTM, B_MODIFIER_RECALC, "Tapper XY", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, MOD_SIMPLEDEFORM_MODE_TAPER_XY, ""); - uiDefBut(block, BUTM, B_MODIFIER_RECALC, "Strech", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, MOD_SIMPLEDEFORM_MODE_STRECH, ""); - uiDefBut(block, BUTM, B_MODIFIER_RECALC, "Squash", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, MOD_SIMPLEDEFORM_MODE_SQUASH, ""); + uiDefBut(block, BUTM, B_MODIFIER_RECALC, "Twist", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, MOD_SIMPLEDEFORM_MODE_TWIST, ""); + uiDefBut(block, BUTM, B_MODIFIER_RECALC, "Bend", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, MOD_SIMPLEDEFORM_MODE_BEND, ""); + uiDefBut(block, BUTM, B_MODIFIER_RECALC, "Tapper X", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, MOD_SIMPLEDEFORM_MODE_TAPER_X, ""); + uiDefBut(block, BUTM, B_MODIFIER_RECALC, "Tapper XY", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, MOD_SIMPLEDEFORM_MODE_TAPER_XY, ""); + uiDefBut(block, BUTM, B_MODIFIER_RECALC, "Strech Squash", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, MOD_SIMPLEDEFORM_MODE_STRECH_SQUASH, ""); uiBlockSetDirection(block, UI_RIGHT); uiTextBoundsBlock(block, 50); |