[Bf-extensions-cvs] [9b693a6b] master: Rigify: update super_chain from the latest 2.79 version by MAD.

Alexander Gavrilov noreply at git.blender.org
Sat Sep 14 08:34:18 CEST 2019


Commit: 9b693a6be0aa2b0b4825d30ac5034655dce9c0dd
Author: Alexander Gavrilov
Date:   Sat Sep 14 09:15:14 2019 +0300
Branches: master
https://developer.blender.org/rBA9b693a6be0aa2b0b4825d30ac5034655dce9c0dd

Rigify: update super_chain from the latest 2.79 version by MAD.

Differential Revision: https://developer.blender.org/D4624

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

M	rigify/rigs/experimental/super_chain.py
M	rigify/utils/widgets.py
M	rigify/utils/widgets_basic.py

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

diff --git a/rigify/rigs/experimental/super_chain.py b/rigify/rigs/experimental/super_chain.py
index 592441fe..fd6569c1 100644
--- a/rigify/rigs/experimental/super_chain.py
+++ b/rigify/rigs/experimental/super_chain.py
@@ -3,9 +3,9 @@ from mathutils import Vector
 from ...utils import copy_bone, put_bone, org, align_bone_y_axis, align_bone_x_axis, align_bone_z_axis
 from ...utils import strip_org, make_deformer_name, connected_children_names
 from ...utils import create_chain_widget
-from ...utils import make_mechanism_name, create_cube_widget
+from ...utils import make_mechanism_name
 from ...utils import ControlLayersOption
-from ...utils.mechanism import make_property, make_driver
+from rna_prop_ui import rna_idprop_ui_prop_get
 from ..limbs.limb_utils import get_bone_name
 
 
@@ -114,7 +114,13 @@ class Rig:
             self.obj.data.bones[def_bones[-1]].bbone_easeout = 1.0
         bpy.ops.object.mode_set(mode='EDIT')
 
-        return def_bones
+        conv_def = ""
+        if self.params.conv_bone and self.params.conv_def:
+            b = org(self.params.conv_bone)
+            conv_def = make_deformer_name(strip_org(b))
+            conv_def = copy_bone(self.obj, b, conv_def)
+
+        return def_bones, conv_def
 
     def create_chain(self):
         org_bones = self.org_bones
@@ -147,28 +153,23 @@ class Rig:
                 eb[mch_name].length /= 4
                 put_bone(self.obj, mch_name, eb[b].head - (eb[mch_name].tail - eb[mch_name].head))
                 align_bone_z_axis(self.obj, mch_name, eb[b].z_axis)
-                if '.' in mch_name:
-                    mch_rev_name = mch_name.split('.')[0] + '_reverse.' + mch_name.split('.')[1]
-                else:
-                    mch_rev_name = mch_name + '_reverse'
-                mch_rev_name = copy_bone(self.obj, org(b), mch_rev_name)
-                eb[mch_rev_name].length /= 4
-                eb[mch_rev_name].tail = eb[mch_name].head
-                align_bone_z_axis(self.obj, mch_rev_name, eb[b].z_axis)
                 mch += [mch_name]
-                mch += [mch_rev_name]
-                break
-
-            mch_name = copy_bone(self.obj, org(b), make_mechanism_name(strip_org(b)))
-            eb[mch_name].length /= 4
-
-            mch += [mch_name]
-
-            if b == org_bones[-1]:  # Add extra
                 mch_name = copy_bone(self.obj, org(b), make_mechanism_name(strip_org(b)))
                 eb[mch_name].length /= 4
                 put_bone(self.obj, mch_name, eb[b].tail)
                 mch += [mch_name]
+                break
+            else:
+                mch_name = copy_bone(self.obj, org(b), make_mechanism_name(strip_org(b)))
+                eb[mch_name].length /= 4
+
+                mch += [mch_name]
+
+                if b == org_bones[-1]:  # Add extra
+                    mch_name = copy_bone(self.obj, org(b), make_mechanism_name(strip_org(b)))
+                    eb[mch_name].length /= 4
+                    put_bone(self.obj, mch_name, eb[b].tail)
+                    mch += [mch_name]
 
         # Tweak & Ctrl bones
         v = eb[org_bones[-1]].tail - eb[org_bones[0]].head  # Create a vector from head of first ORG to tail of last
@@ -193,7 +194,7 @@ class Rig:
                 align_bone_x_axis(self.obj, name, eb[org(b)].x_axis)
                 ctrl += [name]
             else:
-                name = get_bone_name(b, 'ctrl', 'tweak')
+                name = 'tweak_' + strip_org(b)
                 name = copy_bone(self.obj, org(b), name)
                 twk += [name]
 
@@ -238,12 +239,16 @@ class Rig:
         conv_twk = ''
         # Convergence tweak
         if self.params.conv_bone:
-            conv_twk = get_bone_name(self.params.conv_bone, 'ctrl', 'tweak')
+            conv_twk = 'tweak_' + strip_org(self.params.conv_bone)
 
             if not(conv_twk in eb.keys()):
                 conv_twk = copy_bone(self.obj, org(self.params.conv_bone), conv_twk)
 
         for b in org_bones:
+
+            if self.SINGLE_BONE:
+                break
+
             # Mch controls
             suffix = ''
             if '.L' in b:
@@ -252,7 +257,7 @@ class Rig:
                 suffix = '.R'
 
             mch_ctrl_name = "MCH-CTRL-" + strip_org(b).split('.')[0] + suffix
-            mch_ctrl_name = copy_bone(self.obj, twk[0], mch_ctrl_name)
+            mch_ctrl_name = copy_bone(self.obj, twk[0] if twk else ctrl[0], mch_ctrl_name)
 
             eb[mch_ctrl_name].length /= 6
 
@@ -262,7 +267,7 @@ class Rig:
 
             if b == org_bones[-1]:  # Add extra
                 mch_ctrl_name = "MCH-CTRL-" + strip_org(b).split('.')[0] + suffix
-                mch_ctrl_name = copy_bone(self.obj, twk[0], mch_ctrl_name)
+                mch_ctrl_name = copy_bone(self.obj, twk[0] if twk else ctrl[0], mch_ctrl_name)
 
                 eb[mch_ctrl_name].length /= 6
 
@@ -289,6 +294,9 @@ class Rig:
             if i > 0:   # For all bones but the first (which has no parent)
                 eb[b].parent = eb[bones['def'][i-1]]  # to previous
                 eb[b].use_connect = True
+            elif self.SINGLE_BONE:
+                eb[b].parent = eb[bones['chain']['mch'][0]]
+                eb[b].use_connect = True
 
         # Todo check case when sup_chain is in bigger rig
         eb[bones['def'][0]].parent = eb[bones['chain']['mch'][0]]
@@ -297,9 +305,9 @@ class Rig:
             eb[twk].parent = eb[bones['chain']['mch_ctrl'][i+1]]
             eb[twk].use_inherit_scale = False
 
-        eb[bones['chain']['ctrl'][0]].parent = eb[bones['chain']['mch_ctrl'][0]]
+        eb[bones['chain']['ctrl'][0]].parent = eb[bones['chain']['mch_ctrl'][0]] if bones['chain']['mch_ctrl'] else None
         eb[bones['chain']['ctrl'][0]].use_inherit_scale = False
-        eb[bones['chain']['ctrl'][1]].parent = eb[bones['chain']['mch_ctrl'][-1]]
+        eb[bones['chain']['ctrl'][1]].parent = eb[bones['chain']['mch_ctrl'][-1]] if bones['chain']['mch_ctrl'] else None
         eb[bones['chain']['ctrl'][1]].use_inherit_scale = False
 
         if 'pivot' in bones.keys():
@@ -314,9 +322,13 @@ class Rig:
                 eb[mch].parent = eb[bones['chain']['tweak'][i-1]]
 
         if 'parent' in bones.keys():
-            eb[bones['chain']['mch_auto']].parent = eb[bones['parent']]
-            eb[bones['chain']['mch_ctrl'][0]].parent = eb[bones['parent']]
-            eb[bones['chain']['mch_ctrl'][-1]].parent = eb[bones['parent']]
+            if self.SINGLE_BONE:
+                eb[bones['chain']['ctrl'][0]].parent = eb[bones['parent']]
+                eb[bones['chain']['ctrl'][-1]].parent = eb[bones['parent']]
+            else:
+                eb[bones['chain']['mch_auto']].parent = eb[bones['parent']]
+                eb[bones['chain']['mch_ctrl'][0]].parent = eb[bones['parent']]
+                eb[bones['chain']['mch_ctrl'][-1]].parent = eb[bones['parent']]
 
         for i, mch_ctrl in enumerate(bones['chain']['mch_ctrl'][1:-1]):
             eb[mch_ctrl].parent = eb[bones['chain']['mch_auto']]
@@ -326,14 +338,11 @@ class Rig:
 
         if bones['chain']['conv']:
             eb[bones['chain']['ctrl'][-1]].parent = eb[bones['chain']['conv']]
+            eb[bones['chain']['conv']].parent = eb[bones['chain']['conv']].parent
 
         if self.SINGLE_BONE:
-            eb[bones['chain']['ctrl'][0]].parent = None
-            eb[bones['chain']['ctrl'][-1]].parent = None
-            eb[bones['chain']['mch_ctrl'][0]].parent = eb[bones['chain']['ctrl'][0]]
-            eb[bones['chain']['mch_ctrl'][-1]].parent = eb[bones['chain']['ctrl'][-1]]
-            eb[bones['chain']['mch'][0]].parent = eb[bones['chain']['mch'][1]]
-            eb[bones['chain']['mch'][1]].parent = eb[bones['chain']['mch_ctrl'][0]]
+            eb[bones['chain']['mch'][0]].parent = eb[bones['chain']['ctrl'][0]]
+            eb[bones['chain']['mch'][1]].parent = eb[bones['chain']['ctrl'][1]]
 
         return
 
@@ -351,7 +360,6 @@ class Rig:
             setattr(const, p, constraint[p])
 
     def constrain_bones(self, bones):
-        # DEF bones
 
         deform = bones['def']
         mch = bones['chain']['mch']
@@ -359,6 +367,17 @@ class Rig:
         ctrls = bones['chain']['ctrl']
         tweaks = [ctrls[0]] + bones['chain']['tweak'] + [ctrls[-1]]
 
+        # ORG bones
+        for i, org_bone in enumerate(self.org_bones):
+            self.make_constraint(org_bone, {
+                'constraint': 'COPY_TRANSFORMS',
+                'subtarget': tweaks[i],
+                'owner_space': 'WORLD',
+                'target_space': 'WORLD'
+            })
+
+        # DEF bones
+
         for i, d in enumerate(deform):
 
             if len(deform) > 1:
@@ -374,6 +393,14 @@ class Rig:
                 'subtarget': tweaks[i+1]
             })
 
+        if bones['conv_def']:
+            self.make_constraint(bones['conv_def'], {
+                'constraint': 'COPY_TRANSFORMS',
+                'subtarget': bones['chain']['conv'],
+                'owner_space': 'POSE',
+                'target_space': 'POSE'
+            })
+
         if 'pivot' in bones.keys():
             step = 2/(len(self.org_bones))
             for i, b in enumerate(mch_ctrl):
@@ -441,7 +468,7 @@ class Rig:
         ctrl_start = pb[bones['chain']['ctrl'][0]]
         ctrl_end = pb[bones['chain']['ctrl'][-1]]
         mch_start = pb[bones['chain']['mch'][0]]
-        mch_end = pb[bones['chain']['mch_ctrl'][-1]]
+        mch_end = pb[bones['chain']['mch_ctrl'][-1]] if bones['chain']['mch_ctrl'] else pb[bones['chain']['mch'][-1]]
 
         if 'bbone_custom_handle_start' in dir(def_pb) and 'bbone_custom_handle_end' in dir(def_pb):
             if not self.SINGLE_BONE:
@@ -498,19 +525,25 @@ class Rig:
 
         # Assigning a widget to main ctrl bone
         if 'pivot' in bones.keys():
-            create_cube_widget(
+            create_chain_widget(
                 self.obj,
                 bones['pivot']['ctrl'],
+                cube=True,
                 radius=0.15,
-                bone_transform_name=None
+                bone_transform_name=None,
+                axis=self.params.wgt_align_axis,
+                offset=self.params.wgt_offset*pb[bones['chain']['ctrl'][0]].length


@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list