Fixing a bug found while checking "[#31937] UV/Image Editor: Copy Mirrored UV Coords...
authorBastien Montagne <montagne29@wanadoo.fr>
Fri, 29 Jun 2012 12:41:39 +0000 (12:41 +0000)
committerBastien Montagne <montagne29@wanadoo.fr>
Fri, 29 Jun 2012 12:41:39 +0000 (12:41 +0000)
The tool works OK, except it was messing vertices' order of polys, often giving ugly results! Now only using sorted list of vertices indices to find matching polys.

release/scripts/startup/bl_operators/mesh.py

index 4ed43a68e4811d02b5d5e4983132d8b16cc31094..51645bfeeabeed6c1a60fc203d470bcf238312b2 100644 (file)
@@ -58,12 +58,9 @@ class MeshMirrorUV(Operator):
         vcos = (v.co.to_tuple(5) for v in mesh.vertices)
 
         for i, co in enumerate(vcos):
-            if co[0] > 0.0:
-                mirror_gt[co] = i
-            elif co[0] < 0.0:
-                mirror_lt[co] = i
-            else:
+            if co[0] >= 0.0:
                 mirror_gt[co] = i
+            if co[0] <= 0.0:
                 mirror_lt[co] = i
 
         #for i, v in enumerate(mesh.vertices):
@@ -97,14 +94,13 @@ class MeshMirrorUV(Operator):
             puvsel[i] = (False not in
                                (uv.select for uv in uv_loops[lstart:lend]))
             # Vert idx of the poly.
-            vidxs[i] = tuple(sorted(l.vertex_index
-                                    for l in loops[lstart:lend]))
+            vidxs[i] = tuple(l.vertex_index for l in loops[lstart:lend])
             # As we have no poly.center yet...
             pcents[i] = tuple(map(lambda x: x / p.loop_total,
                                   map(sum, zip(*(verts[idx].co
                                                  for idx in vidxs[i])))))
             # Preparing next step finding matching polys.
-            mirror_pm[vidxs[i]] = i
+            mirror_pm[tuple(sorted(vidxs[i]))] = i
 
         for i in range(nbr_polys):
             # Find matching mirror poly.