[Bf-blender-cvs] [c410bb71f2f] fluid-mantaflow: filter out dead particles
Sebastián Barschkis
noreply at git.blender.org
Fri Jun 9 21:16:37 CEST 2017
Commit: c410bb71f2fdbef7ef8b25b3dc64db18574f6701
Author: Sebastián Barschkis
Date: Fri Jun 9 21:16:24 2017 +0200
Branches: fluid-mantaflow
https://developer.blender.org/rBc410bb71f2fdbef7ef8b25b3dc64db18574f6701
filter out dead particles
mantaflow stores dead particles for internal purposes. in blender we just skip them, they dont need to be shown in the UI
===================================================================
M source/blender/blenkernel/intern/particle_system.c
===================================================================
diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c
index 5b0d59e8087..ea394f61cba 100644
--- a/source/blender/blenkernel/intern/particle_system.c
+++ b/source/blender/blenkernel/intern/particle_system.c
@@ -3772,7 +3772,7 @@ static void particles_manta_step(ParticleSimulationData *sim, int UNUSED(cfra),
ParticleData *pa=NULL;
int p, totpart;
- int activeParts = 0, fileParts = 0;
+ int flagActivePart, activeParts = 0, fileParts = 0;
totpart = liquid_get_num_particles(sds->fluid);
totpart = (use_render_params) ? totpart : (part->disp*totpart) / 100;
@@ -3786,7 +3786,15 @@ static void particles_manta_step(ParticleSimulationData *sim, int UNUSED(cfra),
for (p=0, pa=psys->particles; p<totpart; p++, pa++) {
- if (curFrame != 0) { // TODO (sebbas): need better way to catch cases where pp is not yet present
+ // Sanity check: no particle files present yet
+ // TODO (sebbas): need better way to catch cases where pp is not yet present
+ if (curFrame == 0)
+ return;
+
+ flagActivePart = liquid_get_particle_flag_at(sds->fluid, p);
+
+ // Only allow active particles, i.e. filter out dead particles that just Mantaflow needs
+ if (flagActivePart == 0) { // mantaflow convention: PNONE = 0 (regular, active particle)
activeParts++;
pa->size = 0.1; // TODO (sebbas): manta doesnt store particle sizes -> new field in domainsettings
@@ -3841,9 +3849,8 @@ static void particles_manta_step(ParticleSimulationData *sim, int UNUSED(cfra),
pa->dietime = sim->scene->r.efra + 1;
pa->lifetime = sim->scene->r.efra;
pa->alive = PARS_ALIVE;
-
- fileParts++;
}
+ fileParts++;
}
totpart = psys->totpart = activeParts;
More information about the Bf-blender-cvs
mailing list