Rigging Projects

A Narrative/Dev log of my triple AAA-esc rigging work for Pariah.

(Work in progress)

This project was an assignment I set myself for my GAM 340 module, a full body rig with extra controllers and a functional facial rig ready for animation. Ever since i joined into second year, I found within my time at university I always wanted to know how things work and how to go about making it function. Rigging is the best way within my field of animation to accomplish this while also learning the knowledge and advanced tool sets for the games and film industry.

As this was a major task to take on i asked myself, "what would be the best research method to develop such a rig?" I found that the best way to get started with the task was to look into the rigs that are reliable and fit very close to my assigned project. The main two that influenced this was the Azri rig found here: https://www.gameanim.com/product/azri-rig/ and the Zelda rig that came out recently also found here: https://gumroad.com/thestoff#aBcqX.

These set the foundation of what is sort after in the games and animation industry, which helped me develop the rig in a more efficient way. 

Prepping the Rig

Rigging as people know can be an arduous task if not planned out before hand. In order to counter this i set myself a plan of action in a list format and assigned an appropriate amount of time to each task. The tasks below are split into there own distinct category's for the narrative process.

Here's the list.

                          - Joint placement and Hierarchy

                          - Naming conventions

                          - Joint orientation

                          - Building the skeleton for IK/FK switching

                          - Building and setting up control handles

                          - Set driven and attribute based controls

                          - Setting up a reverse foot set up

                          - Creating a facial rig

                          - Advanced cartoon eye rigging

                          - Special joints and extra additions.

                          - Painting skin weights

I will be writing a short narrative on each process.

Joint placement and hierarchy

Joint placement was very important, especially for this rig.

The reason being was due to multiple bind-able objects on the characters mesh, such as the belt, satchel, hair, ears and ribbons.

I made sure the positioning was correct especially on the belt and satchel, this was so I wouldn't run into any major issues later on.

To make sure the orientation was correct for the base skeleton I would use the show local rotation axis option shown just above. Using this option helps tremendously when you are creating an elaborate rig, using this option helped me correct all the orientations within the rig and allow the model to deform in the appropriate manner. This especially helps when you are setting up IK to FK joint chains with arms and legs.

Building the skeleton for IK/FK switching,

setting up control handles and creating set driven and attribute based controls.

As the rig will require both IK and Fk controls I decided to create 3 different hierarchical groups for the legs and arms. The first group are the deformation joints which are the main influences on the model using painted weights. The second and third joint chains are the IK and FK versions which will allow two different ways to animate the arms and legs.

To make this effective I would create orient constraints to each corresponding joint hierarchy e.g. IK elbow to Deformation elbow and etc. Doing this allows both joints to influence each other when rotated by the parented controllers in the rig. This took a bit of a adjusting to get functional but worked non the less.

(IK and FK joints within the hierarchy)

The next step was to start creating attributes to switch From IK to FK. For this I used Set driven keys.

The Set driven keys within this rig are float value based attributes rather than integer based, this helps when you want to set the animation in numerical increments rather than just 0 to 1 which just snaps rather than creating a smooth transition. I made it so the best way to get the best results is to hold 'ctrl' and select the attribute in the channel box, then clicking in the middle mouse button and scrolling will activate the set driven key animation. 

With the arms i made it so that when you switch the arms form FK to IK it will just switch the weight value according to which one you change it too.

The same thing was done for the Hands with set driven keys but this time I set the value to go negative to allow more exaggeration in the fingers when curled, this was done in the feet as well.

(The controls for the hand was created with the CV curve tool along the hands vertices).

Setting up a reverse foot set up

Similar to the set up for the arms, I created the same attribute that allows IK to FK blending in the legs.

But this one was a little trickier as the grouping of the IK handles had to be correct in order for the reverse foot set up to work. As you can see in the gif above, I created a list of attributes that allow the animator to change the pivot and positioning of the foot for walk cycles and posing.

(showing off the start of a walk cycle + Video showcasing it below)

(Quick video showing off the fringe controls on her hair.)

Creating a facial rig and advanced cartoon eye rig setup

Creating a a facial rig was no easy task but I got there in the end.

To set up the rig I had to learn how to create specified scripts that allow full control of the eyes, with blinking attributes and curves that attach to the joints, paired with locators that connect along the eyelids.

 

These are the two scripts that were used to create the eye rigs.

To explain it simply, the one above is the script which finds the locator put within the centre of the eyes mesh. Then with the verts selected around the eyelids (top and bottom) it will automatically create joints with correct orientations on each vertex and rotate around the eye perfectly.

This code just above is for creating curves along those joints and create a smooth movement that is parented to controllers on the rig. This code will find the position of the joints and check the world space to find there placement along the verts. The curves will parent to the joints and allow for an attribute to be created called 'Smart Blink', this is created on the main eyelid controls.

(The eye rig shown here, joints follow the verts along the eyelids).

(Facial expression tests)

(Pose test based of my most recent artwork)