[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