diff options
author | Alexander Gavrilov <angavrilov@gmail.com> | 2019-10-21 16:27:22 +0300 |
---|---|---|
committer | Alexander Gavrilov <angavrilov@gmail.com> | 2019-10-22 19:26:51 +0300 |
commit | 1d656f36618e5f2d5b1f7d0ff86e87ca6e705be4 (patch) | |
tree | 1559c5840f88810ea8c9212ba30210094263970a /rigify/utils | |
parent | bde1bc48cd7a57e6187b5849d6208a4816102f01 (diff) |
Rigify: clear custom pivots in IK->FK snap and use in widget placement.
Diffstat (limited to 'rigify/utils')
-rw-r--r-- | rigify/utils/bones.py | 14 | ||||
-rw-r--r-- | rigify/utils/components.py | 8 |
2 files changed, 19 insertions, 3 deletions
diff --git a/rigify/utils/bones.py b/rigify/utils/bones.py index 6a09cee1..854d4428 100644 --- a/rigify/utils/bones.py +++ b/rigify/utils/bones.py @@ -657,3 +657,17 @@ def align_bone_to_axis(obj, bone_name, axis, *, length=None, roll=0, flip=False) bone_e.tail = bone_e.head + vec bone_e.roll = roll + + +def set_bone_widget_transform(obj, bone_name, transform_bone, use_size=True, scale=1.0): + assert obj.mode != 'EDIT' + + bone = obj.pose.bones[bone_name] + + if transform_bone and transform_bone != bone_name: + bone.custom_shape_transform = obj.pose.bones[transform_bone] + else: + bone.custom_shape_transform = None + + bone.use_custom_shape_bone_size = use_size + bone.custom_shape_scale = scale diff --git a/rigify/utils/components.py b/rigify/utils/components.py index b99e183f..5c1ebcb6 100644 --- a/rigify/utils/components.py +++ b/rigify/utils/components.py @@ -17,7 +17,8 @@ class CustomPivotControl(RigComponent): def __init__( self, rig, id_name, org_bone, *, - name=None, parent=None, position=None, matrix=None, scale=1.0, + name=None, parent=None, position=None, matrix=None, + scale=1.0, scale_mch=None, move_to=None, align_to=None, snap_to=None, widget_axis=1.5, widget_cap=1.0, widget_square=True, ): @@ -30,6 +31,7 @@ class CustomPivotControl(RigComponent): self.parent = parent self.scale = scale or 1 + self.scale_mch = scale_mch or (self.scale * 0.7) self.move_to = move_to self.align_to = align_to self.snap_to = snap_to @@ -51,7 +53,7 @@ class CustomPivotControl(RigComponent): def do_make_bones(self, org, name, position, matrix): self.bones.ctrl[self.id_name] = self.ctrl = self.copy_bone(org, name, parent=not self.parent, scale=self.scale) - self.bones.mch[self.id_name] = self.mch = self.copy_bone(org, make_derived_name(name, 'mch'), scale=self.scale * 0.7) + self.bones.mch[self.id_name] = self.mch = self.copy_bone(org, make_derived_name(name, 'mch'), scale=self.scale_mch) if position or matrix: put_bone(self.obj, self.ctrl, position, matrix=matrix) @@ -61,7 +63,7 @@ class CustomPivotControl(RigComponent): if self.snap_to: bone = force_lazy(self.snap_to) copy_bone_position(self.obj, bone, self.ctrl, scale=self.scale) - copy_bone_position(self.obj, bone, self.mch, scale=self.scale * 0.7) + copy_bone_position(self.obj, bone, self.mch, scale=self.scale_mch) if self.move_to: pos = self.get_bone(force_lazy(self.move_to)).head |