[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [2828] trunk/py/scripts/addons/ animation_add_corrective_shape_key.py: update for column major matrix's

Campbell Barton ideasman42 at gmail.com
Sat Dec 31 06:03:51 CET 2011


Revision: 2828
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=2828
Author:   campbellbarton
Date:     2011-12-31 05:03:35 +0000 (Sat, 31 Dec 2011)
Log Message:
-----------
update for column major matrix's

Modified Paths:
--------------
    trunk/py/scripts/addons/animation_add_corrective_shape_key.py

Modified: trunk/py/scripts/addons/animation_add_corrective_shape_key.py
===================================================================
--- trunk/py/scripts/addons/animation_add_corrective_shape_key.py	2011-12-31 04:31:00 UTC (rev 2827)
+++ trunk/py/scripts/addons/animation_add_corrective_shape_key.py	2011-12-31 05:03:35 UTC (rev 2828)
@@ -24,10 +24,10 @@
     "api": 36157,
     'location': 'Object Data > Shape Keys (Search: corrective) ',
     'description': 'Creates a corrective shape key for the current pose',
-    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.5/Py/"\
-        "Scripts/Animation/Corrective_Shape_Key",
-    "tracker_url": "https://projects.blender.org/tracker/index.php?"\
-        "func=detail&aid=22129",
+    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
+                "Scripts/Animation/Corrective_Shape_Key",
+    "tracker_url": "https://projects.blender.org/tracker/index.php?"
+                   "func=detail&aid=22129",
     'category': 'Animation'}
 
 """
@@ -51,33 +51,16 @@
 
 
 import bpy
-import mathutils
+from mathutils import Vector, Matrix
 
 
 iterations = 20
 threshold = 1e-16
 
 def reset_transform(ob):
-    m = mathutils.Matrix()
+    m = Matrix()
     ob.matrix_local = m 
 
-# flips rotation matrix
-def flip_matrix_direction(m):
-    mat = mathutils.Matrix()
-    
-    mat[0][0] = m[0][0]
-    mat[0][1] = m[1][0]
-    mat[0][2] = m[2][0]
-    
-    mat[1][0] = m[0][1]
-    mat[1][1] = m[1][1]
-    mat[1][2] = m[2][1]
-    
-    mat[2][0] = m[0][2]
-    mat[2][1] = m[1][2]
-    mat[2][2] = m[2][2]
-    
-    return mat 
 
 # this version is for shape_key data
 def extractX(ob, mesh):
@@ -85,7 +68,7 @@
     
     for i in range(0, len(mesh)):
         v = mesh[i]
-        x += [mathutils.Vector(v.co)]
+        x += [v.co.copy()]
     
     return x
 
@@ -95,7 +78,7 @@
     
     for i in range(0, len(mesh.vertices)):
         v = mesh.vertices[i]
-        x += [mathutils.Vector(v.co)]
+        x += [v.co.copy()]
     
     return x
 
@@ -110,7 +93,7 @@
     # to be at the end of the vertex array
     for i in range(len(mesh.vertices)-totvert, len(mesh.vertices)):
         v = mesh.vertices[i]
-        x += [mathutils.Vector(v.co)]
+        x += [v.co.copy()]
 
     mesh.user_clear()
     bpy.data.meshes.remove(mesh)    
@@ -177,12 +160,12 @@
             if epsilon < threshold:
                 epsilon = 0.0
             
-            dx[0] += [x[i] + 0.5 * epsilon * mathutils.Vector((1, 0, 0))]
-            dx[1] += [x[i] + 0.5 * epsilon * mathutils.Vector((-1, 0, 0))]
-            dx[2] += [x[i] + 0.5 * epsilon * mathutils.Vector((0, 1, 0))]
-            dx[3] += [x[i] + 0.5 * epsilon * mathutils.Vector((0, -1, 0))]
-            dx[4] += [x[i] + 0.5 * epsilon * mathutils.Vector((0, 0, 1))]
-            dx[5] += [x[i] + 0.5 * epsilon * mathutils.Vector((0, 0, -1))]
+            dx[0] += [x[i] + 0.5 * epsilon * Vector((1, 0, 0))]
+            dx[1] += [x[i] + 0.5 * epsilon * Vector((-1, 0, 0))]
+            dx[2] += [x[i] + 0.5 * epsilon * Vector((0, 1, 0))]
+            dx[3] += [x[i] + 0.5 * epsilon * Vector((0, -1, 0))]
+            dx[4] += [x[i] + 0.5 * epsilon * Vector((0, 0, 1))]
+            dx[5] += [x[i] + 0.5 * epsilon * Vector((0, 0, -1))]
     
         for j in range(0, 6):
             applyX(ob_1, mesh_1_key_verts, dx[j])
@@ -196,9 +179,7 @@
                 Gx = list((dx[0][i] - dx[1][i]) / epsilon)
                 Gy = list((dx[2][i] - dx[3][i]) / epsilon)
                 Gz = list((dx[4][i] - dx[5][i]) / epsilon)
-                G = mathutils.Matrix((Gx, Gy, Gz))
-                G = flip_matrix_direction(G)
-    
+                G = Matrix((Gx, Gy, Gz))
                 x[i] += G * (targetx[i] - mapx[i])
         
         applyX(ob_1, mesh_1_key_verts, x )
@@ -269,39 +250,12 @@
                 n.select = True
         return {'FINISHED'}
 
-
-
-
-def flip_matrix_direction_4x4(m):
-    mat = mathutils.Matrix()
     
-    mat[0][0] = m[0][0]
-    mat[0][1] = m[1][0]
-    mat[0][2] = m[2][0]
-    mat[0][3] = m[3][0]
-    
-    mat[1][0] = m[0][1]
-    mat[1][1] = m[1][1]
-    mat[1][2] = m[2][1]
-    mat[1][3] = m[3][1]
-    
-    mat[2][0] = m[0][2]
-    mat[2][1] = m[1][2]
-    mat[2][2] = m[2][2]
-    mat[2][3] = m[3][2]
-    
-    mat[3][0] = m[0][3]
-    mat[3][1] = m[1][3]
-    mat[3][2] = m[2][3]
-    mat[3][3] = m[3][3]
-    return mat 
-
-    
 def unposeMesh(meshObToUnpose, meshObToUnposeWeightSrc, armatureOb):
     psdMeshData = meshObToUnpose
 
     psdMesh = psdMeshData
-    I = mathutils.Matrix() #identity matrix
+    I = Matrix() #identity matrix
     
     meshData = meshObToUnposeWeightSrc.data
     mesh = meshData
@@ -345,9 +299,11 @@
                 weightedAverageDictionary[pair[0]] = pair[1]/totalWeight
             else:
                 weightedAverageDictionary[pair[0]] = 0
-                
-        sigma = mathutils.Matrix(I-I) #Matrix filled with zeros
-        
+
+        # Matrix filled with zeros
+        sigma = Matrix()
+        sigma.zero()
+
         list = []
         for n in pbones:
             list.append(n)
@@ -358,7 +314,7 @@
                 #~ print("found key %s", pbone.name)
                 vertexWeight = weightedAverageDictionary[pbone.name]
                 m = pbone.matrix_channel.copy()
-                #m = flip_matrix_direction_4x4(m)
+                #m.transpose()
                 sigma += (m - I) * vertexWeight
                 
             else:



More information about the Bf-extensions-cvs mailing list