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:
authorJens Ole Wund <bjornmose@gmx.net>2005-04-21 22:58:15 +0400
committerJens Ole Wund <bjornmose@gmx.net>2005-04-21 22:58:15 +0400
commitc5214c15716715cd513e1d2b61433784eb64b617 (patch)
treeff14f8cfc540461198eb646325632215f17b406e /source/blender/blenkernel
parent8a75569f9a8d259f2531087b5c7d12adc0bac45d (diff)
rescaled stregth of wind and forcefield effects by some magnitudes
wind 250 field 1000 yeah WARNING to all testers: tighten belts scale down wind and forcefield settings (IPOs)
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/intern/softbody.c27
1 files changed, 12 insertions, 15 deletions
diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c
index 7b3a3b80866..4b607bddec3 100644
--- a/source/blender/blenkernel/intern/softbody.c
+++ b/source/blender/blenkernel/intern/softbody.c
@@ -358,14 +358,18 @@ static int is_there_deflection(unsigned int layer)
return retval;
}
-
static void softbody_calc_forces(Object *ob, float forcetime)
{
+/* rule we never alter free variables :bp->vec bp->pos in here !
+ * this will ruin adaptive stepsize AKA heun! (BM)
+ */
SoftBody *sb= ob->soft; // is supposed to be there
BodyPoint *bp;
BodyPoint *bproot;
BodySpring *bs;
- float iks, ks, kd, gravity, actspringlen, forcefactor, sd[3];
+ float iks, ks, kd, gravity, actspringlen, forcefactor, sd[3],
+ fieldfactor = 1000.0f,
+ windfactor = 250.0f;
int a, b, do_effector;
/* clear forces */
@@ -423,22 +427,15 @@ static void softbody_calc_forces(Object *ob, float forcetime)
pdDoEffector(bp->pos, force, speed, (float)G.scene->r.cfra, ob->lay,PE_WIND_AS_SPEED);
// note: now we have wind as motion of media, so we can do anisotropic stuff here,
// if we had vertex normals here(BM)
- /* apply force */
- // VecMulf(force, rescale_grav_to_framerate); <- didn't work, made value far too low!
- VecMulf(force,25.0f* eval_sb_fric_force_scale);
+ /* apply forcefield*/
+ VecMulf(force,fieldfactor* eval_sb_fric_force_scale);
VECADD(bp->force, bp->force, force);
- /* apply speed. note; deflector can give 'speed' only.... */
- /* nooo! we never alter free variables :bp->vec bp->pos in here !
- * this will ruin adative stepsize AHA heun! (BM)
- * VECADD(bp->vec, bp->vec, speed);
- */
- /* friction in moving media */
-
+ /* friction in moving media */
kd= sb->mediafrict* eval_sb_fric_force_scale;
- bp->force[0] -= kd * (bp->vec[0] + speed[0]/eval_sb_fric_force_scale);
- bp->force[1] -= kd * (bp->vec[1] + speed[1]/eval_sb_fric_force_scale);
- bp->force[2] -= kd * (bp->vec[2] + speed[2]/eval_sb_fric_force_scale);
+ bp->force[0] -= kd * (bp->vec[0] + windfactor*speed[0]/eval_sb_fric_force_scale);
+ bp->force[1] -= kd * (bp->vec[1] + windfactor*speed[1]/eval_sb_fric_force_scale);
+ bp->force[2] -= kd * (bp->vec[2] + windfactor*speed[2]/eval_sb_fric_force_scale);
/* now we'll have nice centrifugal effect for vortex */
}