Convert Hip Motion to Root Motion - Advanced Motionbuilder Techniques

Quick tutorial on how to convert hip / pelvis motion to Root motion inside Motionbuilder.  

Assuming the pelvis has keyframes that are driving motion we can create a new skeleton root node and connect the motion with a relation constraint.  

Create a new Skeleton Root and parent it to your hips. 

Drag a new Relation Constraint onto the Skeleton Root and constrain it.  

Drag the Relation Constraint to the Root Bone

Clicking on the relation constraint will reveal a node graph - this is where we edit the settings to achieve a correct translation. 

Drag the hip joint into the node graph (holding alt while dragging) and a popup will appear asking for Sender or Receiver? Choose Sender. 

You'll see three options (rotation, scaling, translation) and on the left you'll see a list of categories to choose from.  

Expand converters - and drag out a Number to Vector and Vector to Number.  

Now we just want to connect our X and Z motion from our hip bone and translate it over to the root bone - so the root follows the ground correctly. 

 The node editor - setting up the custom constraint.

The node editor - setting up the custom constraint.

We want to then drag the hip/pelvis bone in to the graph as this is bone which contains the rotation we want to extract. Again we need to split the Vector to Number and plug it into Number to Vector and finally into our Rotation slot of the Root bone.

A couple of things I want to point out that are important, notice how the rotation from the Vector to Number is connected in the X [Number], this is because the local up axis our hip bone is in the X direction, you'll need to verify with your hip bone which axis is in the up direction.

You might notice we have a subtract node between the X and Y connection for the rotation, this is due to the rotation point in the wrong direction once we apply the rotation and we need to offset it by 90 degrees. You might need -90 degrees or none at all. Just verify that the character is pointing the positive forward world direction.

This is the rotation graph to transfer hip rotation (change the vector to number axis to whichever one is pointing up in the air. We then, for this model need to minus 90 degrees to match the direction correctly for when we plot the animation to the roots. 

 Node editor with the rotation set up.

Node editor with the rotation set up.