This simple 10 step tutorial will show you how to build a skeleton and prepare it for use in MotionBuilder.
Building a skeleton for MotionBuilder or motion capture is the same as building a skeleton for any other purpose, apart from you don’t need to rig the skeleton to animate it as MotionBuiler uses it’s own internal rig and motion capture software usually has it’s own system to solve or animate a skeleton using the marker data.
Table of Contents
1. Create a skeleton hierarchy.
The first thing you will need to do is create a continuous FK joint hierarchy. As with all character rigs, the cleaner you build your joints hierarchy, the easier it will be to work with and the easier it will be to diagnose any faults you encounter. Try to avoid building your character very small or very big as this can cause accuracy errors with the solvers. To ensure your character is compitable with the Character tool inside MotionBuilder, it must contain at least the “Base” set of joints.
2. Rename the joints
Once you have built your joint hierarchy, rename the joint to something more descriptive; for instance using the MotionBuilder naming convention: “LeftUpLeg|LeftLeg|LeftFoot” or use real-world joint names “LeftHip|LeftKnee|LeftAnkle”. Although MotionBuilder does require a specific joint naming convention if you want to use the automatic “drag-and-drop” Characterization, it is possible to create your own custom joint naming template to automatically characterize your characters once you have manually characterized the first one.
3. Set Joint Orients
Align one of the rotational axis down the joint, for instance the “X” axis, as this will make your animation curves much easier to read and understand, and enable you to perform simple edits quickly. MotionBuilder also prefers the rotational axis aligned in this way so the joint can rotate, or twist, along that axis.
4. Set Rotation Order
Setting the correct Rotation Order of a joint can help avoid gimbal locks. Although MotionBuilder has tools to deal with gimbal locks, these often “hide” the lock or flip at a sub frame level. While this enables the animation to playback correctly, it may produce unexpected results if you need to use anything at the sub-frame level like rescaling the animation or motion blur. Unfortunately there isn’t a “one-solution-fits-all” setting for this. To determine the best rotation order you will need to test the different situations the joint might encounter and decide which order will create the least amount of issues. As a basic guide to setting the rotation order:
- The first axis should be where you expect the majority of the rotation to occur as this is the one that won’t end up a gimbal (often used as the “roll” or “twist” axis)
- The second axis should where you expect the least amount of rotation to occur as this axis is more likely encounter gimbal lock.
- The final axis should do the second largest amount of rotating as this is less likely to encounter gimbal lock.
5. Set Degrees Of Freedom (DOF)
If you plan to set the DOF on the elbow or knee joints, MotionBuilder recommends the free axis is listed last in the chosen Rotation Order, and that the axis is aligned to the actual “bend” axis of the joint. If you plan to limit the DOF for the roll axis (the axis aligned down the joint) on the elbow or knee, it is recommended you remove the DOF for all three axes on the wrist and ankle joints or include a roll joint in your hierarchy so the limbs can reach their goals and solve correctly.
6. Remove Complex Constraints
Complex constraints driving additional “helper” joints may not export and work correctly inside MotionBuillder. In these cases it is best to create a “mocap” version of the skeleton by removing these joint set-ups and fixing the skin weights. The “mocap” version of the skeleton can then be exported for use in MotionBuilder, and the resulting data can be imported back onto the original skeleton where the constraingt can continue to drive the helper joints. The FBX plug-in supports following constraints:
- IK handle (including Pole Vector)
7. Skin the character
Before you skin your character, freeze the transforms and delete any non-deformer history from the mesh. The character can then be skinned using rigid or smooth skinning, as both are supported in MotionBuilder. Any additional rigid geometry, like hair for example, can be parented to the appropriate joint.
8. Group character elements
It’s helpful to group all the individual elements of a character into a single hierarchy so you can easily identify them in your scene. Beign by parenting the individual geometry elements under one “Mesh” node and all the individual joint elements under a “Skeleton” node (which can also be used to re-scale the character in MotionBuilder if necessary) Finally group the “Skeleton” node and “Mesh” node under one final “Character” node so all the elements of the character are arranged neatly in a single hierarchy.
9. Using Blend Shapes
If you are exporting Blend shapes to MotionBuilder for facial aniamtion, the target shapes can only contain one target per channel and must be present in the scene when you export the character to MotionBuilder, although they will not be visible when you open your scene in MotionBuilder.
10. Exporting an FBX
The entire scene can be exported as an FBX file using the File>Export menu and setting file type to “FBX”. As plug-ins vary between the different version Maya and Max, you will need to search the “Help” docs for “fbx exporter” to see what export options and elements are supported by the plug-in you are using. You can export all the textures assigned to your character by turning on the “Embed Media” option in the exporter. This will create a FBM folder containing all the textures in the same location as the FBX file you export. When you open your character in MotionBuilder, any missing or incompatible textures will be displayed as grey with a blue question mark.
Finalise the joint names and most importantly the joint positions of your character BEFORE you begin processing any mocap data with it. Any difference between the joint names, or more critically the joint positions, of the character in MotionBuilder and the rig you are importing the data on to will cause the importer to fail or severely compromise the final quality of the mocap data. As soon as you have your character set-up in MotionBuilder, export some test data back onto your target character to check the character pipeline is working correctly.
MotionBuilder Skeleton Naming Convention
- Base (required)
- Left Fingers
- Right Fingers
- Left Toes
- Right Toes