[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [3647] contrib/py/scripts/addons/ oscurart_tools.py: rewrite shapes layout tool

Eugenio Pignataro info at oscurart.com.ar
Tue Jul 24 04:40:25 CEST 2012


Revision: 3647
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=3647
Author:   oscurart
Date:     2012-07-24 02:40:20 +0000 (Tue, 24 Jul 2012)
Log Message:
-----------
rewrite shapes layout tool

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-23 18:09:20 UTC (rev 3646)
+++ contrib/py/scripts/addons/oscurart_tools.py	2012-07-24 02:40:20 UTC (rev 3647)
@@ -427,232 +427,134 @@
     bl_options = {"REGISTER", "UNDO"}
     def execute(self, context):
 
-
         SEL_OBJ= bpy.context.active_object
-        LISTA_KEYS = bpy.context.active_object.data.shape_keys.key_blocks[:]
-
+        LISTA_KEYS = bpy.context.active_object.data.shape_keys.key_blocks[1:]
+        
+        
         ##MODOS
         EDITMODE = "bpy.ops.object.mode_set(mode='EDIT')"
         OBJECTMODE = "bpy.ops.object.mode_set(mode='OBJECT')"
         POSEMODE = "bpy.ops.object.mode_set(mode='POSE')"
-
+        
         ##INDICE DE DRIVERS
         varindex = 0
-
+        
         ##CREA NOMBRES A LA ARMATURE
         amt = bpy.data.armatures.new("ArmatureData")
         ob = bpy.data.objects.new("RIG_LAYOUT_"+SEL_OBJ.name, amt)
-
+        
         ##LINK A LA ESCENA
         scn = bpy.context.scene
         scn.objects.link(ob)
         scn.objects.active = ob
         ob.select = True
-
-
-        eval(EDITMODE)
+        
+        
+        
         gx = 0
         gy = 0
-
-
-        for keyblock in LISTA_KEYS:
-            print("KEYBLOCK EN CREACION DE HUESOS "+keyblock.name)
-
-
+        
+        
+        for keyblock in LISTA_KEYS:    
             if keyblock.name[-2:] != "_L":
-                if keyblock.name[-2:] != "_R":
-
+                if keyblock.name[-2:] != "_R":  
+                    
+                    
+                    
+                    ## OBJETO ACTIVO
+                    scn.objects.active = ob
+                    eval(EDITMODE)
+                      
                     ##CREA HUESOS
-
                     bone = amt.edit_bones.new(keyblock.name)
                     bone.head = (gx,0,0)
                     bone.tail = (gx,0,1)
-                    gx = gx+2.2
-                    bone = amt.edit_bones.new(keyblock.name+"_CTRL")
-                    bone.head = (gy,0,0)
-                    bone.tail = (gy,0,0.2)
-                    gy = gy+2.2
-
-                    ##SETEA ARMATURE ACTIVA
-                    bpy.context.scene.objects.active = bpy.data.objects["RIG_LAYOUT_"+SEL_OBJ.name]
-                    bpy.data.objects["RIG_LAYOUT_"+SEL_OBJ.name].select = 1
-                    ##DESELECCIONA (modo edit)
-                    eval(EDITMODE)
-                    bpy.ops.armature.select_all(action="DESELECT")
-
-                    ##EMPARENTA HUESOS
-
-                    ##HUESO ACTIVO
-                    eval(OBJECTMODE)
-                    bpy.data.objects["RIG_LAYOUT_"+SEL_OBJ.name].data.bones.active = bpy.data.objects["RIG_LAYOUT_"+SEL_OBJ.name].data.bones[keyblock.name]
-                    ##MODO EDIT
-                    eval(EDITMODE)
-                    ##DESELECCIONA (modo edit)
-                    bpy.ops.armature.select_all(action="DESELECT")
-                    ##MODO OBJECT
-                    eval(OBJECTMODE)
-                    ##SELECCIONA UN HUESO
-                    bpy.data.objects["RIG_LAYOUT_"+SEL_OBJ.name].data.bones[keyblock.name+"_CTRL"].select = 1
-                    eval(EDITMODE)
-                    ##EMPARENTA
-                    bpy.ops.armature.parent_set(type="OFFSET")
-                    ##DESELECCIONA (modo edit)
-                    bpy.ops.armature.select_all(action="DESELECT")
-
-                    ##LE HAGO UNA VARIABLE DE PLACEBO
-                    keyblock.driver_add("value")
-                    SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.expression = "var+var_001"
-                    SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables.new()
-                    SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables.new()
-
-
-                    varindex = varindex + 1
-
-
-        for keyblock in LISTA_KEYS:
-            print("KEYBLOCK SEGUNDA VUELTA :"+keyblock.name)
-
-            if keyblock.name[-2:] == "_L":
-                print("igual a L")
-
-                ##CREA DRIVERS Y LOS CONECTA
-                keyblock.driver_add("value")
-                keyblock.driver_add("value")
-
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.expression = "var+var_001"
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables.new()
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables.new()
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables['var'].targets[0].id = bpy.data.objects["RIG_LAYOUT_"+SEL_OBJ.name]
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables['var'].targets[0].bone_target = bpy.data.objects["RIG_LAYOUT_"+SEL_OBJ.name].data.bones[(keyblock.name[:-2])+"_CTRL"].name
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables['var'].type = 'TRANSFORMS'
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables['var'].targets[0].transform_space = "LOCAL_SPACE"
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables['var'].targets[0].transform_type = "LOC_X"
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables['var_001'].targets[0].id = bpy.data.objects["RIG_LAYOUT_"+SEL_OBJ.name]
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables['var_001'].targets[0].bone_target = bpy.data.objects["RIG_LAYOUT_"+SEL_OBJ.name].data.bones[(keyblock.name[:-2])+"_CTRL"].name
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables['var_001'].type = 'TRANSFORMS'
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables['var_001'].targets[0].transform_space = "LOCAL_SPACE"
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables['var_001'].targets[0].transform_type = "LOC_Y"
-
-
-                varindex = varindex + 1
-
-
-
-            if keyblock.name[-2:] == "_R":
-                print("igual a R")
-
-                ##CREA DRIVERS Y LOS CONECTA
-                keyblock.driver_add("value")
-                keyblock.driver_add("value")
-
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.expression = "-var+var_001"
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables.new()
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables.new()
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables['var'].targets[0].id = bpy.data.objects["RIG_LAYOUT_"+SEL_OBJ.name]
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables['var'].targets[0].bone_target = bpy.data.objects["RIG_LAYOUT_"+SEL_OBJ.name].data.bones[(keyblock.name[:-2])+"_CTRL"].name
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables['var'].type = 'TRANSFORMS'
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables['var'].targets[0].transform_space = "LOCAL_SPACE"
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables['var'].targets[0].transform_type = "LOC_X"
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables['var_001'].targets[0].id = bpy.data.objects["RIG_LAYOUT_"+SEL_OBJ.name]
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables['var_001'].targets[0].bone_target = bpy.data.objects["RIG_LAYOUT_"+SEL_OBJ.name].data.bones[(keyblock.name[:-2])+"_CTRL"].name
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables['var_001'].type = 'TRANSFORMS'
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables['var_001'].targets[0].transform_space = "LOCAL_SPACE"
-                SEL_OBJ.data.shape_keys.animation_data.drivers[varindex].driver.variables['var_001'].targets[0].transform_type = "LOC_Y"
-
-                varindex = varindex + 1
-
-
-
-        ## CREO DATA PARA SLIDERS
-
-        ## creo data para los contenedores
-        verticess = [(-1,1,0),(1,1,0),(1,-1,0),(-1,-1,0)]
-        edgess = [(0,1),(1,2),(2,3),(3,0)]
-
-        mesh = bpy.data.meshes.new(keyblock.name+"_data_container")
-        object = bpy.data.objects.new("GRAPHIC_CONTAINER", mesh)
-        bpy.context.scene.objects.link(object)
-        mesh.from_pydata(verticess,edgess,[])
-
-        ## PONGO LOS LIMITES Y SETEO ICONOS
-        for keyblock in LISTA_KEYS:
-            print("KEYBLOCK EN CREACION DE HUESOS "+keyblock.name)
-
-
-            if keyblock.name[-2:] != "_L":
-                if keyblock.name[-2:] != "_R":
+                    
+                    bonectrl = amt.edit_bones.new(keyblock.name+"_CTRL")
+                    bonectrl.head = (gy,0,0)
+                    bonectrl.tail = (gy,0,0.2)
+        
+            
+                    ##EMPARENTA HUESOS             
+                    ## EMPARENTO
+                    ob.data.edit_bones[bonectrl.name].parent = ob.data.edit_bones[bone.name]                         
+                    bpy.context.scene.objects.active = ob
+                    
+                    for SIDE in ["L","R"]:
+                        ##LE HAGO UNA VARIABLE
+                        DR = SEL_OBJ.data.shape_keys.key_blocks[keyblock.name+"_"+SIDE].driver_add("value")
+                        if SIDE == "L":
+                            DR.driver.expression = "var+var_001"
+                        else:
+                            DR.driver.expression = "-var+var_001"    
+                        VAR1 = DR.driver.variables.new()
+                        VAR2 = DR.driver.variables.new()
+            
+                        VAR1.targets[0].id = ob
+                        VAR1.type = 'TRANSFORMS'
+                        VAR1.targets[0].bone_target = bonectrl.name      
+                        VAR1.targets[0].transform_space = "LOCAL_SPACE"
+                        VAR1.targets[0].transform_type = "LOC_X"
+                        VAR2.targets[0].id = ob

@@ Diff output truncated at 10240 characters. @@


More information about the Bf-extensions-cvs mailing list