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:
-rw-r--r--rigify/rigs/basic/raw_copy.py8
-rw-r--r--rigify/utils/naming.py8
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