[Bf-blender-cvs] [e6cd4761e7c] blender-v3.0-release: Fix T93321: Modified Mirror modifier behavior break some other tools like bound SurfaceDeform.

Bastien Montagne noreply at git.blender.org
Thu Nov 25 10:22:18 CET 2021


Commit: e6cd4761e7c3043c8e9dc789b6eb6d0aa1b723bd
Author: Bastien Montagne
Date:   Wed Nov 24 16:20:07 2021 +0100
Branches: blender-v3.0-release
https://developer.blender.org/rBe6cd4761e7c3043c8e9dc789b6eb6d0aa1b723bd

Fix T93321: Modified Mirror modifier behavior break some other tools like bound SurfaceDeform.

Revert "Fix T91444: Edge Loop Preview fails with two Mirror Modifiers"

This reverts commit 1a7757b0bc6945ab7d3b281f3e0dd7130bcf80f0.

Caused issue reported in T93321, boiling down to the fact that other
operations or modifiers (like the SurfaceDeform one) rely on the order
of the vertices in the mesh to remain consistent.

Changing this in a modifier would mean those operations need to be
reset/re-created (e.g. rebound for the SurfaceDeform case), which is not
doable in `do_version` code.

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

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

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

diff --git a/source/blender/blenkernel/intern/mesh_mirror.c b/source/blender/blenkernel/intern/mesh_mirror.c
index 6df13e71e72..b20d81e7b9c 100644
--- a/source/blender/blenkernel/intern/mesh_mirror.c
+++ b/source/blender/blenkernel/intern/mesh_mirror.c
@@ -260,16 +260,10 @@ Mesh *BKE_mesh_mirror_apply_mirror_on_axis_for_modifier(MirrorModifierData *mmd,
     mul_m4_v3(mtx, mv->co);
 
     if (do_vtargetmap) {
-      /* Compare location of the original and mirrored vertex,
-       * to see if they should be mapped for merging.
-       *
-       * Always merge from the copied into the original vertices so it's possible to
-       * generate a 1:1 mapping by scanning vertices from the beginning of the array
-       * as is done in #BKE_editmesh_vert_coords_when_deformed. Without this,
-       * the coordinates returned will sometimes point to the copied vertex locations, see: T91444.
-       */
+      /* compare location of the original and mirrored vertex, to see if they
+       * should be mapped for merging */
       if (UNLIKELY(len_squared_v3v3(mv_prev->co, mv->co) < tolerance_sq)) {
-        *vtmap_b = i;
+        *vtmap_a = maxVerts + i;
         tot_vtargetmap++;
 
         /* average location */
@@ -277,11 +271,10 @@ Mesh *BKE_mesh_mirror_apply_mirror_on_axis_for_modifier(MirrorModifierData *mmd,
         copy_v3_v3(mv_prev->co, mv->co);
       }
       else {
-        *vtmap_b = -1;
+        *vtmap_a = -1;
       }
 
-      /* Fill here to avoid 2x loops. */
-      *vtmap_a = -1;
+      *vtmap_b = -1; /* fill here to avoid 2x loops */
 
       vtmap_a++;
       vtmap_b++;



More information about the Bf-blender-cvs mailing list