[Bf-blender-cvs] [201d393] master: Fix T47902: Particle grid not using modifier stack, Take II.

Bastien Montagne noreply at git.blender.org
Tue Mar 29 17:47:15 CEST 2016


Commit: 201d393862243013cd23693794c55d80e62a424a
Author: Bastien Montagne
Date:   Tue Mar 29 17:45:56 2016 +0200
Branches: master
https://developer.blender.org/rB201d393862243013cd23693794c55d80e62a424a

Fix T47902: Particle grid not using modifier stack, Take II.

Now only fix correct handling of use_modifier_stack for grid distribution,
fixing it globally breaks all existing edited hair systems. :/

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

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

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

diff --git a/source/blender/blenkernel/intern/particle_distribute.c b/source/blender/blenkernel/intern/particle_distribute.c
index 2527ff5..a250a41 100644
--- a/source/blender/blenkernel/intern/particle_distribute.c
+++ b/source/blender/blenkernel/intern/particle_distribute.c
@@ -795,6 +795,11 @@ static int psys_thread_context_init_distribute(ParticleThreadContext *ctx, Parti
 		return 0;
 	}
 	
+	/* XXX This distribution code is totally broken in case from == PART_FROM_CHILD, it's always using finaldm
+	 *     even if use_modifier_stack is unset... But making things consistent here break all existing edited
+	 *     hair systems, so better wait for complete rewrite.
+	 */
+
 	psys_thread_context_init(ctx, sim);
 	
 	/* First handle special cases */
@@ -810,10 +815,20 @@ static int psys_thread_context_init_distribute(ParticleThreadContext *ctx, Parti
 		/* Grid distribution */
 		if (part->distr==PART_DISTR_GRID && from != PART_FROM_VERT) {
 			BLI_srandom(31415926 + psys->seed);
-			dm= CDDM_from_mesh((Mesh*)ob->data);
-			DM_ensure_tessface(dm);
+
+			if (psys->part->use_modifier_stack) {
+				dm = finaldm;
+			}
+			else {
+				dm = CDDM_from_mesh((Mesh*)ob->data);
+			}
+
 			distribute_grid(dm,psys);
-			dm->release(dm);
+
+			if (dm != finaldm) {
+				dm->release(dm);
+			}
+
 			return 0;
 		}
 	}




More information about the Bf-blender-cvs mailing list