[Bf-extensions-cvs] [b0361dca] master: Rigify: support choosing widgets out of a list in super_copy and pivot.

Alexander Gavrilov noreply at git.blender.org
Tue Dec 8 11:33:32 CET 2020


Commit: b0361dcaac3034cde90a5c146e3ef3f07d226da9
Author: Alexander Gavrilov
Date:   Tue Dec 8 13:31:07 2020 +0300
Branches: master
https://developer.blender.org/rBAb0361dcaac3034cde90a5c146e3ef3f07d226da9

Rigify: support choosing widgets out of a list in super_copy and pivot.

Register the most generic widgets in the list and add a few more.
Use it to assign a nicer looking shoulder widget in human metarigs.

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

M	rigify/__init__.py
M	rigify/generate.py
M	rigify/metarigs/Basic/basic_human.py
M	rigify/metarigs/human.py
M	rigify/rigs/basic/pivot.py
M	rigify/rigs/basic/super_copy.py
M	rigify/rigs/limbs/limb_rigs.py
M	rigify/rigs/limbs/super_palm.py
M	rigify/rigs/widgets.py
M	rigify/utils/widgets.py
M	rigify/utils/widgets_basic.py

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

diff --git a/rigify/__init__.py b/rigify/__init__.py
index 7e5ee944..63e42d1d 100644
--- a/rigify/__init__.py
+++ b/rigify/__init__.py
@@ -574,6 +574,8 @@ def register():
         name="Rigify Active Collection",
         description="The selected rig collection")
 
+    IDStore.rigify_widgets = CollectionProperty(type=RigifyName)
+
     IDStore.rigify_types = CollectionProperty(type=RigifyName)
     IDStore.rigify_active_type = IntProperty(name="Rigify Active Type", description="The selected rig type")
 
diff --git a/rigify/generate.py b/rigify/generate.py
index f1586873..613ef59f 100644
--- a/rigify/generate.py
+++ b/rigify/generate.py
@@ -262,13 +262,14 @@ class Generator(base_generate.BaseGenerator):
 
 
     def __assign_layers(self):
-        bones = self.obj.data.bones
+        pbones = self.obj.pose.bones
 
-        bones[self.root_bone].layers = ROOT_LAYER
+        pbones[self.root_bone].bone.layers = ROOT_LAYER
 
         # Every bone that has a name starting with "DEF-" make deforming.  All the
         # others make non-deforming.
-        for bone in bones:
+        for pbone in pbones:
+            bone = pbone.bone
             name = bone.name
             layers = None
 
@@ -288,7 +289,7 @@ class Generator(base_generate.BaseGenerator):
                 bone.layers = layers
 
                 # Remove custom shapes from non-control bones
-                bone.custom_shape = None
+                pbone.custom_shape = None
 
             bone.bbone_x = bone.bbone_z = bone.length * 0.05
 
diff --git a/rigify/metarigs/Basic/basic_human.py b/rigify/metarigs/Basic/basic_human.py
index 01017cf4..9ddbdc0e 100644
--- a/rigify/metarigs/Basic/basic_human.py
+++ b/rigify/metarigs/Basic/basic_human.py
@@ -530,7 +530,11 @@ def create(obj):
     pbone.rotation_mode = 'YXZ'
     pbone.bone.layers = [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, False, False, False, False]
     try:
-        pbone.rigify_parameters.make_widget = False
+        pbone.rigify_parameters.make_widget = True
+    except AttributeError:
+        pass
+    try:
+        pbone.rigify_parameters.super_copy_widget_type = "shoulder"
     except AttributeError:
         pass
     pbone = obj.pose.bones[bones['shoulder.R']]
@@ -542,7 +546,11 @@ def create(obj):
     pbone.rotation_mode = 'YXZ'
     pbone.bone.layers = [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, False, False, False, False]
     try:
-        pbone.rigify_parameters.make_widget = False
+        pbone.rigify_parameters.make_widget = True
+    except AttributeError:
+        pass
+    try:
+        pbone.rigify_parameters.super_copy_widget_type = "shoulder"
     except AttributeError:
         pass
     pbone = obj.pose.bones[bones['breast.L']]
diff --git a/rigify/metarigs/human.py b/rigify/metarigs/human.py
index e4279982..9ddc2f75 100644
--- a/rigify/metarigs/human.py
+++ b/rigify/metarigs/human.py
@@ -1440,7 +1440,11 @@ def create(obj):
     pbone.rotation_mode = 'YXZ'
     pbone.bone.layers = [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, False, False, False, False]
     try:
-        pbone.rigify_parameters.make_widget = False
+        pbone.rigify_parameters.make_widget = True
+    except AttributeError:
+        pass
+    try:
+        pbone.rigify_parameters.super_copy_widget_type = "shoulder"
     except AttributeError:
         pass
     pbone = obj.pose.bones[bones['shoulder.R']]
@@ -1452,7 +1456,11 @@ def create(obj):
     pbone.rotation_mode = 'YXZ'
     pbone.bone.layers = [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, False, False, False, False]
     try:
-        pbone.rigify_parameters.make_widget = False
+        pbone.rigify_parameters.make_widget = True
+    except AttributeError:
+        pass
+    try:
+        pbone.rigify_parameters.super_copy_widget_type = "shoulder"
     except AttributeError:
         pass
     pbone = obj.pose.bones[bones['breast.L']]
diff --git a/rigify/rigs/basic/pivot.py b/rigify/rigs/basic/pivot.py
index e5d31659..2a44e7e4 100644
--- a/rigify/rigs/basic/pivot.py
+++ b/rigify/rigs/basic/pivot.py
@@ -24,7 +24,8 @@ from ...base_rig import BaseRig
 
 from ...utils.naming import make_derived_name
 from ...utils.bones import set_bone_widget_transform
-from ...utils.widgets_basic import create_cube_widget, create_pivot_widget
+from ...utils.widgets import layout_widget_dropdown, create_registered_widget
+from ...utils.widgets_basic import create_pivot_widget
 from ...utils.switch_parent import SwitchParentBuilder
 
 
@@ -135,7 +136,7 @@ class Rig(BaseRig):
         if self.make_control:
             set_bone_widget_transform(self.obj, self.bones.ctrl.master, self.bones.org)
 
-            create_cube_widget(self.obj, self.bones.ctrl.master, radius=0.5)
+            create_registered_widget(self.obj, self.bones.ctrl.master, self.params.pivot_master_widget_type or 'cube')
 
 
     @classmethod
@@ -146,6 +147,12 @@ class Rig(BaseRig):
             description = "Create a control bone for the copy"
         )
 
+        params.pivot_master_widget_type = bpy.props.StringProperty(
+            name        = "Widget Type",
+            default     = 'cube',
+            description = "Choose the type of the widget to create"
+        )
+
         params.make_parent_switch = bpy.props.BoolProperty(
             name        = "Switchable Parent",
             default     = False,
@@ -183,6 +190,8 @@ class Rig(BaseRig):
         r.prop(params, "make_extra_control", text="Master Control")
 
         if params.make_extra_control:
+            layout_widget_dropdown(layout, params, "pivot_master_widget_type")
+
             layout.prop(params, "make_parent_switch")
             layout.prop(params, "register_parent")
 
diff --git a/rigify/rigs/basic/super_copy.py b/rigify/rigs/basic/super_copy.py
index 07ad60b7..dcff41fe 100644
--- a/rigify/rigs/basic/super_copy.py
+++ b/rigify/rigs/basic/super_copy.py
@@ -23,7 +23,8 @@ import bpy
 from ...base_rig import BaseRig
 
 from ...utils.naming import strip_org, make_deformer_name
-from ...utils.widgets_basic import create_bone_widget, create_circle_widget
+from ...utils.widgets import layout_widget_dropdown, create_registered_widget
+from ...utils.widgets_basic import create_bone_widget
 
 from .raw_copy import RelinkConstraintsMixin
 
@@ -95,7 +96,7 @@ class Rig(BaseRig, RelinkConstraintsMixin):
         if self.make_control:
             # Create control widget
             if self.make_widget:
-                create_circle_widget(self.obj, bones.ctrl, radius=0.5)
+                create_registered_widget(self.obj, bones.ctrl, self.params.super_copy_widget_type or 'circle')
             else:
                 create_bone_widget(self.obj, bones.ctrl)
 
@@ -117,6 +118,12 @@ class Rig(BaseRig, RelinkConstraintsMixin):
             description = "Choose a widget for the bone control"
         )
 
+        params.super_copy_widget_type = bpy.props.StringProperty(
+            name        = "Widget Type",
+            default     = 'circle',
+            description = "Choose the type of the widget to create"
+        )
+
         params.make_deform = bpy.props.BoolProperty(
             name        = "Deform",
             default     = True,
@@ -130,13 +137,17 @@ class Rig(BaseRig, RelinkConstraintsMixin):
     def parameters_ui(self, layout, params):
         """ Create the ui for the rig parameters.
         """
-        r = layout.row()
-        r.prop(params, "make_control")
-        r = layout.row()
-        r.prop(params, "make_widget")
-        r.enabled = params.make_control
-        r = layout.row()
-        r.prop(params, "make_deform")
+        layout.prop(params, "make_control")
+
+        row = layout.split(factor=0.3)
+        row.prop(params, "make_widget")
+        row.enabled = params.make_control
+
+        row2 = row.row(align=True)
+        row2.enabled = params.make_widget
+        layout_widget_dropdown(row2, params, "super_copy_widget_type", text="")
+
+        layout.prop(params, "make_deform")
 
         self.add_relink_constraints_ui(layout, params)
 
diff --git a/rigify/rigs/limbs/limb_rigs.py b/rigify/rigs/limbs/limb_rigs.py
index 1c57a597..a5df27f4 100644
--- a/rigify/rigs/limbs/limb_rigs.py
+++ b/rigify/rigs/limbs/limb_rigs.py
@@ -206,7 +206,7 @@ class BaseLimbRig(BaseRig):
 
     @stage.generate_widgets
     def make_master_control_widget(self):
-        create_gear_widget(self.obj, self.bones.ctrl.master, size=10)
+        create_gear_widget(self.obj, self.bones.ctrl.master, radius=1)
 
 
     ####################################################
diff --git a/rigify/rigs/limbs/super_palm.py b/rigify/rigs/limbs/super_palm.py
index ed044fe1..47d5eaf3 100644
--- a/rigify/rigs/limbs/super_palm.py
+++ b/rigify/rigs/limbs/super_palm.py
@@ -26,7 +26,7 @@ from itertools import count, repeat
 
 from rigify.utils.rig import is_rig_base_bone
 from rigify.utils.naming import strip_org, make_derived_name, choose_derived_bone
-from rigify.utils.widgets import create_widget
+from rigify.utils.widgets import widget_generator, register_widget
 from rigify.utils.widgets_basic import create_bone_widget
 from rigify.utils.misc import map_list
 
@@ -147,43 +147,7 @@ class Rig(BaseRig):
             self.make_control_widget(self.bones.ctrl.secondary)
 
     def make_control_widget(self, ctrl):
-        w = create_widget(self.obj, ctrl)
-        if w is not None:
-            mesh = w.data
-            verts = [
-                (0.1578, 0.0, -0.3),
-                (0.1578, 1.0, -0.2),
-                (-0.1578, 1.0, -0.2),
-                (-0.1578, -0.0, -0.3),
-                (-0.1578, -0.0, 0.3),
-                (-0.1578, 1.0, 0.2),
-       

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list