The processes involved with motion capture.
These can change according to your specific goals, software, hardware, etc., but in general, this is what we use here at ACCAD as of 2006.

 

- Capture data -

For capturing data, we use a Vicon8i Datastation and 14 MCAM cameras. Then to view and run through an initial clean up of the data, we use Vicon's iQ software. iQ is normally used to label the points, get rid of erroneous data, and get a set of clean, useful data that we can then import into other packages to use as a source for animation.

To begin, the space needs to be properly calibrated. Calibration is basically a process that tells each camera where it is in relationship to a "global coordinate" system. I also look at this as all the cameras know where they are in relation to the other cameras...therefore if two cameras see the same marker, it's possible to figure out where it is in space and then track that marker through time and space.

You now need someone or something to capture. In general, we're capturing people. We put a person in a black mock turtle neck unitard and attach reflective spheres to the unitard at specific locations, as well as to the person's head, hands, and feet. In general, little patches of velcro are sewn onto the unitard.

The performer must start with a motion that includes both a T-pose and a Range of Motion. These are essential in creating the .vsk file.

iQ runs the entire motion capture process in realtime. Generic model files (.vst) are "scaled" to your individual subject in order to create a .vsk file. This .vsk file can be used to label your data, fill gaps, etc. In the end, you're interested in there being only clean data.

So what's clean data? Data that is consistent. There may be gaps in it, but ther is one consistent trajectory for every marker. This may mean cutting trajectories, deleting small or redundant trajectories, etc. After this is done, it's time to take the data into MotionBuilder.

- Edit and Apply data -

Once in MotionBuilder, the flow of the data gets a little tricky. You have to try to think like the people that made the software. Many of the ways they put the software together makes it easy for them from a programming point of view, but frustrating to follow from an end user point of view.

To begin, you want to clean the marker data. This means going through and either filtering out noise in the data or changing the interpolation methods that are used. Interpolations are used where there are gaps in the data that the software doesn't know how to fill in. There are a few other methods for this as well. It's possible that in using iQ you've already filled all the gaps with one of the methods in that software. Usually, the filling methods in iQ work well, but you have to make sure they are good enough and won't cause problems in your data. If there are problems, you will need to delete the bad sections and fill those gaps with something that works better.

After you have fixed the obvious problems, it's time to import an "actor". The actor is a generic template that you translate, rotate, and scale in order to get it into the same position as the markers. When doing this for the first time, I suggest you work with a T-pose. Once you have the actor scaled, translated, and rotated so that it fits within the markers(don't forget that markers are above the skin, but the size of the "actor's" arms, legs, etc. will be different than those of your performer, so eye ball it accordingly.), you want to "create" a marker set. Once this is created, you want to drag your markers into the correct locations. (Space bar drag to select and then alt-drag to move the markers). Once this is completed, then export the template (.hik file), and then activate the actor. You'll now see the actor being driven by the marker data.

Since we use Maya, I'm going to use that as my example for what the skeleton/model is built in. One important note is to have a "Reference" node above the node for your hips. Makes life easier in MotionBuilder. Also, there are some issues with skeletal joint orientation that I get into in the "skeleton" section. Export the finished skeleton/model as a .fbx file.

With the actor and the markers in the scene, import the .fbx file of your skeleton. The first take of this, I'd suggest bringing it into the T-Pose. Now you have to characterize your skeleton. That involves first pulling a "character" in from the Templates file(same location as the actor). You now have to let the "character" know what it's suppose to do with your skeleton. This can be done by either naming your skeletal joints to names that MotionBuilder will automatically identify or by dragging and dropping the appropriate bones into the appropriate position in the "character".

Once you characterize everything, you can now explore different properties such as reach. All of these are changes to the correlation between the "actor" and the "character" that effect how the motion looks on your skeleton. By changing reach, etc. it changes how much your skeleton will try to "reach" to the position of the actor. This is mostly for hand and foot placement and can be "keyed" on an off as desired. One thing to give some thought to is creating a very generic relationship between the actor and character. Once you have a very basic setup, you can save(not export) this entire file as a .fbx. This gives you an automatic set up and characterized file that you can drop in additional marker and actor sets as long as it's the same performer from the same session..

Once you're happy with the characterized skeleton, you need to plot the motion. Up until now, the motion for the character is derived from the actor, and there is no true data for the character. Once you plot the data(remember to choose the entire skeleton before exporting), the rotations and translation data is then placed into the joints. This is usually referred to as "burning" the data in. Now you have a skeleton that runs around. One interesting thing to note is that if you select a joint and then go to the F curves, you can see all the rotation and translation data for that joint, so you can make adjustments here if you'd like.

There's also the possibility of blending motions once you have several different types of motion on your skeleton. This is a normal process that's used to make it appear as if people are running from hundreds of feet when they're actually only running the 20 feet inside the studio...you just add one motion to another at an opportune point. You may also need to take advantage of the Auxiliary handles in MotionBuilder as well. These will help to keep feet planted and also to help in many other edits that occasionally occur.

You can at this point export this skeleton as a .fbx file. I recommend doing this. After you've saved it, you can exit out of Motionbuilder and re-import it, or you can keep on changing your data by now plotting the information again. You will now only have the option of plotting to a control rig. I suggest the FK/IK control rig. You can now make changes to the control rig. Once again, this is just a layer on top of the skeletal animation, so after keying on and off several changes, you then will need to plot this information back onto your skeleton (because all the changes have been made to the control rig and not to the skeleton, so they need to be "baked" onto the skeleton). To do that, you have to select the entire skeleton in order to export any data.

Once this is finished, open your model and skeleton in Maya, and then import the .fbx file you are using into your Maya scene. The data from the fbx skeleton should write itself onto the Maya skeleton and you should see your character moving around in Maya.

 

AND NOW THE LINKS....

 

THE

CAPTURE

PROCESS

 

SKELETONS AND MODELS - MAYA + MOTIONBUILDER

 

POST PROCESSING - MOTIONBUILDER + MAYA