[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [3644] contrib/py/scripts/addons/ oscurart_tools.py: rewrite resym vertex weights
Eugenio Pignataro
info at oscurart.com.ar
Sun Jul 22 02:03:06 CEST 2012
Revision: 3644
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=3644
Author: oscurart
Date: 2012-07-22 00:03:05 +0000 (Sun, 22 Jul 2012)
Log Message:
-----------
rewrite resym vertex weights
Modified Paths:
--------------
contrib/py/scripts/addons/oscurart_tools.py
Modified: contrib/py/scripts/addons/oscurart_tools.py
===================================================================
--- contrib/py/scripts/addons/oscurart_tools.py 2012-07-21 20:38:56 UTC (rev 3643)
+++ contrib/py/scripts/addons/oscurart_tools.py 2012-07-22 00:03:05 UTC (rev 3644)
@@ -156,11 +156,12 @@
col.operator("mesh.normals_outside_osc", icon="SNAP_NORMAL")
colrow=col.row(align=1)
colrow.operator("mesh.resym_save_map", icon="UV_SYNC_SELECT")
- colrow.operator("mesh.resym_mesh", icon="UV_SYNC_SELECT", text="Resym")
colrow=col.row(align=1)
- colrow.operator("mesh.reconst_osc", icon="UV_SYNC_SELECT")
- colrow.operator("mesh.resym_vertex_weights_osc", icon="UV_SYNC_SELECT")
+ colrow.operator("mesh.resym_mesh", icon="UV_SYNC_SELECT", text="Resym Mesh")
+ colrow.operator("mesh.resym_vertex_weights_osc", icon="UV_SYNC_SELECT")
colrow=col.row(align=1)
+ colrow.operator("mesh.reconst_osc", icon="UV_SYNC_SELECT")
+ colrow=col.row(align=1)
colrow.operator("file.export_groups_osc", icon='GROUP_VCOL')
colrow.operator("file.import_groups_osc", icon='GROUP_VCOL')
@@ -1393,125 +1394,60 @@
OBACTIVO = bpy.context.active_object
VGACTIVO = OBACTIVO.vertex_groups.active.index
- MENORESACERO = []
- MAYORESACERO = []
- MENORESACEROYSG = []
+
+ bpy.ops.object.mode_set(mode='EDIT')
+ BM = bmesh.from_edit_mesh(bpy.context.object.data)
+ bpy.ops.mesh.select_all(action='DESELECT')
+ bpy.ops.object.vertex_group_select()
+ SELVER=[VERT.index for VERT in BM.verts[:] if VERT.select]
+
+ if sys.platform.startswith("w"):
+ SYSBAR = "\\"
+ else:
+ SYSBAR = "/"
+
+ FILEPATH=bpy.data.filepath
+ ACTIVEFOLDER=FILEPATH.rpartition(SYSBAR)[0]
+ ENTFILEPATH= "%s%s%s_%s_SYM_TEMPLATE.xml" % (ACTIVEFOLDER, SYSBAR, bpy.context.scene.name, bpy.context.object.name)
+ XML=open(ENTFILEPATH ,mode="r")
+
+ SYMAP = eval(XML.readlines()[0])
+
+ # SUMO LOS VERTICES QUE NO EXISTEN EN EL VG
+ INL = [VERT for VERT in SYMAP if SYMAP[VERT] in SELVER if VERT!= SYMAP[VERT]]
+ bpy.ops.mesh.select_all(action='DESELECT')
- ## LISTA DE LOS VERTICES QUE ESTAN EN GRUPOS
- VERTICESENGRUPOS = [0]
- for vertice in OBACTIVO.data.vertices:
- if len(vertice.groups.items()) > 0:
- VERTICESENGRUPOS.append(vertice.index)
+ for VERT in INL:
+ BM.verts[VERT].select = True
+ bpy.ops.object.vertex_group_assign(new=False)
+
+ # PASO A WEIGHT Y SETEO LOS VALORES
+ bpy.ops.object.mode_set(mode='WEIGHT_PAINT')
+ for VERT in INL:
+ print(VERT)
+ i = 0
+ for GRA in OBACTIVO.data.vertices[SYMAP[VERT]].groups[:]:
+ if GRA.group == VGACTIVO:
+ print (i)
+ EM = i
+ i+=1
+ a = 0
+ for GRA in OBACTIVO.data.vertices[VERT].groups[:]:
+ if GRA.group == VGACTIVO:
+ print (a)
+ REC = a
+ a+=1
+
+ OBACTIVO.data.vertices[VERT].groups[REC].weight = OBACTIVO.data.vertices[SYMAP[VERT]].groups[EM].weight
+
- ## VERTICES MENORES A CERO
- for verticeindex in VERTICESENGRUPOS:
- for indices in OBACTIVO.data.vertices[verticeindex].groups:
- if indices.group == VGACTIVO:
- if bpy.context.active_object.data.vertices[verticeindex].co[0] < 0:
- MENORESACERO.append(bpy.context.active_object.data.vertices[verticeindex].index)
+ XML.close()
+ SYMAP.clear()
+
- ## VERTICES MENORES A CERO Y SIN GRUPO
- for vertice in OBACTIVO.data.vertices:
- if vertice.co[0] < 0:
- MENORESACEROYSG.append(vertice.index)
-
-
- ## VERTICES MAYORES A CERO
- for verticeindex in VERTICESENGRUPOS:
- for indices in OBACTIVO.data.vertices[verticeindex].groups:
- if indices.group == VGACTIVO:
- if bpy.context.active_object.data.vertices[verticeindex].co[0] > 0:
- MAYORESACERO.append(bpy.context.active_object.data.vertices[verticeindex].index)
-
- ## TE MUESTRA LAS LISTAS
- print("-------------VERTICES EN GRUPOS-----------")
- print(VERTICESENGRUPOS)
- print("-------------MENORES A CERO-----------")
- print(MENORESACERO)
- print("-------------MENORES A CERO SIN GRUPO-----------")
- print(MENORESACEROYSG)
- print("-------------MAYORES A CERO-----------")
- print(MAYORESACERO)
-
-
- ## SETEA WORK INDEX
- for vertices in MAYORESACERO:
- for indices in OBACTIVO.data.vertices[vertices].groups:
- if indices.group == VGACTIVO:
- WORKINDEX = indices.group
-
- ## DESELECCIONO COMPONENTES
- bpy.ops.object.mode_set(mode="EDIT",toggle=0)
- bpy.ops.mesh.select_all(action="DESELECT")
- bpy.ops.object.mode_set(mode="OBJECT",toggle=0)
-
-
- ## SETEO GRUPO
- for verticemenor in MENORESACEROYSG:
- for verticemayor in MAYORESACERO:
- if OBACTIVO.data.vertices[verticemenor].co[0] == -OBACTIVO.data.vertices[verticemayor].co[0]:
- if OBACTIVO.data.vertices[verticemenor].co[1] == OBACTIVO.data.vertices[verticemayor].co[1]:
- if OBACTIVO.data.vertices[verticemenor].co[2] == OBACTIVO.data.vertices[verticemayor].co[2]:
- OBACTIVO.data.vertices[verticemenor].select = 1
-
- ## ASSIGNO AL GRUPO
- bpy.ops.object.mode_set(mode="EDIT",toggle=0)
- bpy.ops.object.vertex_group_assign(new=False)
- bpy.ops.mesh.select_all(action="DESELECT")
- bpy.ops.object.mode_set(mode="OBJECT",toggle=0)
-
- ## MODO PINTURA
- bpy.ops.object.mode_set(mode="WEIGHT_PAINT", toggle=0)
-
-
- ##--------->> VUELVO A CREAR GRUPOS YA QUE LOS INDICES CAMBIARON
- MENORESACERO = []
- MAYORESACERO = []
-
-
- ## LISTA DE LOS VERTICES QUE ESTAN EN GRUPOS
- VERTICESENGRUPOS=[0]
- for vertice in OBACTIVO.data.vertices:
- if len(vertice.groups.items()) > 0:
- VERTICESENGRUPOS.append(vertice.index)
-
-
- ## VERTICES MENORES A CERO
- for verticeindex in VERTICESENGRUPOS:
- for indices in OBACTIVO.data.vertices[verticeindex].groups:
- if indices.group == VGACTIVO:
- if bpy.context.active_object.data.vertices[verticeindex].co[0] < 0:
- MENORESACERO.append(bpy.context.active_object.data.vertices[verticeindex].index)
-
-
-
- ## VERTICES MAYORES A CERO
- for verticeindex in VERTICESENGRUPOS:
- for indices in OBACTIVO.data.vertices[verticeindex].groups:
- if indices.group == VGACTIVO:
- if bpy.context.active_object.data.vertices[verticeindex].co[0] > 0:
- MAYORESACERO.append(bpy.context.active_object.data.vertices[verticeindex].index)
-
-
- ## SETEO WEIGHT
- for verticemenor in MENORESACERO:
- for verticemayor in MAYORESACERO:
- if OBACTIVO.data.vertices[verticemenor].co[0] == -OBACTIVO.data.vertices[verticemayor].co[0]:
- if OBACTIVO.data.vertices[verticemenor].co[1] == OBACTIVO.data.vertices[verticemayor].co[1]:
- if OBACTIVO.data.vertices[verticemenor].co[2] == OBACTIVO.data.vertices[verticemayor].co[2]:
- VARINMAY = 0
- VARINMEN = 0
- while OBACTIVO.data.vertices[verticemayor].groups[VARINMAY].group != VGACTIVO:
- VARINMAY = VARINMAY+1
- while OBACTIVO.data.vertices[verticemenor].groups[VARINMEN].group != VGACTIVO:
- VARINMEN = VARINMEN+1
- ##print("Varinmay: "+str(VARINMAY)+" .Varinmen "+str(VARINMEN))
- OBACTIVO.data.vertices[verticemenor].groups[VARINMEN].weight = OBACTIVO.data.vertices[verticemayor].groups[VARINMAY].weight
-
-
- print("===============(TERMINADO)=============")
+ print("===============(JOB DONE)=============")
return {'FINISHED'}
More information about the Bf-extensions-cvs
mailing list