[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