:
, Object Space Bone Local Space.
- , :
poseBone = C.object.pose.bones[2] # <----- set your bone here
if poseBone.parent is not None:
parentRefPoseMtx = poseBone.parent.bone.matrix_local
boneRefPoseMtx = poseBone.bone.matrix_local
parentPoseMtx = poseBone.parent.matrix
bonePoseMtx = poseBone.matrix
boneLocMtx = ( parentRefPoseMtx.inverted() * boneRefPoseMtx ).inverted() * ( parentPoseMtx.inverted() * bonePoseMtx )
else:
boneRefPoseMtx = poseBone.bone.matrix_local
bonePoseMtx = poseBone.matrix
boneLocMtx = boneRefPoseMtx.inverted() * bonePoseMtx
loc, rot, scale = boneLocMtx.decompose()
:
?
.
, , :
boneOS = parentOS * boneLS
, , . .
, , , -, , , , , , , .
( , 1 , 0 , 0 ):
boneOS = C.object.pose.bones[2].matrix
parentBoneOS = C.object.pose.bones[2].parent.matrix
boneRP = C.object.pose.bones[2].bone.matrix_local
parentBoneRP = C.object.pose.bones[1].bone.matrix_local
boneLS = ( parentBoneRP * boneRP ).inverted() * parentOS.inverted() * boneOS