在 Blender 2.6 API 中,PoseBone 用于动画骨骼。PoseBone.matrix 是一种方法。API 说 PoseBone.matrix 在“对象空间”中。
PoseBone.matrix 根本不是我见过的。我仍然无法让我的动画导入器工作。与 PoseBone.matrix 有什么关系?在 Blender 2.4 API 中有两个矩阵:一个在局部空间,一个在电枢空间。
但是新的 PoseBone.matrix 两者都不是!它不是本地矩阵:
位置不是本地的,而是全球的。
但旋转
<Euler (x=1.5708, y=-0.7854, z=-0.0000), order='XYZ'>
是。
那么 API 所说的 PoseBone.matrix 所在的“对象空间”是什么?
我正在尝试将我的电枢空间矩阵分配给分层电枢,但我无法正确处理它们。
我尝试分解我拥有的矩阵,撤消父旋转然后再次重新组合矩阵,然后将其设置为“PoseBone.matrix”。它只是行不通。
oldmatrix = myMatrix
loc, rot, scale = oldmatrix.decompose()
#rot = rot * pose.bones[bonename].parent.rotation_quaternion.conjugated()
for i in pose.bones[bonename].parent_recursive:
rot = rot * i.conjugated()
newmatrix = rot.to_matrix().to_4x4()
newmatrix[0][3] = loc.x
newmatrix[1][3] = loc.y
newmatrix[2][3] = loc.z
pose.bones[bonename].matrix = newmatrix