Character-Prop interaction in Motion Builder using constraints
(Non Captured Props / Intermediate Constraints) Tutorial

By Ricardo Tobon


This tutorial will cover the process of dealing with a motion captured character that interacts with a one handed prop by the use of constraints when the item was not captured.

Getting Started

Download the Character_Prop_One.fbx file. In it you will se a character, a table (cube), and a cup (cylinder). The character mimics holding the cup, drinking from it and laying it down on the table. The cup (prop) however does not move at all (mov 1).



Mov 01.


Creating and Parenting Place Holders

Although one could just start constraining the cup (prop) to the table and the hand of the character, I believe it best to create placeholders for all the elements involved in the interaction (cup, hand and table). Constraining to placeholders instead than directly to objects will leave them free to take animation if minor tweaks are needed.
Examine the animation looking for a place where the hand is making contact with the cup. Frame 209 seems to fit the bill best of all.
From the Asset Browser window drag a Null onto the table geometry you will see that the table becomes highlighted when you do this, rename this Null TablePlaceHolder (fig 1).

Fig 1.

When you drag an element from the Asset Bowser onto another element, the new created one takes the position and orientation of the existing one.
Drag a Null onto the cup geometry and another one to the characters LeftPalm joint. Rename these Nulls CupPlaceHolder and HandPlaceHolder. Figure 2 shows how the Nulls should look on the perspective view (fig 2).

Fig 2.

Click on an empty area of the perspective view, then press Ctrl + W to call the Schematic view. In it Alt + drag Table to TablePlaceHolder and select parent from the pop-up menu. Alt + drag Cup to CupPlaceHolder and parent and Alt + drag HandPlaceHolder to LeftPalm. The hierarchy should look something like this (fig 3).

Fig 3.

Creating and Activating the Constraints

Drag a Parent/Child constraint from the Asset Browser to an empty area of the Schematic view. Rename it TableParent/Child. Create another Parent/Child constraint and rename it HandParent/Child.
Make sure that you are on frame 209 and Double click on the TableParent/Child constraint on the Navigator window to load its attributes. Alt + drag the CupPlaceHolder to the Constrained object (Child) section and Alt + Drag TablePlaceHolder to the Source 1 (Parent) section. Click on the Snap button to activate the constraint while leaving the original offset between the objects (fig 4).

Fig 4.

Populate the HandParent/Child Constraints Settings by dragging the CupPlaceHolder to the Constrained object section and the HandPlaceHolder to the Source 1 section. Activate the constraint by pressing the Snap button so you leave the original offset between the elements (fig 5).

Fig 5.

Animating the Constraints

While in frame 209 key the Weight attribute of the TableParent/Child constraint on (at a value off 100). Also at frame 209 key HandParent/Child Weight off (value of 0).
If you play the animation you will see that the cup still stays on the table while the character goes through his actions.
Go to frame 206 and key the TableParent/Child Weight off (value of 0) and the HandParent/Child Weight on (value of 100). Figure 6 gives a table of the values of the constraint weights against the frame they should be in (fig 6).

Fig 6.

When you play the animation you will see the characters is holding the cup at the beginning of the animation, he takes a drink from the cup, wipes his mouth, lays the cup on the table and walks away. Movie 2 shows a video comparison between the original animation we started with and the new one with constraints applied to it (mov 2).


Mov 02.



Plotting the Constraints

Select the CupPlaceHolder and by going to the animation menu click on Plot Selected (All Properties). This will bake the animation on to your Null (fig 7). If you choose so you can erase the constraints and the motion of the cup will remain. Ploting of constraints is necessary when you plan to take animation out of Motion Builder and into another software package like Maya or 3D Studio Max. Most packages will understand fbx animation but will not understand its constraints.

Fig 7.


Constraints are a great way to manage interactions between characters and props, especially when the props are not captured during the motion capture session. Baking and deleting constraints will maximize compatibility of your animation with other software packages.


Tutorials Main