Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2009-12-09 18:13:03 +0300
committerCampbell Barton <ideasman42@gmail.com>2009-12-09 18:13:03 +0300
commitdaf043b3fea6e8c8c3430d0055a8e3a721a0770a (patch)
tree2e9edc50a0cc0784b621b40e5b00c4bb657b3f80
parentf54776b1a677a8650cf3c18111643c0379c51724 (diff)
if bone type root is defined, all new parentless bones become children of it
-rw-r--r--release/scripts/modules/rigify/__init__.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py
index c40efce3d75..af345b5e546 100644
--- a/release/scripts/modules/rigify/__init__.py
+++ b/release/scripts/modules/rigify/__init__.py
@@ -414,6 +414,9 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True):
# 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 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True):
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 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True):
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: