Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Gavrilov <angavrilov@gmail.com>2019-10-21 16:27:22 +0300
committerAlexander Gavrilov <angavrilov@gmail.com>2019-10-22 19:26:51 +0300
commit1d656f36618e5f2d5b1f7d0ff86e87ca6e705be4 (patch)
tree1559c5840f88810ea8c9212ba30210094263970a /rigify/utils
parentbde1bc48cd7a57e6187b5849d6208a4816102f01 (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.py14
-rw-r--r--rigify/utils/components.py8
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