diff options
author | Jens Ole Wund <bjornmose@gmx.net> | 2005-04-21 22:58:15 +0400 |
---|---|---|
committer | Jens Ole Wund <bjornmose@gmx.net> | 2005-04-21 22:58:15 +0400 |
commit | c5214c15716715cd513e1d2b61433784eb64b617 (patch) | |
tree | ff14f8cfc540461198eb646325632215f17b406e /source/blender/blenkernel | |
parent | 8a75569f9a8d259f2531087b5c7d12adc0bac45d (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.c | 27 |
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 */ } |