At it’s root root motion is the combination of two required components. Speed and direction. Speed is controlled by the hips effector relative to the ground as well as the orientation to the root which controls direction as well acts as the reference marker as to motion clips that will blend into and out of the current movement state.
Best practice and how I usually convert in place in MotionBuilder is to always have both the hips transform and the root at 000 for the root and 00Y for the hips (in MB Y is up) and use a parent constraint to link the root to the hips which will travel in the same direction. Once done I then plot the root as a character extension and delete the XY keys (in MB Z is forward) and the start will begin at 000 and at the end of the travel will be 00Z (A straight line). The next cycle that is played then uses the current root location to blend in the next cycle.
Best practice once again is the root should always travel in a straight line based on the origin of 000 first frame reference and if it loops the next cycle should then begin at the current location of the roots Z position and so on and so on.
Turning in place gets a bit tricky as forward, and backwards movements should always be pointing relative to the forward direction of the movement so from idle the full turn cycle should be a 360 turn to either the left or right so at any point in the turn the player can come out straight relative to it’s forward movement.
So overall the actual root is a point of reference as to actions coming into and going out of the current primary action as a starting point and used as to where the feet should line up relative to the ground and the hips translation determining the ground speed of the player.
Just saying.