[Bf-extensions-cvs] [4ea8e752] master: Rigify 0.5 metarig fixes, advanced generation options, code cleanup

Lucio Rossi noreply at git.blender.org
Thu Jun 8 20:26:21 CEST 2017


Commit: 4ea8e752d0d8af195bc6d4d0725ba62513c2ff48
Author: Lucio Rossi
Date:   Thu Jun 8 20:24:52 2017 +0200
Branches: master
https://developer.blender.org/rBA4ea8e752d0d8af195bc6d4d0725ba62513c2ff48

Rigify 0.5 metarig fixes, advanced generation options, code cleanup

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

M	rigify/__init__.py
M	rigify/generate.py
M	rigify/metarig_menu.py
A	rigify/metarigs/Animals/__init__.py
A	rigify/metarigs/Animals/bird.py
A	rigify/metarigs/Animals/cat.py
A	rigify/metarigs/Animals/horse.py
A	rigify/metarigs/Animals/shark.py
A	rigify/metarigs/Animals/wolf.py
A	rigify/metarigs/Basic/basic_human.py
A	rigify/metarigs/Basic/basic_quadruped.py
M	rigify/metarigs/human.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/rear_paw.py
M	rigify/ui.py
M	rigify/utils.py

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

diff --git a/rigify/__init__.py b/rigify/__init__.py
index 2e7953b1..2b065092 100644
--- a/rigify/__init__.py
+++ b/rigify/__init__.py
@@ -286,6 +286,24 @@ def register():
     IDStore.rigify_types = bpy.props.CollectionProperty(type=RigifyName)
     IDStore.rigify_active_type = bpy.props.IntProperty(name="Rigify Active Type", description="The selected rig type")
 
+    IDStore.rigify_advanced_generation = bpy.props.BoolProperty(name="Rigify Advanced Generation",
+                                                                description="Rigify Advanced Generation Parameters",
+                                                                default=False)
+
+    IDStore.rigify_force_widget_update = bpy.props.BoolProperty(name="Force Widget Update",
+                                                                description="Rigify Force Widget Update",
+                                                                default=False)
+
+    IDStore.rigify_target_rigs = bpy.props.CollectionProperty(type=RigifyName)
+    IDStore.rigify_target_rig = bpy.props.StringProperty(name="Rigify Target Rig",
+                                                         description="The Rig, Generate will run upon",
+                                                         default="")
+
+    IDStore.rigify_rig_uis = bpy.props.CollectionProperty(type=RigifyName)
+    IDStore.rigify_rig_ui = bpy.props.StringProperty(name="Rigify Target Rig UI",
+                                                         description="The Rig UI to overwrite",
+                                                         default="")
+
     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
@@ -307,6 +325,12 @@ def unregister():
     del IDStore.rigify_collection
     del IDStore.rigify_types
     del IDStore.rigify_active_type
+    del IDStore.rigify_advanced_generation
+    del IDStore.rigify_force_widget_update
+    del IDStore.rigify_target_rig
+    del IDStore.rigify_target_rigs
+    del IDStore.rigify_rig_uis
+    del IDStore.rigify_rig_ui
 
     bpy.utils.unregister_class(RigifyName)
     bpy.utils.unregister_class(RigifyParameters)
diff --git a/rigify/generate.py b/rigify/generate.py
index 66971a7e..1af872d6 100644
--- a/rigify/generate.py
+++ b/rigify/generate.py
@@ -31,6 +31,7 @@ from .utils import RIG_DIR
 from .utils import create_root_widget
 from .utils import random_id
 from .utils import copy_attributes
+from .utils import gamma_correct
 from .rig_ui_template import UI_SLIDERS, layers_ui, UI_REGISTER
 
 
@@ -71,7 +72,7 @@ def generate_rig(context, metarig):
     bpy.ops.object.mode_set(mode='OBJECT')
 
     scene = context.scene
-
+    id_store = context.window_manager
     #------------------------------------------
     # Create/find the rig object and set it up
 
@@ -79,10 +80,8 @@ def generate_rig(context, metarig):
     # regenerate in the same object.  If not, create a new
     # object to generate the rig in.
     print("Fetch rig.")
-    try:
-        name = metarig["rig_object_name"]
-    except KeyError:
-        name = "rig"
+
+    name = id_store.rigify_target_rig or "rig"
 
     try:
         obj = scene.objects[name]
@@ -102,6 +101,19 @@ def generate_rig(context, metarig):
     obj.select = True
     scene.objects.active = obj
 
+    # Remove wgts if force update is set
+    if "WGTS" in scene.objects and id_store.rigify_force_widget_update:
+        bpy.ops.object.select_all(action='DESELECT')
+        for i, lyr in enumerate(WGT_LAYERS):
+            if lyr:
+                context.scene.layers[i] = True
+        for wgt in bpy.data.objects["WGTS"].children:
+            wgt.select = True
+        bpy.ops.object.delete(use_global=False)
+        for i, lyr in enumerate(WGT_LAYERS):
+            if lyr:
+                context.scene.layers[i] = False
+
     # Remove all bones from the generated rig armature.
     bpy.ops.object.mode_set(mode='EDIT')
     for bone in obj.data.edit_bones:
@@ -423,12 +435,14 @@ def generate_rig(context, metarig):
     # Create list of layer name/row pairs
     layer_layout = []
     for l in metarig.data.rigify_layers:
-        print( l.name )
+        print(l.name)
         layer_layout += [(l.name, l.row)]
 
     # Generate the UI script
-    if "rig_ui.py" in bpy.data.texts:
-        script = bpy.data.texts["rig_ui.py"]
+    rig_ui_name = id_store.rigify_rig_ui or 'rig_ui.py'
+
+    if rig_ui_name in bpy.data.texts.keys():
+        script = bpy.data.texts[rig_ui_name]
         script.clear()
     else:
         script = bpy.data.texts.new("rig_ui.py")
@@ -521,9 +535,9 @@ def create_bone_groups(obj, metarig):
         if name not in obj.pose.bone_groups.keys():
             bg = obj.pose.bone_groups.new(name)
             bg.color_set = 'CUSTOM'
-            bg.colors.normal = groups[g_id].normal
-            bg.colors.select = groups[g_id].select
-            bg.colors.active = groups[g_id].active
+            bg.colors.normal = gamma_correct(groups[g_id].normal)
+            bg.colors.select = gamma_correct(groups[g_id].select)
+            bg.colors.active = gamma_correct(groups[g_id].active)
 
     for b in pb:
         try:
diff --git a/rigify/metarig_menu.py b/rigify/metarig_menu.py
index 0c917c40..5c8c2ee4 100644
--- a/rigify/metarig_menu.py
+++ b/rigify/metarig_menu.py
@@ -117,7 +117,6 @@ def make_submenu_func(bl_idname, text):
 
 # Get the metarig modules
 metarigs_dict = get_metarig_list("")
-print(metarigs_dict)
 armature_submenus = []
 
 # Create metarig add Operators
@@ -137,24 +136,27 @@ for metarig_class in metarigs_dict:
         metarig_ops[metarig_class].append((T, name))
 
 menu_funcs = []
-for metarig_class in metarigs_dict:
+
+for mop, name in metarig_ops[utils.METARIG_DIR]:
+    text = capwords(name.replace("_", " ")) + " (Meta-Rig)"
+    menu_funcs += [make_metarig_menu_func(mop.bl_idname, text)]
+
+metarigs_dict.pop(utils.METARIG_DIR)
+
+metarig_classes = list(metarigs_dict.keys())
+metarig_classes.sort()
+for metarig_class in metarig_classes:
     # Create menu functions
-    if metarig_class != utils.METARIG_DIR:
-        armature_submenus.append(type('Class_' + metarig_class + '_submenu', (ArmatureSubMenu,), {}))
-        armature_submenus[-1].bl_label = metarig_class + ' (submenu)'
-        armature_submenus[-1].bl_idname = 'ARMATURE_MT_%s_class' % metarig_class
-        armature_submenus[-1].operators = []
-        menu_funcs += [make_submenu_func(armature_submenus[-1].bl_idname, metarig_class)]
+
+    armature_submenus.append(type('Class_' + metarig_class + '_submenu', (ArmatureSubMenu,), {}))
+    armature_submenus[-1].bl_label = metarig_class + ' (submenu)'
+    armature_submenus[-1].bl_idname = 'ARMATURE_MT_%s_class' % metarig_class
+    armature_submenus[-1].operators = []
+    menu_funcs += [make_submenu_func(armature_submenus[-1].bl_idname, metarig_class)]
 
     for mop, name in metarig_ops[metarig_class]:
-        print(metarig_class)
-        print(metarig_ops[metarig_class])
-        if metarig_class != utils.METARIG_DIR:
-            arm_sub = next((e for e in armature_submenus if e.bl_label == metarig_class + ' (submenu)'), '')
-            arm_sub.operators.append((mop.bl_idname, name,))
-        else:
-            text = capwords(name.replace("_", " ")) + " (Meta-Rig)"
-            menu_funcs += [make_metarig_menu_func(mop.bl_idname, text)]
+        arm_sub = next((e for e in armature_submenus if e.bl_label == metarig_class + ' (submenu)'), '')
+        arm_sub.operators.append((mop.bl_idname, name,))
 
 def register():
     for cl in metarig_ops:
diff --git a/rigify/metarigs/Animals/__init__.py b/rigify/metarigs/Animals/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/rigify/metarigs/Animals/bird.py b/rigify/metarigs/Animals/bird.py
new file mode 100644
index 00000000..0c4f7d31
--- /dev/null
+++ b/rigify/metarigs/Animals/bird.py
@@ -0,0 +1,1494 @@
+import bpy
+
+
+from mathutils import Color
+
+
+def create(obj):
+    # generated by rigify.utils.write_metarig
+    bpy.ops.object.mode_set(mode='EDIT')
+    arm = obj.data
+
+    for i in range(6):
+        arm.rigify_colors.add()
+
+    arm.rigify_colors[0].name = "Root"
+    arm.rigify_colors[0].active = Color((0.5490196347236633, 1.0, 1.0))
+    arm.rigify_colors[0].normal = Color((0.4352940022945404, 0.18431399762630463, 0.4156860113143921))
+    arm.rigify_colors[0].select = Color((0.31372547149658203, 0.7843138575553894, 1.0))
+    arm.rigify_colors[0].standard_colors_lock = True
+    arm.rigify_colors[1].name = "IK"
+    arm.rigify_colors[1].active = Color((0.5490196347236633, 1.0, 1.0))
+    arm.rigify_colors[1].normal = Color((0.6039220094680786, 0.0, 0.0))
+    arm.rigify_colors[1].select = Color((0.31372547149658203, 0.7843138575553894, 1.0))
+    arm.rigify_colors[1].standard_colors_lock = True
+    arm.rigify_colors[2].name = "Special"
+    arm.rigify_colors[2].active = Color((0.5490196347236633, 1.0, 1.0))
+    arm.rigify_colors[2].normal = Color((0.9568629860877991, 0.7882350087165833, 0.04705899953842163))
+    arm.rigify_colors[2].select = Color((0.31372547149658203, 0.7843138575553894, 1.0))
+    arm.rigify_colors[2].standard_colors_lock = True
+    arm.rigify_colors[3].name = "Tweak"
+    arm.rigify_colors[3].active = Color((0.5490196347236633, 1.0, 1.0))
+    arm.rigify_colors[3].normal = Color((0.03921600058674812, 0.21176500618457794, 0.5803920030593872))
+    arm.rigify_colors[3].select = Color((0.31372547149658203, 0.7843138575553894, 1.0))
+    arm.rigify_colors[3].standard_colors_lock = True
+    arm.rigify_colors[4].name = "FK"
+    arm.rigify_colors[4].active = Color((0.5490196347236633, 1.0, 1.0))
+    arm.rigify_colors[4].normal = Color((0.11764699965715408, 0.5686269998550415, 0.035294000059366226))
+    arm.rigify_colors[4].select = Color((0.31372547149658203, 0.7843138575553894, 1.0))
+    arm.rigify_colors[4].standard_colors_lock = True
+    arm.rigify_colors[5].name = "Extra"
+    arm.rigify_colors[5].active = Color((0.5490196347236633, 1.0, 1.0))
+    arm.rigify_colors[5].normal = Color((0.96

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list