diff options
Diffstat (limited to 'oscurart_tools/oscurart_meshes.py')
-rw-r--r-- | oscurart_tools/oscurart_meshes.py | 126 |
1 files changed, 63 insertions, 63 deletions
diff --git a/oscurart_tools/oscurart_meshes.py b/oscurart_tools/oscurart_meshes.py index a31e1a57..1dce40f4 100644 --- a/oscurart_tools/oscurart_meshes.py +++ b/oscurart_tools/oscurart_meshes.py @@ -354,32 +354,32 @@ def DefOscOverlapUv(self,offset,rotate): bm.faces.ensure_lookup_table() faces = [face for face in bm.faces if face.select] uv_layer = bm.loops.layers.uv[bpy.context.object.data.uv_layers.active.name] - + faceDict = {} faceReverse = [] bm.select_mode = {'FACE'} for face in faces: - bpy.ops.mesh.select_all(action="DESELECT") + bpy.ops.mesh.select_all(action="DESELECT") face.select = True bpy.ops.mesh.select_mirror() faceDict[face.index] = [mirrorface for mirrorface in bm.faces if mirrorface.select][0].index faceReverse.append([mirrorface for mirrorface in bm.faces if mirrorface.select][0]) - - - - for selFace,mirrorFace in faceDict.items(): - for loop,mirrorLoop in zip(bm.faces[selFace].loops,bm.faces[mirrorFace].loops): - mirrorLoop.copy_from(loop) - if offset: - for loop,mirrorLoop in zip(bm.faces[selFace].loops,bm.faces[mirrorFace].loops): - mirrorLoop[uv_layer].uv += Vector((1,0)) - - - #invierto direcciones + + + + for selFace,mirrorFace in faceDict.items(): + for loop,mirrorLoop in zip(bm.faces[selFace].loops,bm.faces[mirrorFace].loops): + mirrorLoop.copy_from(loop) + if offset: + for loop,mirrorLoop in zip(bm.faces[selFace].loops,bm.faces[mirrorFace].loops): + mirrorLoop[uv_layer].uv += Vector((1,0)) + + + #invierto direcciones bmesh.ops.reverse_uvs(bm, faces=[f for f in faceReverse]) - bmesh.ops.rotate_uvs(bm, faces=[f for f in faceReverse]) + bmesh.ops.rotate_uvs(bm, faces=[f for f in faceReverse]) if rotate: - bmesh.ops.rotate_uvs(bm, faces=[f for f in faceReverse]) + bmesh.ops.rotate_uvs(bm, faces=[f for f in faceReverse]) bmesh.update_edit_mesh(me) @@ -566,41 +566,41 @@ def defCopyUvsIsland(self, context): for li in poly.loop_indices: obLoop.append(li) - bpy.ops.object.mode_set(mode="EDIT") - + bpy.ops.object.mode_set(mode="EDIT") + def defPasteUvsIsland(self, uvOffset, rotateUv,context): bpy.ops.object.mode_set(mode="OBJECT") selPolys = [poly.index for poly in bpy.context.object.data.polygons if poly.select] - + for island in selPolys: - bpy.ops.object.mode_set(mode="EDIT") - bpy.ops.mesh.select_all(action="DESELECT") - bpy.ops.object.mode_set(mode="OBJECT") + bpy.ops.object.mode_set(mode="EDIT") + bpy.ops.mesh.select_all(action="DESELECT") + bpy.ops.object.mode_set(mode="OBJECT") bpy.context.object.data.polygons[island].select = True - bpy.ops.object.mode_set(mode="EDIT") + bpy.ops.object.mode_set(mode="EDIT") bpy.ops.mesh.select_linked() - bpy.ops.object.mode_set(mode="OBJECT") + bpy.ops.object.mode_set(mode="OBJECT") TobLoop = [] TislandFaces = [] for poly in bpy.context.object.data.polygons: if poly.select: TislandFaces.append(poly.index) for li in poly.loop_indices: - TobLoop.append(li) + TobLoop.append(li) for source,target in zip(range(min(obLoop),max(obLoop)+1),range(min(TobLoop),max(TobLoop)+1)): bpy.context.object.data.uv_layers.active.data[target].uv = bpy.context.object.data.uv_layers.active.data[source].uv + Vector((uvOffset,0)) - - bpy.ops.object.mode_set(mode="EDIT") - + + bpy.ops.object.mode_set(mode="EDIT") + if rotateUv: - bpy.ops.object.mode_set(mode="OBJECT") + bpy.ops.object.mode_set(mode="OBJECT") for poly in selPolys: bpy.context.object.data.polygons[poly].select = True bpy.ops.object.mode_set(mode="EDIT") bm = bmesh.from_edit_mesh(bpy.context.object.data) bmesh.ops.reverse_uvs(bm, faces=[f for f in bm.faces if f.select]) - bmesh.ops.rotate_uvs(bm, faces=[f for f in bm.faces if f.select]) + bmesh.ops.rotate_uvs(bm, faces=[f for f in bm.faces if f.select]) #bmesh.update_edit_mesh(bpy.context.object.data, tessface=False, destructive=False) @@ -620,22 +620,22 @@ class CopyUvIsland(Operator): def execute(self, context): defCopyUvsIsland(self, context) return {'FINISHED'} - + class PasteUvIsland(Operator): """Paste Uv Island""" bl_idname = "mesh.uv_island_paste" bl_label = "Paste Uv Island" bl_options = {"REGISTER", "UNDO"} - + uvOffset = BoolProperty( name="Uv Offset", default=False - ) + ) rotateUv = BoolProperty( name="Rotate Uv Corner", default=False - ) + ) @classmethod def poll(cls, context): return (context.active_object is not None and @@ -644,22 +644,22 @@ class PasteUvIsland(Operator): def execute(self, context): defPasteUvsIsland(self, self.uvOffset, self.rotateUv, context) - return {'FINISHED'} - - + return {'FINISHED'} + + class createEditMultimesh(Operator): """Create Edit Multi Mesh""" bl_idname = "mesh.create_edit_multimesh" bl_label = "Create edit multimesh" bl_options = {"REGISTER", "UNDO"} - - + + # creo el merge para editar - def execute(self,context): + def execute(self,context): global relvert - global me - global ob + global me + global ob temp = [[ob , [vert.co for vert in ob.data.vertices]]for ob in bpy.data.groups[bpy.context.scene.multimeshedit].objects] vi = 0 pi = 0 @@ -670,10 +670,10 @@ class createEditMultimesh(Operator): objectMatrix = ob[0].matrix_world.copy() for vert in ob[0].data.vertices: vertlist.append(objectMatrix*vert.co) - for poly in ob[0].data.polygons: + for poly in ob[0].data.polygons: polylist.append(tuple([vert+vi for vert in poly.vertices[:]])) relvert[ob[0]] = {vert.index:vert.index+vi for vert in ob[0].data.vertices} - vi += len(ob[0].data.vertices) + vi += len(ob[0].data.vertices) ob[0].hide = 1 me = bpy.data.meshes.new("editMesh") ob = bpy.data.objects.new("editMesh", me) @@ -682,7 +682,7 @@ class createEditMultimesh(Operator): bpy.ops.object.select_all(action="DESELECT") bpy.context.scene.objects.active = ob bpy.ops.object.mode_set(mode='EDIT', toggle=False) - return {'FINISHED'} + return {'FINISHED'} class ApplyEditMultimesh(Operator): @@ -690,17 +690,17 @@ class ApplyEditMultimesh(Operator): bl_idname = "mesh.apply_edit_multimesh" bl_label = "Apply edit multimesh" bl_options = {"REGISTER", "UNDO"} - - def execute(self,context): + + def execute(self,context): bpy.ops.object.mode_set(mode='OBJECT', toggle=False) for object,rv in relvert.items(): objectMatrix = object.matrix_world.inverted().copy() for source, target in rv.items(): object.data.vertices[source].co = objectMatrix * me.vertices[target].co - object.hide = 0 - bpy.context.scene.objects.unlink(ob) - return {'FINISHED'} - + object.hide = 0 + bpy.context.scene.objects.unlink(ob) + return {'FINISHED'} + # -------------------------VERTEX COLOR MASK---------------------------------- @@ -719,10 +719,10 @@ class resymVertexGroups(Operator): obj = bpy.context.active_object mesh= obj.data - bpy.ops.object.mode_set(mode='EDIT', toggle=False) - bpy.ops.mesh.select_all(action="DESELECT") + bpy.ops.object.mode_set(mode='EDIT', toggle=False) + bpy.ops.mesh.select_all(action="DESELECT") - bm = bmesh.from_edit_mesh(mesh) + bm = bmesh.from_edit_mesh(mesh) bm.faces.ensure_lookup_table() islands = [] @@ -730,24 +730,24 @@ class resymVertexGroups(Operator): try: color_layer = bm.loops.layers.color["RGBMask"] - except: + except: color_layer = bm.loops.layers.color.new("RGBMask") while faces: - faces[0].select_set(True) - bpy.ops.mesh.select_linked() + faces[0].select_set(True) + bpy.ops.mesh.select_linked() islands.append([f for f in faces if f.select]) - bpy.ops.mesh.hide(unselected=False) - faces = [f for f in bm.faces if not f.hide] + bpy.ops.mesh.hide(unselected=False) + faces = [f for f in bm.faces if not f.hide] bpy.ops.mesh.reveal() for island in islands: - color = (uniform(0,1),uniform(0,1),uniform(0,1),1) + color = (uniform(0,1),uniform(0,1),uniform(0,1),1) for face in island: for loop in face.loops: - loop[color_layer] = color - + loop[color_layer] = color + bpy.ops.object.mode_set(mode="VERTEX_PAINT") - return {'FINISHED'}
\ No newline at end of file + return {'FINISHED'} |