[Bf-extensions-cvs] [baee8fc] master: Speedup Improves on Resym
Eugenio Pignataro
noreply at git.blender.org
Thu Mar 13 15:24:07 CET 2014
Commit: baee8fcf24792be8845d2b84924c96edf887c42c
Author: Eugenio Pignataro
Date: Thu Mar 13 11:23:48 2014 -0300
https://developer.blender.org/rBACbaee8fcf24792be8845d2b84924c96edf887c42c
Speedup Improves on Resym
===================================================================
M oscurart_tools/oscurart_meshes.py
===================================================================
diff --git a/oscurart_tools/oscurart_meshes.py b/oscurart_tools/oscurart_meshes.py
index 8e08161..f4a38d0 100644
--- a/oscurart_tools/oscurart_meshes.py
+++ b/oscurart_tools/oscurart_meshes.py
@@ -178,88 +178,73 @@ class OscImportVG (bpy.types.Operator):
## ------------------------------------ RESYM MESH--------------------------------------
-def reSymSave (self):
+def reSymSave (self,quality):
- bpy.ops.object.mode_set(mode='EDIT')
-
- BM = bmesh.from_edit_mesh(bpy.context.object.data)
-
- L = {VERT.index : [VERT.co[0],VERT.co[1],VERT.co[2]] for VERT in BM.verts[:] if VERT.co[0] < 0.0001}
- R = {VERT.index : [-VERT.co[0],VERT.co[1],VERT.co[2]] for VERT in BM.verts[:] if VERT.co[0] > -0.0001}
+ bpy.ops.object.mode_set(mode='OBJECT')
- SYMAP = {VERTL : VERTR for VERTR in R for VERTL in L if R[VERTR] == L[VERTL] }
+ object = bpy.context.object
+
+ rdqual = quality
+ rd = lambda x : (round(x[0],rdqual),round(x[1],rdqual),round(x[2],rdqual))
+ absol = lambda x : (abs(x[0]),x[1],x[2])
+
+ inddict = { rd(vert.co[:]) : vert.index for vert in object.data.vertices[:]}
+ reldict = { inddict[vert] : inddict[absol(vert)] for vert in inddict if vert[0] <= 0 }
- FILEPATH=bpy.data.filepath
- ACTIVEFOLDER = os.path.split(FILEPATH)[0]
- ENTFILEPATH= "%s_%s_SYM_TEMPLATE.xml" % (os.path.join(ACTIVEFOLDER, bpy.context.scene.name), bpy.context.object.name)
+ ENTFILEPATH= "%s_%s_SYM_TEMPLATE.xml" % (os.path.join(os.path.dirname(bpy.data.filepath), bpy.context.scene.name), bpy.context.object.name)
with open(ENTFILEPATH ,mode="w") as file:
- file.writelines(str(SYMAP))
- SYMAP.clear()
+ file.writelines(str(reldict))
+ reldict.clear()
def reSymMesh (self, SELECTED, SIDE):
- bpy.ops.object.mode_set(mode='EDIT')
- BM = bmesh.from_edit_mesh(bpy.context.object.data)
- FILEPATH=bpy.data.filepath
- ACTIVEFOLDER = os.path.split(FILEPATH)[0]
- ENTFILEPATH= "%s_%s_SYM_TEMPLATE.xml" % (os.path.join(ACTIVEFOLDER,bpy.context.scene.name), bpy.context.object.name)
+ bpy.ops.object.mode_set(mode='OBJECT')
+ ENTFILEPATH= "%s_%s_SYM_TEMPLATE.xml" % (os.path.join(os.path.dirname(bpy.data.filepath),bpy.context.scene.name), bpy.context.object.name)
with open(ENTFILEPATH ,mode="r") as file:
SYMAP = eval(file.readlines()[0])
- if SIDE == "+-":
- if SELECTED:
- for VERT in SYMAP:
- if BM.verts[SYMAP[VERT]].select:
- if VERT == SYMAP[VERT]:
- BM.verts[VERT].co[0] = 0
- BM.verts[VERT].co[1] = BM.verts[SYMAP[VERT]].co[1]
- BM.verts[VERT].co[2] = BM.verts[SYMAP[VERT]].co[2]
- else:
- BM.verts[VERT].co[0] = -BM.verts[SYMAP[VERT]].co[0]
- BM.verts[VERT].co[1] = BM.verts[SYMAP[VERT]].co[1]
- BM.verts[VERT].co[2] = BM.verts[SYMAP[VERT]].co[2]
- else:
- for VERT in SYMAP:
- if VERT == SYMAP[VERT]:
- BM.verts[VERT].co[0] = 0
- BM.verts[VERT].co[1] = BM.verts[SYMAP[VERT]].co[1]
- BM.verts[VERT].co[2] = BM.verts[SYMAP[VERT]].co[2]
- else:
- BM.verts[VERT].co[0] = -BM.verts[SYMAP[VERT]].co[0]
- BM.verts[VERT].co[1] = BM.verts[SYMAP[VERT]].co[1]
- BM.verts[VERT].co[2] = BM.verts[SYMAP[VERT]].co[2]
- else:
- if SELECTED:
- for VERT in SYMAP:
- if BM.verts[VERT].select:
- if VERT == SYMAP[VERT]:
- BM.verts[SYMAP[VERT]].co[0] = 0
- BM.verts[SYMAP[VERT]].co[1] = BM.verts[VERT].co[1]
- BM.verts[SYMAP[VERT]].co[2] = BM.verts[VERT].co[2]
- else:
- BM.verts[SYMAP[VERT]].co[0] = -BM.verts[VERT].co[0]
- BM.verts[SYMAP[VERT]].co[1] = BM.verts[VERT].co[1]
- BM.verts[SYMAP[VERT]].co[2] = BM.verts[VERT].co[2]
- else:
- for VERT in SYMAP:
- if VERT == SYMAP[VERT]:
- BM.verts[SYMAP[VERT]].co[0] = 0
- BM.verts[SYMAP[VERT]].co[1] = BM.verts[VERT].co[1]
- BM.verts[SYMAP[VERT]].co[2] = BM.verts[VERT].co[2]
- else:
- BM.verts[SYMAP[VERT]].co[0] = -BM.verts[VERT].co[0]
- BM.verts[SYMAP[VERT]].co[1] = BM.verts[VERT].co[1]
- BM.verts[SYMAP[VERT]].co[2] = BM.verts[VERT].co[2]
- bpy.ops.object.mode_set(mode='OBJECT')
- bpy.ops.object.mode_set(mode='EDIT')
- SYMAP.clear()
+ object = bpy.context.object
+ def MAME (SYMAP):
+ if SELECTED:
+ for vert in SYMAP:
+ if object.data.vertices[SYMAP[vert]].select:
+ object.data.vertices[vert].co = (-1*object.data.vertices[SYMAP[vert]].co[0],
+ object.data.vertices[SYMAP[vert]].co[1],
+ object.data.vertices[SYMAP[vert]].co[2])
+ else:
+ for vert in SYMAP:
+ object.data.vertices[vert].co = (-1*object.data.vertices[SYMAP[vert]].co[0],
+ object.data.vertices[SYMAP[vert]].co[1],
+ object.data.vertices[SYMAP[vert]].co[2])
+
+ def MEMA (SYMAP):
+ if SELECTED:
+ for vert in SYMAP:
+ if object.data.vertices[vert].select:
+ object.data.vertices[SYMAP[vert]].co = (-1*object.data.vertices[vert].co[0],
+ object.data.vertices[vert].co[1],
+ object.data.vertices[vert].co[2])
+ else:
+ for vert in SYMAP:
+ object.data.vertices[SYMAP[vert]].co = (-1*object.data.vertices[vert].co[0],
+ object.data.vertices[vert].co[1],
+ object.data.vertices[vert].co[2])
+
+ if SIDE == "+-":
+ MAME(SYMAP)
+ else:
+ MEMA(SYMAP)
+
+
class OscResymSave (bpy.types.Operator):
bl_idname = "mesh.resym_save_map"
bl_label = "Resym save XML Map"
bl_options = {"REGISTER", "UNDO"}
+ quality = bpy.props.IntProperty(default=5, name="Quality")
+
def execute (self, context):
- reSymSave(self)
+ reSymSave(self,self.quality)
return {'FINISHED'}
class OscResymMesh (bpy.types.Operator):
More information about the Bf-extensions-cvs
mailing list