[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25244] trunk/blender/release/scripts/ modules/rigify/__init__.py: if bone type root is defined, all new parentless bones become children of it

Campbell Barton ideasman42 at gmail.com
Wed Dec 9 16:13:03 CET 2009


Revision: 25244
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25244
Author:   campbellbarton
Date:     2009-12-09 16:13:03 +0100 (Wed, 09 Dec 2009)

Log Message:
-----------
if bone type root is defined, all new parentless bones become children of it

Modified Paths:
--------------
    trunk/blender/release/scripts/modules/rigify/__init__.py

Modified: trunk/blender/release/scripts/modules/rigify/__init__.py
===================================================================
--- trunk/blender/release/scripts/modules/rigify/__init__.py	2009-12-09 14:37:26 UTC (rev 25243)
+++ trunk/blender/release/scripts/modules/rigify/__init__.py	2009-12-09 15:13:03 UTC (rev 25244)
@@ -414,6 +414,9 @@
 
     # original name mapping
     base_names = {}
+    
+    # add all new parentless children to this bone
+    root_bone = None
 
     bpy.ops.object.mode_set(mode='EDIT')
     for bone in arm.edit_bones:
@@ -444,6 +447,12 @@
             del pbone["type"]
         else:
             bone_type_list = []
+            
+        if bone_type_list == ["root"]: # special case!
+            if root_bone:
+                raise Exception("cant have more then 1 root bone, found '%s' and '%s' to have type==root" % (root_bone, bone_name))
+            root_bone = bone_name
+            bone_type_list[:] = []
 
         for bone_type in bone_type_list:
             
@@ -516,6 +525,17 @@
             if len(result_submod) == 2:
                 blend_bone_list(obj, definition, result_submod[0], result_submod[1], target_bone=bone_name)
 
+    if root_bone:
+        # assign all new parentless bones to this
+        
+        bpy.ops.object.mode_set(mode='EDIT')
+        root_ebone = arm.edit_bones[root_bone]
+        for ebone in arm.edit_bones:
+            if ebone.parent is None and ebone.name not in base_names:
+                ebone.connected = False
+                ebone.parent = root_ebone
+        bpy.ops.object.mode_set(mode='OBJECT')
+        
 
     if META_DEF:
         # for pbone in obj_def.pose.bones:





More information about the Bf-blender-cvs mailing list