[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