The draugr was the first character that I animated for the game. He has a much more simple set of animations than Vidarr's: a few idle poses, walk, attack, and death.
The rig is your standard IK setup for limbs, a few basic FK spine controls, and pole vector constraints for orienting the position of the draugr's elbows and knees. I also optimized the rig controls for animating by locking, hiding, and making unkeyable all unwanted attributes.
I did include a few special controls to enhance the movement of the draugr; there is a control attached to a one-joint IK which manipulates the draugr's gaping mouth, and another for the shield on the draugr's back.
Vidarr's rig was re-done to match the utility of the draugr's.
For a little extra freedom with animating I added controls to raise and lower Vidarr's shoulders and controls to bend his toes a bit. The model itself was not well-crafted which made skin weights exceptionally wonky for the toe controls.
The hip control's y-rotation is connected to an IK spline along Vidarr's spine up to his neck.
I also created some driven keys that control Vidarr's hand language. When the control is pushed outward the palms extend and when it is pushed inward towards his wrist Vidarr's fists close.
Parenting the sword, a separate Maya object, to Vidarr's wrist node hasn't given me problems yet.
Since no real asset management pipeline is being used for this project I have done my best to manage my animations as cleanly as possible. A few notes:
- So far, all the animations of a given character are located in the same file. I simply animated one action, then I start the next animation a few frames afterwards.
- The graph editor and dope sheet make it simple enough for me to offset animations frames if an animation needs to be longer or shorter.
- Since surfacing is being done in Mari, I simply created automatic mapping UVs while the rigs are in their bind pose (our surface artist does the same) so that the texture file can be re-referenced without UV problems.
- Any corrections to skin weights will automatically apply to the rest of the animations.
- This method saves me time and sanity; I only need to keep track of one animation file per character.
To improve my workflow I have created three custom tools:
1) FBX prep - Runs a script that preps the animation for export as an FBX to Unreal with just one click. Specific steps are as follows:
- Delete non-deformer history for all visible geometry
- Select the skeleton's joint hierarchy and bake the IK animation for however long the animation playback range is set
- Delete all IKs and controls, leaving just the geometry and skeleton.
Note: The script searches for certain names of groups rather than types of objects. Thus I have to follow a few personal "best practices" for the scene - the geometry mesh for the character must be named "Geo", any reference geometry must be named "GeoRef", the skeleton root joint must be named either "Hip" or "Root", and all IKs and controls must contain the prefix "IK_" or "CTRL_" in their names.
2) Export All... - More of a shortcut that exports the scene as an FBX set to my preset for exporting to Unreal.
3) Goto Pose Tool - Doesn't have anything to do with the "goto" command in programming. Goto Pose brings up a window displaying all current animations for the character as well as the start and end frames for that animation in the scene's time slider. Clicking a given pose's name snaps the animation playback range to that animation's. This saves me a lot of time trying to find the playback range for a given animation.
Note: In its current state, the Goto Pose Tool can't interactively manage poses in the tool window; any new animations and values for a particular pose/animation have to be written into the script itself. The tool currently only works for Vidarr.