[Blender] Cómo guardo las matrices del objeto armature en espacio local

Estoy diseñando un script para guardar mallas animadas en un archivo maj que es un formato que invente para después cargarlo en mis juegos, está todo listo menos esto: no sé cómo guardar las transformaciones del objeto armature.

Intente con esto:
#ob_arm : el objeto armature.

Def gettotalmatrix(bon):
Pose = ob_arm, getpose () tpos_b = pose, Bones[bon, name] tmat=pos_b, localmatrix tif(bon, hasparent()):
Return mat*gettotalmatrix(bon, parent), invert() telse:
Return mat.

Def getmatrix(bon, free):
Global ob_arm tblender. Set(curframe, free) treturn gettotalmatrix(bon).

Pero no funciona las transformaciones de los huesos no se guardan como deben, cuando los huesos no tienen padres o los padres no se mueven parecen guardarse bien, pero me di cuenta que no es así.

Lo que quiero es obtener la matriz que aplicada a un Vector este siga los movimientos del hueso.

Agradezco su ayuda.

Ver más sobre el tema y los comentarios en el foro