Python API Docs: add non-invert Bone.convert_local_to_pose example.

This updates the example function to support assigning a subset of
bone matrices. The code was tested to work in real use by @gaiaclary.
This commit is contained in:
2022-01-18 11:42:58 +03:00
parent 542d15b1cd
commit d7822981b1

View File

@@ -8,6 +8,7 @@ def set_pose_matrices(obj, matrix_map):
"Assign pose space matrices of all bones at once, ignoring constraints."
def rec(pbone, parent_matrix):
if pbone.name in matrix_map:
matrix = matrix_map[pbone.name]
## Instead of:
@@ -29,6 +30,20 @@ def set_pose_matrices(obj, matrix_map):
pbone.bone.matrix_local,
invert=True
)
else:
# Compute the updated pose matrix from local and new parent matrix
if pbone.parent:
matrix = pbone.bone.convert_local_to_pose(
pbone.matrix_basis,
pbone.bone.matrix_local,
parent_matrix=parent_matrix,
parent_matrix_local=pbone.parent.bone.matrix_local,
)
else:
matrix = pbone.bone.convert_local_to_pose(
pbone.matrix_basis,
pbone.bone.matrix_local,
)
# Recursively process children, passing the new matrix through
for child in pbone.children: