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:
authorAndre Susano Pinto <andresusanopinto@gmail.com>2008-07-26 03:52:16 +0400
committerAndre Susano Pinto <andresusanopinto@gmail.com>2008-07-26 03:52:16 +0400
commit9e1ca2c1bef2d0e8db5e22a284134c37b2f6a457 (patch)
tree45093c4d265fa2af0db28ad284bdbd6c797fd205 /source/blender
parent1537e75cba4df5604b695be54bbae724df5d4095 (diff)
Fixed simple deform strech/squash function
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/intern/simple_deform.c18
-rw-r--r--source/blender/makesdna/DNA_modifier_types.h11
-rw-r--r--source/blender/src/buttons_editing.c11
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);