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/blenkernel/intern/simple_deform.c
parent1537e75cba4df5604b695be54bbae724df5d4095 (diff)
Fixed simple deform strech/squash function
Diffstat (limited to 'source/blender/blenkernel/intern/simple_deform.c')
-rw-r--r--source/blender/blenkernel/intern/simple_deform.c18
1 files changed, 6 insertions, 12 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