[Bf-extensions-cvs] [33b0e2e9] master: Rigify 0.5: new features, Animation Tools and Quat/Euler converter small fixes & UI improvements

Lucio Rossi noreply at git.blender.org
Mon Jul 24 18:15:16 CEST 2017


Commit: 33b0e2e9025965133656dd85506bbef62ca3183d
Author: Lucio Rossi
Date:   Mon Jul 24 18:14:16 2017 +0200
Branches: master
https://developer.blender.org/rBA33b0e2e9025965133656dd85506bbef62ca3183d

Rigify 0.5: new features, Animation Tools and Quat/Euler converter
small fixes & UI improvements

===================================================================

M	rigify/__init__.py
M	rigify/generate.py
M	rigify/metarigs/Animals/bird.py
M	rigify/rigs/experimental/super_chain.py
M	rigify/rigs/faces/super_face.py
M	rigify/rigs/limbs/arm.py
M	rigify/rigs/limbs/leg.py
M	rigify/rigs/limbs/paw.py
M	rigify/rigs/limbs/simple_tentacle.py
M	rigify/rigs/limbs/super_limb.py
M	rigify/rigs/limbs/super_palm.py
M	rigify/rigs/limbs/ui.py
D	rigify/rigs/misc/__init__.py
D	rigify/rigs/misc/delta.py
M	rigify/rigs/spines/super_spine.py
A	rigify/rigs/utils.py
A	rigify/rot_mode.py
M	rigify/ui.py
M	rigify/utils.py

===================================================================

diff --git a/rigify/__init__.py b/rigify/__init__.py
index b86b7038..802aed11 100644
--- a/rigify/__init__.py
+++ b/rigify/__init__.py
@@ -318,6 +318,10 @@ def register():
                                                      description="Defines the name of the Rig. If unset, in 'new' mode 'rig' will be used, in 'overwrite' mode the target rig name will be used",
                                                      default="")
 
+    IDStore.rigify_transfer_only_selected = bpy.props.BoolProperty(name="Transfer Only Selected", description="Transfer selected bones only", default=True)
+    IDStore.rigify_transfer_start_frame = bpy.props.IntProperty(name="Start Frame", description="First Frame to Transfer", default=0, min= 0)
+    IDStore.rigify_transfer_end_frame = bpy.props.IntProperty(name="End Frame", description="Last Frame to Transfer", default=0, min= 0)
+
     if (ui and 'legacy' in str(ui)) or bpy.context.user_preferences.addons['rigify'].preferences.legacy_mode:
         # update legacy on restart or reload
         bpy.context.user_preferences.addons['rigify'].preferences.legacy_mode = True
@@ -347,6 +351,9 @@ def unregister():
     del IDStore.rigify_rig_uis
     del IDStore.rigify_rig_ui
     del IDStore.rigify_rig_basename
+    del IDStore.rigify_transfer_only_selected
+    del IDStore.rigify_transfer_start_frame
+    del IDStore.rigify_transfer_end_frame
 
     bpy.utils.unregister_class(RigifyName)
     bpy.utils.unregister_class(RigifyParameters)
diff --git a/rigify/generate.py b/rigify/generate.py
index 01e5de28..42523490 100644
--- a/rigify/generate.py
+++ b/rigify/generate.py
@@ -134,6 +134,11 @@ def generate_rig(context, metarig):
 
     wgts_group_name = "WGTS_" + obj.name
 
+    # Get parented objects to restore later
+    childs = {}  # {object: bone}
+    for child in obj.children:
+        childs[child] = child.parent_bone
+
     # Remove all bones from the generated rig armature.
     bpy.ops.object.mode_set(mode='EDIT')
     for bone in obj.data.edit_bones:
@@ -526,6 +531,12 @@ def generate_rig(context, metarig):
     metarig.data.pose_position = rest_backup
     obj.data.pose_position = 'POSE'
 
+    # Restore parent to bones
+    for child, sub_parent in childs.items():
+        if sub_parent in obj.pose.bones:
+            mat = child.matrix_world.copy()
+            child.parent_bone = sub_parent
+            child.matrix_world = mat
 
 def create_selection_sets(obj, metarig):
 
diff --git a/rigify/metarigs/Animals/bird.py b/rigify/metarigs/Animals/bird.py
index 0c4f7d31..15b75a11 100644
--- a/rigify/metarigs/Animals/bird.py
+++ b/rigify/metarigs/Animals/bird.py
@@ -914,6 +914,7 @@ def create(obj):
     pbone.lock_rotation_w = False
     pbone.lock_scale = (False, False, False)
     pbone.rotation_mode = 'QUATERNION'
+    pbone.rigify_parameters.copy_rotation_axes = [False, False, False]
     pbone.bone.layers = [False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False]
     try:
         pbone.rigify_parameters.tweak_layers = [False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False]
@@ -934,6 +935,7 @@ def create(obj):
     pbone.lock_rotation_w = False
     pbone.lock_scale = (False, False, False)
     pbone.rotation_mode = 'QUATERNION'
+    pbone.rigify_parameters.copy_rotation_axes = [False, False, False]
     pbone.bone.layers = [False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False]
     try:
         pbone.rigify_parameters.tweak_layers = [False, False, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False]
diff --git a/rigify/rigs/experimental/super_chain.py b/rigify/rigs/experimental/super_chain.py
index cff25f2a..32c1b925 100644
--- a/rigify/rigs/experimental/super_chain.py
+++ b/rigify/rigs/experimental/super_chain.py
@@ -1310,24 +1310,38 @@ def parameters_ui(layout, params):
     col = r.column(align=True)
     row = col.row(align=True)
 
+    bone_layers = bpy.context.active_pose_bone.bone.layers[:]
+
     for i in range(8):
-        row.prop(params, "tweak_layers", index=i, toggle=True, text="")
+        icon = "NONE"
+        if bone_layers[i]:
+            icon = "LAYER_ACTIVE"
+        row.prop(params, "tweak_layers", index=i, toggle=True, text="", icon=icon)
 
     row = col.row(align=True)
 
     for i in range(16,24):
-        row.prop(params, "tweak_layers", index=i, toggle=True, text="")
+        icon = "NONE"
+        if bone_layers[i]:
+            icon = "LAYER_ACTIVE"
+        row.prop(params, "tweak_layers", index=i, toggle=True, text="", icon=icon)
 
     col = r.column(align=True)
     row = col.row(align=True)
 
     for i in range(8,16):
-        row.prop(params, "tweak_layers", index=i, toggle=True, text="")
+        icon = "NONE"
+        if bone_layers[i]:
+            icon = "LAYER_ACTIVE"
+        row.prop(params, "tweak_layers", index=i, toggle=True, text="", icon=icon)
 
     row = col.row(align=True)
 
     for i in range(24,32):
-        row.prop(params, "tweak_layers", index=i, toggle=True, text="")
+        icon = "NONE"
+        if bone_layers[i]:
+            icon = "LAYER_ACTIVE"
+        row.prop(params, "tweak_layers", index=i, toggle=True, text="", icon=icon)
 
 
 def create_sample(obj):
diff --git a/rigify/rigs/faces/super_face.py b/rigify/rigs/faces/super_face.py
index f5121f90..dcdb1093 100644
--- a/rigify/rigs/faces/super_face.py
+++ b/rigify/rigs/faces/super_face.py
@@ -1031,26 +1031,26 @@ def add_parameters(params):
         RigifyParameters PropertyGroup
     """
 
-    #Setting up extra layers for the tweak bones
+    # Setting up extra layers for the tweak bones
     params.primary_layers_extra = bpy.props.BoolProperty(
-        name        = "primary_layers_extra",
-        default     = True,
-        description = ""
+        name="primary_layers_extra",
+        default=True,
+        description=""
         )
     params.primary_layers = bpy.props.BoolVectorProperty(
-        size        = 32,
-        description = "Layers for the 1st tweak controls to be on",
-        default     = tuple( [ i == 1 for i in range(0, 32) ] )
+        size=32,
+        description="Layers for the 1st tweak controls to be on",
+        default=tuple([i == 1 for i in range(0, 32)])
         )
     params.secondary_layers_extra = bpy.props.BoolProperty(
-        name        = "secondary_layers_extra",
-        default     = True,
-        description = ""
+        name="secondary_layers_extra",
+        default=True,
+        description=""
         )
     params.secondary_layers = bpy.props.BoolVectorProperty(
-        size        = 32,
-        description = "Layers for the 2nd tweak controls to be on",
-        default     = tuple( [ i == 1 for i in range(0, 32) ] )
+        size=32,
+        description="Layers for the 2nd tweak controls to be on",
+        default=tuple([i == 1 for i in range(0, 32)])
         )
 
 
@@ -1058,29 +1058,43 @@ def parameters_ui(layout, params):
     """ Create the ui for the rig parameters."""
     layers = ["primary_layers", "secondary_layers"]
 
+    bone_layers = bpy.context.active_pose_bone.bone.layers[:]
+
     for layer in layers:
         r = layout.row()
         r.prop( params, layer + "_extra" )
         r.active = getattr( params, layer + "_extra" )
-
+        
         col = r.column(align=True)
         row = col.row(align=True)
         for i in range(8):
-            row.prop(params, layer, index=i, toggle=True, text="")
+            icon = "NONE"
+            if bone_layers[i]:
+                icon = "LAYER_ACTIVE"
+            row.prop(params, layer, index=i, toggle=True, text="", icon=icon)
 
         row = col.row(align=True)
-        for i in range(16,24):
-            row.prop(params, layer, index=i, toggle=True, text="")
-
+        for i in range(16, 24):
+            icon = "NONE"
+            if bone_layers[i]:
+                icon = "LAYER_ACTIVE"
+            row.prop(params, layer, index=i, toggle=True, text="", icon=icon)
+        
         col = r.column(align=True)
         row = col.row(align=True)
-
-        for i in range(8,16):
-            row.prop(params, layer, index=i, toggle=True, text="")
+        
+        for i in range(8, 16):
+            icon = "NONE"
+            if bone_layers[i]:
+                icon = "LAYER_ACTIVE"
+            row.prop(params, layer, index=i, toggle=True, text="", icon=icon)
 
         row = col.row(align=True)
-        for i in range(24,32):
-            row.prop(params, layer, index=i, toggle=True, text="")
+        for i in range(24, 32):
+            icon = "NONE"
+            if bone_layers[i]:
+                icon = "LAYER_ACTIVE"
+            row.prop(params, layer, index=i, toggle=True, text="", icon=icon)
 
 
 def create_sample(obj):
diff --git a/rigify/rigs/limbs/arm.py b/rigify/rigs/limbs/arm.py
index b5c07569..193e2034 100644
--- a/rigify/rigs/limbs/arm.py
+++ b/rigify/rigs/limbs/arm.py
@@ -4,7 +4,7 @@ from .ui             import create_script
 from .limb_utils     import *
 from mathutils       import Vector
 from ...utils       import copy_bone, flip_bone, put_bone, create_cube_widget
-from ...utils       import strip_org, make_deformer_name, create_widget
+from ...utils       import strip_org, strip_mch, make_deformer_name, create_widget
 from ...utils       import create_circle_widget, create_sphere_widget, create_line_widget
 from ...utils       import MetarigError, make_mechanism_name, org
 from ...utils       import create_limb_widget, connected_children_names
@@ -982,6 +982,52 @@ class Rig:
                     var.targets[0].data_path = \
                         owner.path_from_id() + '[' + '"' + prop + '"'

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list