- Common Pitfalls
Tutorial One explaining common errors in the rigging process. (YouTube, 2016).
A character rig is classified as joints and controls to move the character. The rig is dependant on the motion required- for example if the character is biped or quadruped. The rig consists of an IK and FK joint systems on the torso, arms and legs to give as close to real time performance as possible.
In this tutorial, it was suggested that I cut the geometry of the dress. The geometry is then parented to the corresponding joints. This system allows the rig to account for volume with using attributes like the squash and stretch.
The rig is based on a single skeleton, naming is important in this and the modular set up will allow me to reuse the skeleton elsewhere, given the isolation of the arms, legs, head and torso.
The FK control is parented to the FK JNT, however it is important to note that for this to work, the FK transforms must be parented to the JNT itself (directly).
It is important to lock and hide any attributes or nodes that the animator should not touch (as it will break the rig).
The rotation axis must be consistent throughout each joint chain. For example, on the shoulder, if it does not much up, to return to the original bind state, the value of the joint needs to be remembered each time.
The rig is done in a gimble mode set up, allowing the locking of the rotation order, joint and the control. The gimble mode allows for a continuous rotational values and that they are on an axis. It also allows for the prevention of flipped controls. The rotations on the joints must be done one at a time in a specified order.
Custom attributes allow for less tedious animations, for example in the foot were the __twists__ and __rolls__ are available to be used.In the shoulder rotation (using the control) the head follows as the head appendages to the shoulders in a local space. Creating custom attributes in this case allow the head to be moved at different degrees without needing to continuously key frame it.
When moving the controls to a certain point, the joints have a set distance before they stop. This is because the joints have a fixed length. This lack of control in stretching to wanted poses therefore acts against the joint control . However, this does add dynamism and realism to the character.
Sometimes, it is needed to switch between the IK and FK rigs- to allow this to happen, the keyframes would have to be in the exact same position. A tool needs to be created to create an automatic switch between IK and FK.
2. Basic Spline Torso
Creating the Basic Spine Torso (YouTube, 2016).
In this tutorial the spine is split into two major parts;
- The main result spine IK spline, allowing for realistic rotation in the shoulders and hips.
- A FK spine on top of the IK, allowing for minute control over specific torso parts.
How is this created?
To increase the rigs performance, a proxy rig is used. The geometry is spliced and is parented to a corresponding joint. To do this, I had to go through each part of the body and extract the geo for the arms, hands, torso, head and legs. For each elements I had to then delete the history and rename appropriately (e.g. Torso_geo, forearm_geo). I then had to reparent to geometry to the same level and remove any empty nodes and then parent the head features to the group too.
The first element to work on was obviously the torso, so I had to unparent it from the group. I then had to create 7 joints from the hip, ending mid sleeve to create the spine. Then, I had to splice the geo to match the joints. I then selected each section, extracted the geometry and deleted the history. I then followed the naming convention for the geometry (hip_geo–> spines_1-5_geos–> shoulder_geo).
It is important to note than not all the joints follow the same rotation axis, I therefore had to set the joint orientation. X acted as both the primary and secondary world axis rotation and Z acted as the secondary axis. Most orientation are done in the positive direction as it is the most common bend position.
I then had to create an IK handle to allow control of the spine from one joint, but the rest of the spine would react to this. Instead of an IK an IK spline is used as it allows the control of the spine bend from different points. The bind curve (created using a joint pair) will act as the control. I had to duplicate the spine, delete everything except spine_1_JNT and spine_7_JNT. I then renamed these to both hip_bind_JNT and shoulder_bind_JNT. I had to select the two bind joints and the spine curve and bind them. The options had to have bind to set to selected joints with a maximum influence of 2 bind nodes. When I rotated the bind joints I found that the spine follows perfectly.
3. Torso IK controls, rotation orders and twist
This is were my rigging failed- Alec suggested a second set of tutorials to use. (YouTube,2016).
I found that when doing this tutorial, my rig would not follow the correct rotational axis when orientating the spline joint.
In this tutorial I had to create controls and the ability to twist the torso. This made it easier to pick the control curve, allowing to interact with the rig, without needing to touch it (sometimes this can result in breaking the rig by selecting the wrong parts).
How to create this
I first had to create a cube and centre it on the hip bind joints. Next I modified its shape to fit that of my own character. It said the a nurbs cube is not used directly as it creates more than one curve and to interact with a certain part, we would have to select a specific curve, as apposed to just one overall. To create the nurbs curve element I created a linear EP curve, tracing the shape of the polygon. Once done, I deleted the polygon element and renamed the curve to hip_CNTL. To create the shoulder control, I duplicate the hip_CNTL and shaped to the top of the spine. I then reflected it in the Y axis, resizing to fit the shoulders. I froze the attributes of both these controls.
I then had to adjust the rotation orders, to allow all desired poses to be reach (the example given was sitting with crossed legs. Incorrect rotational order gives a stiff, awkward pose). I had to set the rotation controls to gimble mode. When testing the control, it was noted that as I rotated in y, the x follows. However, z does not move. The video explained that the axis in a rotation order effects the axis in front of it. In our case, we want to evaluate Z after y, with x following y. This therefore left us with an order of ZXY, this allows the character movement to be more natural, allowing us to bend the hip and then move it from side to side. This order had to be set on the hip_CNTL, hip_bind_JNT and shoulder_bind_JNT. Once set, I then had to parent constrain the shoulder_CNTL to the shoulder_bind_JNT. This is then repeated for the hip_CNTL and hip_bind_JNT. This allows so that either curve can control the spine.
It was noted that once all these things were done, the spine could not twist. I had to fix this by selected the spine IK and opening the attribute editor, going to the advanced twist controls and enable the twist controls. I then had to give the twist a direction. Setting the world type to object rotation up/end tells Maya that the along the vector perpendicular to the up vector. I then had to change the settings in the spline, to make them face the same axis in -y. I then had to change the up vector value to -1 in the y axis and the up vector 2 in z to -1. This is were my spine decided to no longer worked. I restarted from the beginning following the instructions, however it kept happening.
I’m going to move on and try something else.
My rigged spine until I had to change the twist. The top of the geometry seemed to remain facing the opposite direction, no matter what I tried.