[Bf-blender-cvs] [a4171f48661] blender-v2.83-release: Fix T54488: hair disconnect/reconnect not working with modifiers
Aleksi Juvani
noreply at git.blender.org
Tue Jan 18 10:54:17 CET 2022
Commit: a4171f48661b87b4a2e4ca66f1156c863261d759
Author: Aleksi Juvani
Date: Wed Jan 5 16:36:34 2022 +0100
Branches: blender-v2.83-release
https://developer.blender.org/rBa4171f48661b87b4a2e4ca66f1156c863261d759
Fix T54488: hair disconnect/reconnect not working with modifiers
Take the Use Modifier Stack setting into account when connecting hair, and
fix wrong results results when using deforming modifiers also.
Differential Revision: https://developer.blender.org/D13704
===================================================================
M source/blender/editors/physics/particle_object.c
===================================================================
diff --git a/source/blender/editors/physics/particle_object.c b/source/blender/editors/physics/particle_object.c
index f37a20bf43e..794b59b4c8a 100644
--- a/source/blender/editors/physics/particle_object.c
+++ b/source/blender/editors/physics/particle_object.c
@@ -742,8 +742,10 @@ static bool remap_hair_emitter(Depsgraph *depsgraph,
invert_m4_m4(from_imat, from_mat);
invert_m4_m4(to_imat, to_mat);
- if (target_psmd->mesh_final->runtime.deformed_only) {
- /* we don't want to mess up target_psmd->dm when converting to global coordinates below */
+ const bool use_dm_final_indices = (target_psys->part->use_modifier_stack &&
+ !target_psmd->mesh_final->runtime.deformed_only);
+
+ if (use_dm_final_indices) {
mesh = target_psmd->mesh_final;
}
else {
@@ -823,7 +825,13 @@ static bool remap_hair_emitter(Depsgraph *depsgraph,
tpa->foffset = 0.0f;
tpa->num = nearest.index;
- tpa->num_dmcache = psys_particle_dm_face_lookup(target_mesh, mesh, tpa->num, tpa->fuv, NULL);
+ if (use_dm_final_indices) {
+ tpa->num_dmcache = DMCACHE_ISCHILD;
+ }
+ else {
+ tpa->num_dmcache = psys_particle_dm_face_lookup(
+ target_psmd->mesh_final, target_psmd->mesh_original, tpa->num, tpa->fuv, NULL);
+ }
}
else {
me = &medge[nearest.index];
More information about the Bf-blender-cvs
mailing list