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
path: root/rigify
diff options
context:
space:
mode:
authorAlexander Gavrilov <angavrilov@gmail.com>2019-10-15 17:03:29 +0300
committerAlexander Gavrilov <angavrilov@gmail.com>2019-10-15 17:03:29 +0300
commit11871509f9bc207ee3bfd324c3f160be38f658fe (patch)
treecc7233c3136f8559d5e2fa36752193c38c241868 /rigify
parentdd723151763d8ee3b5c2c94f6c4b5c1ac43b8b59 (diff)
parent5b18c3f4acb23fe26e12b6c4d425a79c0a8a61e6 (diff)
Merge branch 'blender-v2.81-release'
Diffstat (limited to 'rigify')
-rw-r--r--rigify/base_generate.py3
-rw-r--r--rigify/generate.py5
-rw-r--r--rigify/rigs/spines/super_spine.py2
-rw-r--r--rigify/utils/misc.py25
4 files changed, 32 insertions, 3 deletions
diff --git a/rigify/base_generate.py b/rigify/base_generate.py
index 8cf04ade..651e0612 100644
--- a/rigify/base_generate.py
+++ b/rigify/base_generate.py
@@ -27,7 +27,7 @@ from .utils.errors import MetarigError, RaiseErrorMixin
from .utils.naming import random_id
from .utils.metaclass import SingletonPluginMetaclass
from .utils.rig import list_bone_names_depth_first_sorted, get_rigify_type
-from .utils.misc import assign_parameters
+from .utils.misc import clone_parameters, assign_parameters
from . import base_rig
@@ -78,6 +78,7 @@ class SubstitutionRig(RaiseErrorMixin):
self.obj = generator.obj
self.base_bone = pose_bone.name
self.params = pose_bone.rigify_parameters
+ self.params_copy = clone_parameters(self.params)
def substitute(self):
# return [rig1, rig2...]
diff --git a/rigify/generate.py b/rigify/generate.py
index 295c1a50..9e88dcfc 100644
--- a/rigify/generate.py
+++ b/rigify/generate.py
@@ -165,8 +165,13 @@ class Generator(base_generate.BaseGenerator):
# Select the target rig and join
select_object(context, obj)
+ saved_matrix = obj.matrix_world.copy()
+ obj.matrix_world = metarig.matrix_world
+
bpy.ops.object.join()
+ obj.matrix_world = saved_matrix
+
# Select the generated rig
select_object(context, obj, deselect_all=True)
diff --git a/rigify/rigs/spines/super_spine.py b/rigify/rigs/spines/super_spine.py
index 4e371e64..86021c84 100644
--- a/rigify/rigs/spines/super_spine.py
+++ b/rigify/rigs/spines/super_spine.py
@@ -33,7 +33,7 @@ class Rig(SubstitutionRig, BoneUtilityMixin):
"""Compatibility proxy for the monolithic super_spine rig that splits it into parts."""
def substitute(self):
- params_copy = dict(self.params)
+ params_copy = self.params_copy
orgs = [self.base_bone] + connected_children_names(self.obj, self.base_bone)
# Split the bone list according to the settings
diff --git a/rigify/utils/misc.py b/rigify/utils/misc.py
index 4d0fbad3..64367bb7 100644
--- a/rigify/utils/misc.py
+++ b/rigify/utils/misc.py
@@ -24,6 +24,7 @@ import collections
from itertools import tee, chain, islice, repeat
from mathutils import Vector, Matrix, Color
+from rna_prop_ui import rna_idprop_value_to_python
#=============================================
@@ -170,8 +171,30 @@ def copy_attributes(a, b):
pass
+def property_to_python(value):
+ value = rna_idprop_value_to_python(value)
+
+ if isinstance(value, dict):
+ return { k: property_to_python(v) for k, v in value.items() }
+ elif isinstance(value, list):
+ return map_list(property_to_python, value)
+ else:
+ return value
+
+
+def clone_parameters(target):
+ return property_to_python(dict(target))
+
+
def assign_parameters(target, val_dict=None, **params):
- data = { **val_dict, **params } if val_dict else params
+ if val_dict is not None:
+ for key in list(target.keys()):
+ del target[key]
+
+ data = { **val_dict, **params }
+ else:
+ data = params
+
for key, value in data.items():
try:
target[key] = value