Bone rotation computation

I’m looking into the kinect integration in MotionBuilder, which is relying on NuiTrack SDK.
I’m curious about the bone rotations provided by the API and couldn’t really find an answer to this. How are the bone rotation computed ? Is it relying on an internal IK system, or is it just a rotation computed on a vector between two joints relative to the TPosed vector between those two joints ?
I’m asking this because it looks like the kinect data is fed into one of MotionBuilder’s IK system (HIK or something else depending on your choice).
Running two IK solvers on the same set of input joints could be in my opinion a loss of compute power and could expose to suboptimal solutions being generated.
On the other hand, I saw in some Unity integration of the Kinect SDK that joint rotations are ignored and recomputed by hand because being considered not stable enough.

So is it possible to get information on the way bone rotation is computed from 3d joint locations or is it hidden behind IP dependent implementation ?


The initial orientation of bones in space is specified in the T-Pose. Then, the skeletal model bones orientations are optimized based on the three-dimensional positions of the joints: IK + the algorithm, which is a part of IP.
The interpretation of the bone orientations returned in the Nuitrack API is given in this post.