[Bf-blender-cvs] [8fcf774] master: Fix T47935: Hair particles; The display percentage parameter breaks after a render is done.

Bastien Montagne noreply at git.blender.org
Sat Mar 26 17:44:40 CET 2016


Commit: 8fcf774167a2ea52e63771655f6dd5eefb4ff7ee
Author: Bastien Montagne
Date:   Sat Mar 26 17:41:56 2016 +0100
Branches: master
https://developer.blender.org/rB8fcf774167a2ea52e63771655f6dd5eefb4ff7ee

Fix T47935: Hair particles; The display percentage parameter breaks after a render is done.

Follow same logic in `psys_render_restore` as in `psys_render_set` - if hair and
display percentage is not 100%, we have to recompute particles...

With regular 'emitter' particles just hiding some is fine (though using random here
will not give a precise proportion...).

===================================================================

M	source/blender/blenkernel/intern/particle.c

===================================================================

diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c
index 66d6252..081244c 100644
--- a/source/blender/blenkernel/intern/particle.c
+++ b/source/blender/blenkernel/intern/particle.c
@@ -720,13 +720,19 @@ void psys_render_restore(Object *ob, ParticleSystem *psys)
 	disp = psys_get_current_display_percentage(psys);
 
 	if (disp != render_disp) {
-		PARTICLE_P;
+		/* Hair can and has to be recalculated if everything isn't displayed. */
+		if (psys->part->type == PART_HAIR) {
+			psys->recalc |= PSYS_RECALC_RESET;
+		}
+		else {
+			PARTICLE_P;
 
-		LOOP_PARTICLES {
-			if (psys_frand(psys, p) > disp)
-				pa->flag |= PARS_NO_DISP;
-			else
-				pa->flag &= ~PARS_NO_DISP;
+			LOOP_PARTICLES {
+				if (psys_frand(psys, p) > disp)
+					pa->flag |= PARS_NO_DISP;
+				else
+					pa->flag &= ~PARS_NO_DISP;
+			}
 		}
 	}
 }




More information about the Bf-blender-cvs mailing list