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:
Diffstat (limited to 'rigify/utils/components.py')
-rw-r--r--rigify/utils/components.py39
1 files changed, 25 insertions, 14 deletions
diff --git a/rigify/utils/components.py b/rigify/utils/components.py
index c1d01c90..54c191ba 100644
--- a/rigify/utils/components.py
+++ b/rigify/utils/components.py
@@ -1,28 +1,34 @@
# SPDX-License-Identifier: GPL-2.0-or-later
-import bpy
+from typing import Optional
+from mathutils import Vector, Matrix
from .naming import make_derived_name
from .bones import put_bone, copy_bone_position, align_bone_orientation
from .widgets_basic import create_pivot_widget
-from .misc import force_lazy
+from .misc import force_lazy, OptionalLazy
-from ..base_rig import RigComponent, stage
+from ..base_rig import BaseRig, RigComponent
class CustomPivotControl(RigComponent):
"""
A utility that generates a pivot control with a custom position.
- Generates a control bone, and a MCH output bone.
+ Generates a control bone, and an MCH output bone.
"""
+ ctrl: str
+ mch: str
+
def __init__(
- self, rig, id_name, org_bone, *,
- 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,
+ self, rig: BaseRig, id_name: str, org_bone: str, *,
+ name: Optional[str] = None, parent: OptionalLazy[str] = None,
+ position: Optional[Vector] = None, matrix: Optional[Matrix] = None,
+ scale: float = 1.0, scale_mch: Optional[float] = None,
+ move_to: OptionalLazy[str] = None, align_to: OptionalLazy[str] = None,
+ snap_to: OptionalLazy[str] = None,
+ widget_axis: float = 1.5, widget_cap: float = 1.0, widget_square: bool = True,
):
super().__init__(rig)
@@ -53,9 +59,12 @@ class CustomPivotControl(RigComponent):
def output(self):
return self.mch
- 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_mch)
+ def do_make_bones(self, org: str, name: str,
+ position: Optional[Vector], matrix: Optional[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_mch)
if position or matrix:
put_bone(self.obj, self.ctrl, position, matrix=matrix)
@@ -83,7 +92,9 @@ class CustomPivotControl(RigComponent):
self.set_bone_parent(self.mch, self.ctrl)
def rig_bones(self):
- self.make_constraint(self.mch, 'COPY_LOCATION', self.ctrl, space='LOCAL', invert_xyz=(True,)*3)
+ self.make_constraint(
+ self.mch, 'COPY_LOCATION', self.ctrl, space='LOCAL', invert_xyz=(True,)*3)
def generate_widgets(self):
- create_pivot_widget(self.obj, self.ctrl, axis_size=self.widget_axis, cap_size=self.widget_cap, square=self.widget_square)
+ create_pivot_widget(self.obj, self.ctrl, axis_size=self.widget_axis,
+ cap_size=self.widget_cap, square=self.widget_square)