Monday 20 October 2014

Set Driven Key

As I've mentioned earlier, as well as manipulating control shapes around on screen, another way to interact with the rig is via attributes.

We have been learning about using Set Driven Key to control objects. It works a lot like animating itself, you select something and give it keyframes in different positions, only these keyframes are tied to an attribute which when you change the attribute it changes the object.

I've used set driven key on my hand controller to control the fingers. There are attributes which control the curl of each individual finger and then an 'all curl' which controls all those attributes. I was unsure of whether to set up 'all curl':
  1. 'All Curl' is set driven key against 'Index Curl', 'Mid Curl' etc.
  2. 'All Curl' is set driven key against the rotation jnt_thumb_1, jnt_index_1, etc.
For simplicity's sake I just used the finger curls I had already setup and connected them to all curl which has worked so I'm thankful for that. Some other rigs I looked at had set driven key for each individual finger joint but I had already spent enough time on this and didn't want to spend forever setting up countless joints.




The Set Driven Key tool works great but is not very intuitive. For a novice to this tool it would be very difficult to understand what is going on as there is no prompts to explain what to do. Once you know how it works its pretty easy to understand so although it could be a potential thing to re-work for my scripting tool I don't think this will be worth re-building.

Set Driven Key on hands generally takes quite some time. Again this something that could be scripted but I think is too advanced for me to attempt.

One problem I have run into is with the thumb rotation. All other fingers rotate quite well but the thumb's joints aren't all lined up correctly and the rotation it takes across the hand is not perfect. Although the 'Thumb Side' attribute can reposition it better I'd like to take a look at this later to try and fix the problem. I am unsure which rotation axis to use to get it to rotate properly so will come back to this later.

I've added in minimum and maximum values to these attributes so that the attribute value will not just keep going on forever if the user holds onto the slider (although the fingers wouldn't move further past their keyframes anyway), this is more of a usability thing as it looks less like a bug if the values are surpassed.
Another problem I foresee occurring is the fact that I've had to use guesswork to see how far to rotate the fingers. Without seeing the mesh move with it its hard to tell where the tips of the fingers touch the hand. Although not too much of an issue, this is something I can tweak once I've started skinning.

Monday 13 October 2014

Adding Control Shapes

Control shapes are main interactions between the user and the rig's functionality. They should be well located and easy to understand what you can do with them.



We have recently looked at how to set up IK solvers to create an Inverse Kinematics setup in a rig. I've shaped my wrist controllers around the wrist, this will be controller used to manipulate the arm. The shoulders have been given similar shaped controllers. Any controllers in the centre of the body have been given a circular controller scaled appropriately.

For the feet I edited the control vertexes to give control shapes that look like feet. We've been using a script to assist us in making these shapes as there are a number of steps involved. The important thing to note is that control shapes need to be able to be zero'd out to return to their default position. Having control shapes in offset groups allows us to do that (the group stores the translation difference from the origin).

As building control shapes and setting them up manually is quite time consuming and a script can be proven useful, this is something I may want to expand up for my scripting tool which could create control shapes with different shapes for different parts of the body.

I've given each control shape a colour, which helps with usability and distinguishing which control shape is for which side of the body (which can be useful when animating and limbs cross).

Problems arising here were mostly down to the resizing of control shapes which needs to be done in hull mode so it doesn't affect the rotation or scale values of the object. This makes things difficult for getting two shapes the same size and orientation. My rig's control shapes aren't perfectly even but not being perfect is seemingly allowed to a certain extent with rigging an organic character.

Monday 6 October 2014

Building the Skeleton

I have added a skeleton of joints to the character model. As my character is a human model its pretty easy to know where to put each joint as we know what is meant to rotate and what is not.


I have taken into consideration where joints are located in regards to the mesh, such as making sure they are in the middle of any edge loops specifically located there for deformation of that joint. In places like the knees I've located the joint towards the front of the knee more to ensure it properly deforms and reduce volume loss when it is skinned.


Some problems I have encountered were mainly due to how I built my spine, I never paid attention to how they were lined up (they were not all centred with the X axis) and so ran into a small problem when mirroring joints. All I had to do here was un-parent the joints, move them, then re-parent them.

I've also sorted the local rotation axis on each joint making sure that when all the joints in a limb rotate one way, they all rotate in the direction intended. Fortunately there were not many joints needing oriented, only the head, one arm (fixing one joint fixes the whole chain), one leg and a few rogue spine joints.


The orient joint tool proved very confusing to work with and I'm still not entirely sure how to get it working. It requires a lot of guess work knowing which way to flip things. This could be an idea for a tool to re-work for my scripting tool hand-in but if I don't understand the tool as it is right now perhaps trying to fix it without knowing the problem would prove difficult.

As discussed in an earlier blog post, each joint has also been named appropriately which means reading the outliner becomes a simpler task. Right now some joints are simply numbered after which chain they are in (e.g. jnt_R_arm_1, jnt_arm_2, etc.) which I may change later on if it proves necessary to name it the proper name (upper arm, forearm, etc.)

Friday 3 October 2014

Choosing a Character Model

I've chosen the 'Mery' character model to rig for this module.


When searching for models a lot were available but many were unsuitable for rigging because they were either too high poly or required signing up through a website. In addition it needed to be compatible with Maya 2011. There aren't loads of character models free to use but there a good number or already rigged characters available. When I included those possibilities (I'd just remove the rig and use the model) then I had a bit more to choose from.

These are a couple of character models I considered before choosing the Mery model. I also considered re-rigging the MikeAndTina or Sam rigs that I've mentioned earlier.





I chose the Mery model for a number of reasons. I decided I wanted to rig a character to be used in animation. This is mainly down to my preference as someone who likes to use rigs specifically for animated scenes. The original Mery rig was also designed for animation so therefore the character model is suitably high poly to work for animation. The character model is also appropriately modelled to be rigged in the first place with edge loops being where they need to be such as in elbows, knees and anything else that is designed to bend or rotate.

The model itself is well built and looks great as a character to animate with. My fondness for the original rig and its design influenced this decision.

The face is sufficiently detailed and contains all the necessary edge loops to be able to have facial controls, again this was a given due to the model's official pre-existing rig.


The model is split up into several meshes, one for the skin, and individual meshes for the hair. Clothes are also separate and even individual parts of the shoe for example are separated. This is one problem I do foresee being a potential problem in the skinning process later on where vertices are assigned to which part of the body is moving. The shoes' mesh is quite complex.


As the original Mery rig was designed for Maya 2013 and up, the mesh had to be extracted from the file and saved out. As the original rig is very advanced the mesh was tightly locked up and uneditable at first glance. I'd like to thank Lynn Parker (tutor) for helping save the mesh out as an OBJ and FBX file for me to use. 

Looking at Other Rigs - Continued

I have collected a number of rigs to look at. Some of which I have used to animate and some just to see how they function. I will list some of these rigs here and some of their identifying features.

Andy Rig


  • Can switch gender and clothes via attributes.
  • Limbs can be stretched
  • Facial controls that more than one aspect of an object, i.e...
    • mouth slider can control shape of mouth and jaw rotation
    • brow slider can control elevation of eyebrows but sliding to the left or right controls which eyebrow is affected more
  • Ability to control where elbow/knee controls are parented to (either part of the rig or the world)


  • "Breathing" attribute that deforms chest
  • Help toggle that displays text around some controls explaining how they work
  • FK controls have hidden nodes to help prevent gimble lock
  • Facial UI looks like a face, moving the controls also deforms the control's shape
  • Eye aimer control can be locked to world, moving eyes also moves eyelids and parts of the face


  • Multiple attributes allowing you to change the default shape, size, gender and proportions of the character model.
  • Facial controls placed directly on the face
  • Squash and stretch options for limbs
  • Scaling options on many limbs (a tiny head is amusing to me)


Thursday 2 October 2014

Looking at Other Rigs

As part of some research into rigging for animation, I have downloaded and tested other available rigs on the internet. I've taken into consideration how they function, how their controls work and what they look like, and any additional features they have that would set them apart from other rigs.

I've also been learning a bit of 3D animation so have been able to sample a few rigs already.

The 'Mike and Tina' rig is simple to understand and use, yet is also very reliable and has a number of features that can be used. It has an FK/IK switch so you can move limbs around in multiple ways: such as from the hand (which moves the rest of the arm) or rotating each joint (hand, elbow, shoulder) individually.




For controlling the face there is an interface which follows the head. Many elements on the face can be controlled by individual sliders. There's also a face camera to allow you to animate the face up close even if the character is moving around.


A recent rig that was made available is the Mery rig, which is very advanced and contains a whole range of features, while still remaining very simple to use even for a novice in Maya. The character design resembles something from Pixar and with the in-depth facial controls and control features it is a very powerful rig to animate.


Mery also contains a facial user interface although is not labelled like MikeAndTina's. Fortunately the location of these sliders match up with the layout of the face so you can make a pretty good guess as to which control controls what.


There's also IK/FK switches on almost everything and I prefer the hand setup to other rigs as it allows you to just grab a controller and do what you want with it rather than messing with values. For selection of multiple fingers for example you can use the picker tool which comes with the rig. This picker tool is an example of a script that could be useful to look at for my scripting tool later on.