Through my studies, I have worked with pose controls for the creation of both loopable cycles, as well as enhancing animations in various places to stylize movement. This particular example will outline use of this tool to enhance a character's motion.
The first thing I did was to take the character, find the area of the animation that I wanted to change, and repose the character to fit that change. In this case, I wanted the character to lean back more, as I knew I wanted him to pose as if taking cover against a wall, as he and the second soldier in the scene are scouring the area, looking for enemies, danger, or what have you.
Once I had the character posed properly, I selected the full body rig, and in the pose control tab of the resources menu, clicked the green additional sign button to add this pose to a list located within the same tab.
In a new animation layer, I set a base key frame for the entire control rig to ensure that this pose blended into the animation where intended, around the time of the character's last step, where he would transition into a newly created lean pose. (I would have also set an additional base key frame in an area where the pose could blend back into the original animation file, but this particular pose was meant to influence the rest of this character's animation track.)
From there, I navigated to the portion of animation where the pose was intended for, made sure to have the proper pose selected, and clicked the paste button to apply the pose to the control rig. After keying this pose, an additional animation layer was created, and any awkward transitioning was corrected...such as repinning of feet to the floor, proper movement of the waist as the character leaned back against the wall, and an additional step of the right foot as the character twisted back against the wall.
As previously stated, this tool is incredibly useful for creating in-game loopable cycles. Any time I have set out to make an animset for a character, the first step taken is to gather base poses with which to work from. These poses can be keyed to the beginning and end of each cycle so that they all loop seamlessly, and can be merged without blending in the story tool.
Aux Effectors
Aux effectors are one of the more effective ways to pin a controller, keeping it still and eliminating any jitters or shaky data that may be contained in that particular area of the character. In more then one scenario, I have used the aux effector to keep a character's foot steady, holding it in place to avoid any unwanted sliding. In this example, I did just that.
In order to prevent the right foot of the character from sliding awkwardly, I selected the right foot controller, and in the character tools menu right clicked over said controller and selected 'create aux effector'.
This created an effector correlating directly with the translational and rotational data of the controller at the exact key frame that the effector was made. From here I keyed the weight of the aux effector on the controller to 100 where the foot needed to remain steady, and zero where the effector was to have no influence on the controller at all; an effector can be made to influence a controller translationally, rotationally, or both as needed. In this particular animation, I wanted the foot to remain in one stationary position, and therefore had this effector influence the controller in all ways possible.
*Note: As depicted below, the influence of an effector can be seen as an outlining yellow box that is visible when the effector has any influence on the controller and is gone when the weight of the effector is at a value of zero.
Being that the effector is set to one position of the controller, if it should not have a strong enough pull to completely eliminate any sliding or shaky data, there is also the option to key the controller while it is still being influenced. This will snap the controller to the exact position that the effector defines (as depicted below). If necessary, several frames can be keyed to completely restrict movement and eliminate any unwanted motion of the controller.
In addition to simply pinning a controller down, an effector can also be used for several other types of applications, such as maintaining a rotational pull on the head or neck of a character as they walk, on a hand holding an object (for instance keeping the aim of a gun the same as a character moves forward or backward), etc.
In order to prevent the right foot of the character from sliding awkwardly, I selected the right foot controller, and in the character tools menu right clicked over said controller and selected 'create aux effector'.
This created an effector correlating directly with the translational and rotational data of the controller at the exact key frame that the effector was made. From here I keyed the weight of the aux effector on the controller to 100 where the foot needed to remain steady, and zero where the effector was to have no influence on the controller at all; an effector can be made to influence a controller translationally, rotationally, or both as needed. In this particular animation, I wanted the foot to remain in one stationary position, and therefore had this effector influence the controller in all ways possible.
*Note: As depicted below, the influence of an effector can be seen as an outlining yellow box that is visible when the effector has any influence on the controller and is gone when the weight of the effector is at a value of zero.
Being that the effector is set to one position of the controller, if it should not have a strong enough pull to completely eliminate any sliding or shaky data, there is also the option to key the controller while it is still being influenced. This will snap the controller to the exact position that the effector defines (as depicted below). If necessary, several frames can be keyed to completely restrict movement and eliminate any unwanted motion of the controller.
In addition to simply pinning a controller down, an effector can also be used for several other types of applications, such as maintaining a rotational pull on the head or neck of a character as they walk, on a hand holding an object (for instance keeping the aim of a gun the same as a character moves forward or backward), etc.
Constraints
Constraints are common to any animation program, and I have used various types of constraints in multiple studies to pin parts of a character's body to another object, vice versa, and/or alter animation data as necessary.
For this particular example, I wanted to set up a small system of parent constraints to have a character properly hold a gun with two hands, while still being able to gesture with one hand freely.
After taking the character and repositioning one hand to properly hold the gun, the first of three parent constraints was established, parenting the gun to the right hand of the soldier.
A null was added into the scene, and parented to the gun so that the left hand of the soldier would have an object I could parent it to.
After repositioning the left hand and fingers, and making sure the translational and rotational reach on the left hand controller were both set to 100, the third and final parent constraint was applied to the left hand, snapping it to the null that is attached to the gun.
Lastly, for any scenario where the left hand needed to be free of the constraint, it was a simple matter of changing the weight of the constraint to zero, and keying the weight at the proper time frame.
For this particular example, I wanted to set up a small system of parent constraints to have a character properly hold a gun with two hands, while still being able to gesture with one hand freely.
After taking the character and repositioning one hand to properly hold the gun, the first of three parent constraints was established, parenting the gun to the right hand of the soldier.
After repositioning the left hand and fingers, and making sure the translational and rotational reach on the left hand controller were both set to 100, the third and final parent constraint was applied to the left hand, snapping it to the null that is attached to the gun.
Lastly, for any scenario where the left hand needed to be free of the constraint, it was a simple matter of changing the weight of the constraint to zero, and keying the weight at the proper time frame.
Filters
On more then one occasion, I have found filters to be incredibly useful, and in recent studies have used them to produce a better quality of mocap animation in MotionBuilder.
There are multiple types of filters, including Gimble Killer (which deals with strange rotations of joints that occur when MotionBuilder misinterprets the value of a rotation...for instance a 90 degree rotation can be misinterpreted as -270 degrees, which will cause the joint to rotate in the wrong direction), Butterworth (which removes frequency and removes dents or awkwardities to a curve), the Key Reducer (which, true to its namesake, reduces the keys on the selected portion of a curve), etc.
However, for this particular demo, I will be outlining use of the Smooth filter, as I commonly work with it more then other filters while editing animations.
The first step in using any filter is to select the portion of animation data that the filter is to be applied to; in this instance I chose to select every curve for every joint on an animated skeleton in their entirety to maximize visual information.
Once the area of the curve is specified, it is a matter of determining how strong an influence the smoothing filter will have, specified by the width value in the filters tab. From there, click preview to see the effects on the curve, and either reset and change values as necessary, or accept to have the filter permanently applied to the animation curve.
The first series of images below details the progression of the original curves of an animation as they are smoothed down through use of a Smooth filter with a width of 4.
The next series details use of a Smooth filter with a doubled width value of 8. As can be seen, the stronger the width, the smoother the curve, and the smaller the number of necessary filter applications.
There are multiple types of filters, including Gimble Killer (which deals with strange rotations of joints that occur when MotionBuilder misinterprets the value of a rotation...for instance a 90 degree rotation can be misinterpreted as -270 degrees, which will cause the joint to rotate in the wrong direction), Butterworth (which removes frequency and removes dents or awkwardities to a curve), the Key Reducer (which, true to its namesake, reduces the keys on the selected portion of a curve), etc.
However, for this particular demo, I will be outlining use of the Smooth filter, as I commonly work with it more then other filters while editing animations.
The first step in using any filter is to select the portion of animation data that the filter is to be applied to; in this instance I chose to select every curve for every joint on an animated skeleton in their entirety to maximize visual information.
Once the area of the curve is specified, it is a matter of determining how strong an influence the smoothing filter will have, specified by the width value in the filters tab. From there, click preview to see the effects on the curve, and either reset and change values as necessary, or accept to have the filter permanently applied to the animation curve.
The first series of images below details the progression of the original curves of an animation as they are smoothed down through use of a Smooth filter with a width of 4.
The next series details use of a Smooth filter with a doubled width value of 8. As can be seen, the stronger the width, the smoother the curve, and the smaller the number of necessary filter applications.
Story Tool
Use of the story tool is fundamental to working in MotionBuilder, especially when merging animation together. In addition to this, it is also extremely useful in the scaling of data as well, to make a character's actions faster or slower, or to simply correct timing issues.
Merging animation tracks is a matter of finding a particular controller, making sure that controller is pinned or in the same desired area in both clips being merged, and using match options to combine the pieces into one continuous track.
Within this tool, one can also loop and scale animations in order to further edit data to extend cycles or manipulate timing. In the upper left of the story tool tab in the navigator, one can toggle between the looping and scaling options. When loop is selected, a track can simply be dragged by one end and extended into multiple. Depending on whether or not the track is a seamless cycle, the track can be cut into separate pieces through use of the razor tool, and additional merging can be done as necessary. In addition, with this option selected, an animation clip can also be reduced to a certain key frame, where timing will not be affected, and the animation will stop wherever the end of the clip is moved.
With the scaling option selected, an animation's length can be altered without losing any data. When the ends of the clips are moved, the animation's timing is altered to fit the new specified length. As previously stated, this is extremely useful for altering the timing of movements executed, to either make them faster or slower as per needed.
Merging animation tracks is a matter of finding a particular controller, making sure that controller is pinned or in the same desired area in both clips being merged, and using match options to combine the pieces into one continuous track.
Within this tool, one can also loop and scale animations in order to further edit data to extend cycles or manipulate timing. In the upper left of the story tool tab in the navigator, one can toggle between the looping and scaling options. When loop is selected, a track can simply be dragged by one end and extended into multiple. Depending on whether or not the track is a seamless cycle, the track can be cut into separate pieces through use of the razor tool, and additional merging can be done as necessary. In addition, with this option selected, an animation clip can also be reduced to a certain key frame, where timing will not be affected, and the animation will stop wherever the end of the clip is moved.
With the scaling option selected, an animation's length can be altered without losing any data. When the ends of the clips are moved, the animation's timing is altered to fit the new specified length. As previously stated, this is extremely useful for altering the timing of movements executed, to either make them faster or slower as per needed.
Ragdoll
The ragdoll feature of MotionBuilder applies a system of rigid bodies to a control rig, which can in turn be affected by a physics solver in the program. This makes it so that collision, collapsing, or falling animations can be generated from within the program as opposed to being acted out and captured. Though I have yet to use this particular tool in any finalized study (due to its random output, and limited controllability), I have still tested it to varying degrees.
The first step taken was to add a physics solver to a scene, as well as apply a ragdoll to the control rig of the character mesh. Once the ragdoll is created, each piece can be scaled and translated to fit the mesh properly, making sure that none are intersecting (as this would cause collisions within the body and create vibrations and jittery data). Once updated, the ragdoll can then be saved out, and loaded back onto the rig for future studies.
There are additional options for the ragdoll, listed in the ragdoll properties in the navigator. In there, aspects such as density of each rigid body within the ragdoll can be altered; for instance, if you would want the character to fall head first after colliding with a flying object (or something to that extent), you would increase the density of the ragdoll's head piece.
Once the ragdoll is created and all attributes are specified, it can then be rendered either passive, active, or active upon collision. When passive, the ragdoll will not respond to the physics solver; when active, the ragdoll will be weighed down by the solver, whereas if the ragdoll is set to active upon collision, physics will not influence it until it makes contact with another rigid body.
When properly integrating a ragdoll simulation with an animation, it is a matter of keying the ragdoll as passive where animation takes precedence, and active when physics is to take over. From there, turn the physics solver online, make sure the 'live' option is checked, and physics will weigh down the ragdoll at the specified active key frame.
Additional handkey editing of any recorded ragdoll use will be necessary to finalize the animation.
In the example of setting the ragdoll to active upon collision, no key framing will be necessary as the animation applied to the control rig will play out until contact with another rigid body takes place. The images below detail such an instance, as a run cycle becomes a reaction to a projectile assault.
The first step taken was to add a physics solver to a scene, as well as apply a ragdoll to the control rig of the character mesh. Once the ragdoll is created, each piece can be scaled and translated to fit the mesh properly, making sure that none are intersecting (as this would cause collisions within the body and create vibrations and jittery data). Once updated, the ragdoll can then be saved out, and loaded back onto the rig for future studies.
There are additional options for the ragdoll, listed in the ragdoll properties in the navigator. In there, aspects such as density of each rigid body within the ragdoll can be altered; for instance, if you would want the character to fall head first after colliding with a flying object (or something to that extent), you would increase the density of the ragdoll's head piece.
Once the ragdoll is created and all attributes are specified, it can then be rendered either passive, active, or active upon collision. When passive, the ragdoll will not respond to the physics solver; when active, the ragdoll will be weighed down by the solver, whereas if the ragdoll is set to active upon collision, physics will not influence it until it makes contact with another rigid body.
When properly integrating a ragdoll simulation with an animation, it is a matter of keying the ragdoll as passive where animation takes precedence, and active when physics is to take over. From there, turn the physics solver online, make sure the 'live' option is checked, and physics will weigh down the ragdoll at the specified active key frame.
Additional handkey editing of any recorded ragdoll use will be necessary to finalize the animation.
Solving
![]() |
Calcium |
![]() |
Solver |
![]() |
MotionBuilder |
Being that solving is mandatory in any motion capture project, I did not provide a step by step demo for this fundamental element in the mocap pipeline. However, I did provide visual examples of the programs capable of solving data that I am familiar with: Calcium, Solver, and MotionBuilder.
Subscribe to:
Posts (Atom)