From ce74b14850c06b77c069a2633a731a60a8d9ab03 Mon Sep 17 00:00:00 2001 From: Janne Karhu Date: Fri, 29 Oct 2010 10:31:45 +0000 Subject: Fix for [#24430] Hair Dynamics Problem * Hair added in particle mode didn't have any weights assigned. --- source/blender/editors/physics/particle_edit.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'source/blender/editors') diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c index 57867fdc441..10313868500 100644 --- a/source/blender/editors/physics/particle_edit.c +++ b/source/blender/editors/physics/particle_edit.c @@ -3200,6 +3200,7 @@ static int brush_add(PEData *data, short number) framestep= pa->lifetime/(float)(pset->totaddkey-1); if(tree) { + ParticleData *ppa; HairKey *hkey; ParticleKey key[3]; KDTreeNearest ptn[3]; @@ -3224,6 +3225,8 @@ static int brush_add(PEData *data, short number) for(w=0; wparticles+ptn[0].index; + for(k=0; ktotaddkey; k++) { hkey= (HairKey*)pa->hair + k; hkey->time= pa->time + k * framestep; @@ -3232,6 +3235,9 @@ static int brush_add(PEData *data, short number) psys_get_particle_on_path(&sim, ptn[0].index, key, 0); mul_v3_fl(key[0].co, weight[0]); + /* TODO: interpolatint the weight would be nicer */ + hkey->weight= (ppa->hair+MIN2(k, ppa->totkey-1))->weight; + if(maxw>1) { key[1].time= key[0].time; psys_get_particle_on_path(&sim, ptn[1].index, key + 1, 0); @@ -3258,6 +3264,7 @@ static int brush_add(PEData *data, short number) for(k=0, hkey=pa->hair; ktotaddkey; k++, hkey++) { VECADDFAC(hkey->co, pa->state.co, pa->state.vel, k * framestep * timestep); hkey->time += k * framestep; + hkey->weight = 1.f - (float)k/(float)(pset->totaddkey-1); } } for(k=0, hkey=pa->hair; ktotaddkey; k++, hkey++) { -- cgit v1.2.3