Documentation about armature skeletal model

Hi,
I’m developing a motion capture system that integrates with Blender. Until now we used the python API to acheive several operations on the Blender armature. We now need to generalize the pipeline, moving all these operations to an external service. The idea is to create an armature model in this external service which is directly compatible with the Blender armature.

I’m currently in the process of learning more about how the internal Blender armature is modeled. I do have a decent understanding of how the based on my usage of the python API and by exploring the source, but I would love to know if there is technical documentation about it. Perhaps as an external reference if not present in the Blender docs.

I’m particulary interested in:

  • Better understand the different transformation spaces:
(from DNA_armature_types.h: struct Bone ) 
/* this system works on different transformation space levels;
 *
 * 1) Bone Space;      with each Bone having own (0,0,0) origin
 * 2) Armature Space;  the rest position, in Object space, Bones Spaces are applied hierarchical
 * 3) Pose Space;      the animation position, in Object space
 * 4) World Space;     Object matrix applied to Pose or Armature space
 */
  • Better understand which properties are input to a given data structure and which are calculated. For example:
  (from DNA_armature_types.h: struct Bone )
  /**  roll is input for editmode, length calculated. */
  float roll;
  float head[3];
  /**  head/tail and roll in Bone Space   . */
  float tail[3];
  /**  rotation derived from head/tail/roll. */
  float bone_mat[3][3];

Any advice would be greatly apreciated!