[Bf-blender-cvs] [d7822981b1f] master: Python API Docs: add non-invert `Bone.convert_local_to_pose` example.
Alexander Gavrilov
noreply at git.blender.org
Tue Jan 18 09:46:31 CET 2022
Commit: d7822981b1fed42e7f9c0a6aed568014892e8af5
Author: Alexander Gavrilov
Date: Tue Jan 18 11:42:58 2022 +0300
Branches: master
https://developer.blender.org/rBd7822981b1fed42e7f9c0a6aed568014892e8af5
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.
===================================================================
M doc/python_api/examples/bpy.types.Bone.convert_local_to_pose.py
===================================================================
diff --git a/doc/python_api/examples/bpy.types.Bone.convert_local_to_pose.py b/doc/python_api/examples/bpy.types.Bone.convert_local_to_pose.py
index f3cc95dec61..4a88096cf6f 100644
--- a/doc/python_api/examples/bpy.types.Bone.convert_local_to_pose.py
+++ b/doc/python_api/examples/bpy.types.Bone.convert_local_to_pose.py
@@ -8,27 +8,42 @@ def set_pose_matrices(obj, matrix_map):
"Assign pose space matrices of all bones at once, ignoring constraints."
def rec(pbone, parent_matrix):
- matrix = matrix_map[pbone.name]
+ if pbone.name in matrix_map:
+ matrix = matrix_map[pbone.name]
- ## Instead of:
- # pbone.matrix = matrix
- # bpy.context.view_layer.update()
+ ## Instead of:
+ # pbone.matrix = matrix
+ # bpy.context.view_layer.update()
- # Compute and assign local matrix, using the new parent matrix
- if pbone.parent:
- pbone.matrix_basis = pbone.bone.convert_local_to_pose(
- matrix,
- pbone.bone.matrix_local,
- parent_matrix=parent_matrix,
- parent_matrix_local=pbone.parent.bone.matrix_local,
- invert=True
- )
+ # Compute and assign local matrix, using the new parent matrix
+ if pbone.parent:
+ pbone.matrix_basis = pbone.bone.convert_local_to_pose(
+ matrix,
+ pbone.bone.matrix_local,
+ parent_matrix=parent_matrix,
+ parent_matrix_local=pbone.parent.bone.matrix_local,
+ invert=True
+ )
+ else:
+ pbone.matrix_basis = pbone.bone.convert_local_to_pose(
+ matrix,
+ pbone.bone.matrix_local,
+ invert=True
+ )
else:
- pbone.matrix_basis = pbone.bone.convert_local_to_pose(
- matrix,
- pbone.bone.matrix_local,
- invert=True
- )
+ # 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:
More information about the Bf-blender-cvs
mailing list