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:
authorTon Roosendaal <ton@blender.org>2004-11-07 00:59:35 +0300
committerTon Roosendaal <ton@blender.org>2004-11-07 00:59:35 +0300
commit02e838c99bd967e17872f048ffa81a6e41c89cb4 (patch)
treeea1e2611c4389a8d9eaa2ec8128dc2bf9ffc91ba /source/blender/blenkernel/intern/deform.c
parent6e755e5e98145d175bcbcb800174fb0433b17c43 (diff)
- Pending Hook work; falloff value for soft hook deformation.
Falloff= distance where influence becomes zero.
Diffstat (limited to 'source/blender/blenkernel/intern/deform.c')
-rw-r--r--source/blender/blenkernel/intern/deform.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/source/blender/blenkernel/intern/deform.c b/source/blender/blenkernel/intern/deform.c
index fbf13cba810..bf64c1451aa 100644
--- a/source/blender/blenkernel/intern/deform.c
+++ b/source/blender/blenkernel/intern/deform.c
@@ -36,6 +36,7 @@
*/
#include <string.h>
+#include <math.h>
#include "MEM_guardedalloc.h"
@@ -178,14 +179,21 @@ void hook_object_deform(Object *ob, int index, float *vec)
}
if( hook->indexar[hook->curindex]==index ) {
- float fac= hook->force;
-
- totforce+= fac;
+ float fac= hook->force, len;
VecMat4MulVecfl(vect, hook->mat, vec);
- vectot[0]+= fac*vect[0];
- vectot[1]+= fac*vect[1];
- vectot[2]+= fac*vect[2];
+
+ if(hook->falloff!=0.0) {
+ len= VecLenf(vect, hook->parent->obmat[3]);
+ if(len > hook->falloff) fac= 0.0;
+ else if(len>0.0) fac*= sqrt(1.0 - len/hook->falloff);
+ }
+ if(fac!=0.0) {
+ totforce+= fac;
+ vectot[0]+= fac*vect[0];
+ vectot[1]+= fac*vect[1];
+ vectot[2]+= fac*vect[2];
+ }
}
}
}
@@ -256,6 +264,7 @@ int mesh_modifier(Object *ob, char mode)
float *fp;
if(dl->verts) MEM_freeN(dl->verts);
+ if(dl->nors) MEM_freeN(dl->nors);
dl->nr= me->totvert;
if(dl->nr) {