[Bf-blender-cvs] [45c6e5d] hair_immediate_fixes: Reconstruct most basic particle data when applying the hair edit, so particle hairs remain visible.
Lukas Tönne
noreply at git.blender.org
Sat Dec 27 11:31:45 CET 2014
Commit: 45c6e5d31b91d355a82e4df25f02eb3dc7427719
Author: Lukas Tönne
Date: Tue Nov 25 14:39:07 2014 +0100
Branches: hair_immediate_fixes
https://developer.blender.org/rB45c6e5d31b91d355a82e4df25f02eb3dc7427719
Reconstruct most basic particle data when applying the hair edit, so
particle hairs remain visible.
Note that currently the hair root location (num/num_dmcache, fuv, foffset)
is not stored from edit data, so all hairs end up in a default location.
===================================================================
M source/blender/blenkernel/intern/edithair_particles.c
===================================================================
diff --git a/source/blender/blenkernel/intern/edithair_particles.c b/source/blender/blenkernel/intern/edithair_particles.c
index 463af02..8465edc 100644
--- a/source/blender/blenkernel/intern/edithair_particles.c
+++ b/source/blender/blenkernel/intern/edithair_particles.c
@@ -71,6 +71,7 @@ static void copy_edit_curve(HairEditData *hedit, HairEditCurve *curve, ParticleD
++k, ++vert, ++hkey) {
copy_v3_v3(vert->co, hkey->co);
+
// TODO define other key stuff ...
}
}
@@ -129,7 +130,7 @@ static void free_particle_data(ParticleSystem *psys)
}
}
-static void create_particle_curve(ParticleData *pa, HairEditData *hedit, HairEditCurve *curve)
+static void create_particle_curve(ParticleSystem *psys, ParticleData *pa, HairEditData *hedit, HairEditCurve *curve)
{
int ntotkey = curve->numverts;
HairKey *nhair = MEM_callocN(sizeof(HairKey) * ntotkey, "hair keys");
@@ -137,11 +138,27 @@ static void create_particle_curve(ParticleData *pa, HairEditData *hedit, HairEdi
HairKey *hkey;
int k;
+ pa->alive = PARS_ALIVE;
+ pa->flag = 0;
+
+ pa->time = 0.0f;
+ pa->lifetime = 100.0f;
+ pa->dietime = 100.0f;
+
+ pa->fuv[0] = 1.0f;
+ pa->fuv[1] = 0.0f;
+ pa->fuv[2] = 0.0f;
+ pa->fuv[3] = 0.0f;
+
+ pa->size = psys->part->size;
+
for (k = 0, vert = hedit->verts + curve->start, hkey = nhair;
k < curve->numverts;
++k, ++vert, ++hkey) {
copy_v3_v3(hkey->co, vert->co);
+ hkey->time = ntotkey > 0 ? (float)k / (float)(ntotkey - 1) : 0.0f;
+ hkey->weight = 1.0f;
// TODO define other key stuff ...
}
@@ -164,7 +181,7 @@ static void create_particle_data(ParticleSystem *psys, HairEditData *hedit)
// TODO copy particle stuff ...
- create_particle_curve(pa, hedit, curve);
+ create_particle_curve(psys, pa, hedit, curve);
}
psys->particles = nparticles;
More information about the Bf-blender-cvs
mailing list