Skeleton Creation In Maya:
1. First import the c3d marker data from a mocap file. I
did this by bringing the c3d data into Motion Builder and saving it as an .fbx
file. I then could use the Kaydara Plug-in to import the .fbx file into Maya
5. This file must be completely cleaned – all gaps filled. If the gaps
are not all filled, you’ll have markers that should have been on the body,
flying off the body, laying far from the body, or traveling in a direction 180
from the direction the rest of the markers are moving. You should see markers
moving through space that were on your mocap subject at the time of capture.
View
an example of the 12th thoracic vertebra marker laying on the ground and
not traveling with the other dog markers through space. It wasn't set to "done"
in Motion Builder. It is the small green dot in the lower left corner. It should
be on the dog's back. Note the other dot on the floor is the "Reference"
node that Motion Builder requires above all other joint nodes. It is supposed
to be on the floor. It doesn't matter.
2. Find a frame in which most joints are extended.
3. Make sure you are in "Animation" mode. Start creating joints/bones
of an animation skeleton with Maya’s Skeleton > Joint Tool. You’ll
want to face the character toward the z direction (another Motion Builder Requirement).
You will have to pick your local rotation axis for each bone that is created
at this time. One of Motion Builder’s video training modules showed a
skeleton created with the x axis down the bone, thus the order at creation was
xyz. However, because Motion Builder uses Quaternion rotation system and Maya
uses Euler, you can encounter Gimble Lock, if two rotation axes line up at a
point in time. This will show up on your animated character as a knee, elbow,
or hip suddenly twisting in an unnatural manner (90* or 180* off of what it
should be). I
had this problem a lot with the skeleton I created in Diva. So, I was very
concerned with this happening in Motion Builder. I built a skeleton with the
local rotation axes set to xyz with x down the bone, but it didn’t fit
the marker data very well in Motion Builder. So, I went back to Maya and set
every one of my local rotation axes to zxy, with z down the bone. The exception
was the hip or root joint of the skeleton. This, the paper recommended, should
have the z-axis pointing straight up in world space. So, this is what I did.
This skeleton, unfortunately, didn’t follow the marker data that well,
either.
4. After your skeleton is created to match the marker data, you’ll want
to rotate the joints so that the skeleton has all leg and foot joints extended.
This is how Motion Builder requires the skeleton to be imported in order for
it to “characterize” properly.
View
example of extended skeleton.
5. Freeze Transformations on the joints to zero out your rotations before importing
back into Motion Builder.
6. Make sure you have a group node above all of your
skeleton nodes, specifically above the root or hip node, called “Reference.”
7. Make sure you have named all of your joints in Maya according to Motion
Builder’s naming convention.
8. Select all your nodes, and export the data as an .fbx file.