[Bf-extensions-cvs] [8a2907c] master: Overlap Uvs rewritten again.

Eugenio Pignataro noreply at git.blender.org
Sun Jun 22 22:16:40 CEST 2014


Commit: 8a2907c289bbffb53b52a15241bc956fe0f3c2d1
Author: Eugenio Pignataro
Date:   Sun Jun 22 17:16:27 2014 -0300
https://developer.blender.org/rBAC8a2907c289bbffb53b52a15241bc956fe0f3c2d1

Overlap Uvs rewritten again.

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

M	oscurart_tools/oscurart_meshes.py

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

diff --git a/oscurart_tools/oscurart_meshes.py b/oscurart_tools/oscurart_meshes.py
index 609bdc4..0766158 100644
--- a/oscurart_tools/oscurart_meshes.py
+++ b/oscurart_tools/oscurart_meshes.py
@@ -275,32 +275,36 @@ class OscObjectToMesh(bpy.types.Operator):
 ## ----------------------------- OVERLAP UV --------------------------------------------
 
 
-def DefOscOverlapUv(valprecision,scale):
+def DefOscOverlapUv(valpresicion):
     inicio= time.time()
     mode = bpy.context.object.mode
     bpy.ops.object.mode_set(mode='OBJECT', toggle=False)
+
+    rd = valpresicion
     ob = bpy.context.object
-    uvm = ob.data.uv_layers.active
-    redondeo = lambda x : (round(x[0]*scale,valprecision),round(x[1]*scale,valprecision),round(x[2]*scale,valprecision))
-    absol = lambda x : (abs(x[0]),x[1],x[2])
+    absco = lambda x: (abs(round(x[0],rd)),round(x[1],rd),round(x[2],rd))
+    rounder = lambda x: (round(x[0],rd),round(x[1],rd),round(x[2],rd))
 
-    polydict = {redondeo(poly.center[:]) : poly  for poly in ob.data.polygons }
-    vertdict = {redondeo(vert.co[:]) : vert for vert in ob.data.vertices }
+    # vertice a vertex
+    vertvertex = {}
+    for vert in ob.data.loops:
+        vertvertex.setdefault(vert.vertex_index,[]).append(vert.index)
 
-    polyeq = { indice.index : polydict[absol(center)].index for center,indice in polydict.items() if center[0] < 0
-        if polydict.get(absol(center))}
-    verteq = { indice.index : vertdict[absol(co)].index for co,indice in vertdict.items() if co[0] <= 0
-        if vertdict.get(absol(co))}
+    # posicion de cada vertice y cada face 
+    vertloc = { rounder(vert.co[:]) : vert for vert in ob.data.vertices} 
+    faceloc = { rounder(poly.center[:]) : poly for poly in ob.data.polygons} 
 
-    dict = { poly.index : {ob.data.loops[vertex].vertex_index :vertex  for vertex in poly.loop_indices} for poly in ob.data.polygons}
+    # relativo de cada vertice y cada face
+    verteq = {vert : vertloc.get(absco(co),vertloc[co]) for co,vert in vertloc.items() if co[0] <= 0}    
+    polyeq = {face : faceloc.get(absco(center),faceloc[center]) for center,face in faceloc.items() if center[0] <= 0}  
 
-    for poly,data in dict.items():
-        if ob.data.polygons[poly].center.x < 0 and poly in polyeq:
-            for   vertice, vertex in data.items():              
-                if len(dict[poly]) ==  len(dict[polyeq[poly]]) and vertice in verteq : # DEBUG
-                    source, target = dict[poly][vertice] , dict[polyeq[poly]][verteq[vertice]]  
-                    if uvm.data[target].select:
-                        uvm.data[target].uv = uvm.data[source].uv
+    # loops in faces
+    lif = {poly : [i for i in poly.loop_indices] for poly in ob.data.polygons}
+
+    # acomoda
+    for l, r in polyeq.items():
+        for llif,rlif in zip(lif[l],lif[r]):
+            ob.data.uv_layers.active.data[rlif].uv = ob.data.uv_layers.active.data[llif].uv
 
     bpy.ops.object.mode_set(mode=mode, toggle=False) 
    
@@ -313,11 +317,10 @@ class OscOverlapUv(bpy.types.Operator):
     bl_label = "Overlap Uvs"
     bl_options = {"REGISTER", "UNDO"}
     
-    scale = bpy.props.IntProperty(default=100, min=1, name="scale" )
-    precision = bpy.props.IntProperty(default=4, min=1, max=10, name="precision" )
+    presicion = bpy.props.IntProperty(default=4, min=1, max=10, name="precision" )
     
     def execute(self, context):
-        DefOscOverlapUv(self.precision,self.scale)
+        DefOscOverlapUv(self.presicion)
         return {'FINISHED'}
 
 ## ------------------------------- IO VERTEX COLORS --------------------
@@ -410,3 +413,4 @@ class ModalIndexOperator(bpy.types.Operator):
 
 
 
+



More information about the Bf-extensions-cvs mailing list