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/base_rig.py')
-rw-r--r--rigify/base_rig.py70
1 files changed, 50 insertions, 20 deletions
diff --git a/rigify/base_rig.py b/rigify/base_rig.py
index a1f9e952..b0bcc027 100644
--- a/rigify/base_rig.py
+++ b/rigify/base_rig.py
@@ -2,17 +2,24 @@
import collections
+from bpy.types import PoseBone
+from typing import TYPE_CHECKING, Any, Callable, Optional
+
from .utils.errors import RaiseErrorMixin
from .utils.bones import BoneDict, BoneUtilityMixin
from .utils.mechanism import MechanismUtilityMixin
from .utils.metaclass import BaseStagedClass
+from .utils.misc import ArmatureObject
+from .utils.rig import get_rigify_params
+
+if TYPE_CHECKING:
+ from .base_generate import BaseGenerator
+ from .rig_ui_template import ScriptGenerator
-# Only export certain symbols via 'from base_rig import *'
-__all__ = ['BaseRig', 'stage']
-#=============================================
+##############################################
# Base Rig
-#=============================================
+##############################################
class GenerateCallbackHost(BaseStagedClass, define_stages=True):
"""
@@ -138,6 +145,21 @@ class GenerateCallbackHost(BaseStagedClass, define_stages=True):
class BaseRig(GenerateCallbackHost, RaiseErrorMixin, BoneUtilityMixin, MechanismUtilityMixin):
+ generator: 'BaseGenerator'
+
+ obj: ArmatureObject
+ script: 'ScriptGenerator'
+ base_bone: str
+ params: Any
+ bones: BoneDict
+
+ rigify_parent: Optional['BaseRig']
+ rigify_children: list['BaseRig']
+ rigify_org_bones: set[str]
+ rigify_child_bones: set[str]
+ rigify_new_bones: dict[str, Optional[str]]
+ rigify_derived_bones: dict[str, set[str]]
+
"""
Base class for all rigs.
@@ -151,24 +173,24 @@ class BaseRig(GenerateCallbackHost, RaiseErrorMixin, BoneUtilityMixin, Mechanism
and the common generator object. The generation process is also
split into multiple stages.
"""
- def __init__(self, generator, pose_bone):
+ def __init__(self, generator: 'BaseGenerator', pose_bone: PoseBone):
self.generator = generator
self.obj = generator.obj
self.script = generator.script
self.base_bone = pose_bone.name
- self.params = pose_bone.rigify_parameters
+ self.params = get_rigify_params(pose_bone)
# Collection of bone names for use in implementing the rig
self.bones = BoneDict(
# ORG bone names
- org = self.find_org_bones(pose_bone),
+ org=self.find_org_bones(pose_bone),
# Control bone names
- ctrl = BoneDict(),
+ ctrl=BoneDict(),
# MCH bone names
- mch = BoneDict(),
+ mch=BoneDict(),
# DEF bone names
- deform = BoneDict(),
+ deform=BoneDict(),
)
# Data useful for complex rig interaction:
@@ -194,7 +216,7 @@ class BaseRig(GenerateCallbackHost, RaiseErrorMixin, BoneUtilityMixin, Mechanism
###########################################################
# Bone ownership
- def find_org_bones(self, pose_bone):
+ def find_org_bones(self, pose_bone: PoseBone) -> str | list[str] | BoneDict:
"""
Select bones directly owned by the rig. Returning the
same bone from multiple rigs is an error.
@@ -234,9 +256,9 @@ class BaseRig(GenerateCallbackHost, RaiseErrorMixin, BoneUtilityMixin, Mechanism
"""
-#=============================================
+##############################################
# Rig Utility
-#=============================================
+##############################################
class RigUtility(BoneUtilityMixin, MechanismUtilityMixin):
@@ -270,13 +292,21 @@ class RigComponent(LazyRigComponent):
self.enable_component()
-#=============================================
+##############################################
# Rig Stage Decorators
-#=============================================
+##############################################
+# Generate @stage.<...> decorators for all valid stages.
+@GenerateCallbackHost.stage_decorator_container
class stage:
- pass
-
-# Generate @stage.<...> decorators for all valid stages
-for name, decorator in GenerateCallbackHost.make_stage_decorators():
- setattr(stage, name, decorator)
+ # Declare stages for auto-completion - doesn't affect execution.
+ initialize: Callable
+ prepare_bones: Callable
+ generate_bones: Callable
+ parent_bones: Callable
+ configure_bones: Callable
+ preapply_bones: Callable
+ apply_bones: Callable
+ rig_bones: Callable
+ generate_widgets: Callable
+ finalize: Callable