diff options
author | Alexander Gavrilov <angavrilov@gmail.com> | 2020-11-10 19:30:01 +0300 |
---|---|---|
committer | Alexander Gavrilov <angavrilov@gmail.com> | 2020-11-10 19:30:01 +0300 |
commit | 35c23b4db494e58538a677c4fb0ec9ec1e8ffaa8 (patch) | |
tree | 9c5b9af9ac62fe3eff6d100a2c00f442069b12f1 | |
parent | fa9e1d797972ae7a13bd6dc7849625c24fcf108a (diff) | |
parent | 8b555809bb31d7bfa929681f396d9a836f7e8acc (diff) |
Merge branch 'blender-v2.91-release'
-rw-r--r-- | rigify/rigs/basic/raw_copy.py | 8 | ||||
-rw-r--r-- | rigify/utils/naming.py | 8 |
2 files changed, 12 insertions, 4 deletions
diff --git a/rigify/rigs/basic/raw_copy.py b/rigify/rigs/basic/raw_copy.py index afea51fc..5e7c0978 100644 --- a/rigify/rigs/basic/raw_copy.py +++ b/rigify/rigs/basic/raw_copy.py @@ -68,14 +68,14 @@ class RelinkConstraintsMixin: if len(specs) == 1: specs = repeat(specs[0]) elif len(specs) != len(con.targets): - self.report_error("Constraint {} actually has {} targets", con.name, len(con.targets)) + self.raise_error("Constraint {} actually has {} targets", con.name, len(con.targets)) for tgt, spec in zip(con.targets, specs): tgt.subtarget = self.find_relink_target(spec, tgt.subtarget) else: if len(specs) > 1: - self.report_error("Only the Armature constraint can have multiple '@' targets: {}", con.name) + self.raise_error("Only the Armature constraint can have multiple '@' targets: {}", con.name) con.subtarget = self.find_relink_target(specs[0], con.subtarget) @@ -88,11 +88,11 @@ class RelinkConstraintsMixin: if not result: result = choose_derived_bone(self.generator, old_target, spec.lower(), by_owner=False) if not result: - self.report_error("Cannot find derived {} bone of bone '{}' for relinking", spec, old_target) + self.raise_error("Cannot find derived {} bone of bone '{}' for relinking", spec, old_target) return result else: if spec not in self.obj.pose.bones: - self.report_error("Cannot find bone '{}' for relinking", spec) + self.raise_error("Cannot find bone '{}' for relinking", spec) return spec diff --git a/rigify/utils/naming.py b/rigify/utils/naming.py index 0339e523..415dddaf 100644 --- a/rigify/utils/naming.py +++ b/rigify/utils/naming.py @@ -314,4 +314,12 @@ def choose_derived_bone(generator, original, subtype, *, by_owner=True, recursiv if len(matching) > 0: return matching[0] + # Try matching bones created by legacy rigs just by name - there is no origin data + from ..base_generate import LegacyRig + + if isinstance(generator.bone_owners.get(direct), LegacyRig): + if not by_owner or generator.bone_owners.get(original) is generator.bone_owners[direct]: + assert direct in bones + return direct + return None |