[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [2074] trunk/py/scripts/addons/rigify/ generate.py: Rigify: fixed bug where generating failed on metarig with no animation data.

Nathan Vegdahl cessen at cessen.com
Wed Jun 29 00:47:45 CEST 2011


Revision: 2074
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=2074
Author:   cessen
Date:     2011-06-28 22:47:44 +0000 (Tue, 28 Jun 2011)
Log Message:
-----------
Rigify: fixed bug where generating failed on metarig with no animation data.

Modified Paths:
--------------
    trunk/py/scripts/addons/rigify/generate.py

Modified: trunk/py/scripts/addons/rigify/generate.py
===================================================================
--- trunk/py/scripts/addons/rigify/generate.py	2011-06-28 20:00:43 UTC (rev 2073)
+++ trunk/py/scripts/addons/rigify/generate.py	2011-06-28 22:47:44 UTC (rev 2074)
@@ -168,45 +168,46 @@
                     con2.target = obj
 
     # Copy drivers
-    for d1 in metarig.animation_data.drivers:
-        d2 = obj.driver_add(d1.data_path)
-        copy_attributes(d1, d2)
-        copy_attributes(d1.driver, d2.driver)
+    if metarig.animation_data:
+        for d1 in metarig.animation_data.drivers:
+            d2 = obj.driver_add(d1.data_path)
+            copy_attributes(d1, d2)
+            copy_attributes(d1.driver, d2.driver)
 
-        # Remove default modifiers, variables, etc.
-        for m in d2.modifiers:
-            d2.modifiers.remove(m)
-        for v in d2.driver.variables:
-            d2.driver.variables.remove(v)
+            # Remove default modifiers, variables, etc.
+            for m in d2.modifiers:
+                d2.modifiers.remove(m)
+            for v in d2.driver.variables:
+                d2.driver.variables.remove(v)
 
-        # Copy modifiers
-        for m1 in d1.modifiers:
-            m2 = d2.modifiers.new(type=m1.type)
-            copy_attributes(m1, m2)
+            # Copy modifiers
+            for m1 in d1.modifiers:
+                m2 = d2.modifiers.new(type=m1.type)
+                copy_attributes(m1, m2)
 
-        # Copy variables
-        for v1 in d1.driver.variables:
-            v2 = d2.driver.variables.new()
-            copy_attributes(v1, v2)
-            for i in range(len(v1.targets)):
-                copy_attributes(v1.targets[i], v2.targets[i])
-                # Switch metarig targets to rig targets
-                if v2.targets[i].id == metarig:
-                    v2.targets[i].id = obj
+            # Copy variables
+            for v1 in d1.driver.variables:
+                v2 = d2.driver.variables.new()
+                copy_attributes(v1, v2)
+                for i in range(len(v1.targets)):
+                    copy_attributes(v1.targets[i], v2.targets[i])
+                    # Switch metarig targets to rig targets
+                    if v2.targets[i].id == metarig:
+                        v2.targets[i].id = obj
 
-                # Mark targets that may need to be altered after rig generation
-                tar = v2.targets[i]
-                # If a custom property
-                if v2.type == 'SINGLE_PROP' \
-                and re.match('^pose.bones\["[^"\]]*"\]\["[^"\]]*"\]$', tar.data_path):
-                    tar.data_path = "RIGIFY-" + tar.data_path
+                    # Mark targets that may need to be altered after rig generation
+                    tar = v2.targets[i]
+                    # If a custom property
+                    if v2.type == 'SINGLE_PROP' \
+                    and re.match('^pose.bones\["[^"\]]*"\]\["[^"\]]*"\]$', tar.data_path):
+                        tar.data_path = "RIGIFY-" + tar.data_path
 
-        # Copy key frames
-        for i in range(len(d1.keyframe_points)):
-            d2.keyframe_points.add()
-            k1 = d1.keyframe_points[i]
-            k2 = d2.keyframe_points[i]
-            copy_attributes(k1, k2)
+            # Copy key frames
+            for i in range(len(d1.keyframe_points)):
+                d2.keyframe_points.add()
+                k1 = d1.keyframe_points[i]
+                k2 = d2.keyframe_points[i]
+                copy_attributes(k1, k2)
 
     t.tick("Duplicate rig: ")
     #----------------------------------



More information about the Bf-extensions-cvs mailing list