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. :/
This commit is contained in:
Bastien Montagne 2016-03-29 17:45:56 +02:00
parent a959771626
commit 201d393862
Notes: blender-bot 2023-02-14 08:29:54 +01:00
Referenced by commit 53e85a159a, Particles: Fix broken grid distribution in some case from own recent rB201d3938622.
Referenced by issue #47902, Particle grid not using modifier stack
1 changed files with 18 additions and 3 deletions

View File

@ -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;
}
}