
I selected the IK handle and locator and then added a pole vector constraint but it flipped my local rotation axis for all the joints and didn’t work the way the tutorial had stated. I found after much troubleshooting that the solution was to move the locator out on a different axis and it seemed to work after applying a pole vector constraint. I then used orient constraints on the joints to connect them in different orders and in the channel box I set the interpolation to no flipping. Then with the joints selected I set the amount of rotation for the mid joints in the channel box, one to 60% and one to 40%.

I used the same method for the forearm and for the shin and thighs. A problem that I ran into though was that the mirror joints tool wasn’t working like in the tutorial, probably because of the parenting and constraints, so I had to manually set it up on the other side of the model as well.

For the feet I needed to set up a foot roll, toe roll and heel roll system which I started by creating locators for each of the joints on the foot. First I parented a locator on the ankle joint and then zeroed out the translate and rotate channels to ensure that the locator is aligned to the ankle and then unparented the Locator. I then duplicated it and moved that locator to the foot bone. Then I duplicated again and parented to the toe joint and zeroed out the translate and rotate channels and unparented. I duplicated again and moved the locator to the heel and straightened out the orientation. Next I renamed all the locators appropriately.

I then used a grouping tool script to group each of the locators which allows the transfer of transform values from the locator to the group which is handy for keeping locator orientation. I then dynamic parented the locator groups to different joints so each would move with the rig in the right way. I parented the ankle locator group to the foot locator, I parented the foot locator group to the toe locator, I parented the toe locator group to the heal locator. I then constrained the ankle locator to the IK handle on the ankle with a point constraint. The rest of the joints I used orient constraints to constrain to the appropriate joints.
Afterwards I made curves using the Rigbox script and constrained them to the appropriate joints using the constrain tool (script) with maintain offset set to on.

For the hands I had to set up the double joints so that they would each rotate at 50%. To do so I used the connection editor and after loading both of the joints I connected the rotation of the primary joint to the rotation of the secondary joint. I then reparented all of the joints in the hand so they would be chained properly. Next I made curves for the wrist, hand and fingers and constrained them to the correct joints/controls.

For the leg IK system I started by setting up an IK handle between the ankle and hip joint at the top of the leg. I then used three vertices, one of the ankle joint, one on the knee joint and one on the hip joint and made a polygon out of them. I then moved the knee vert forward. This was done to find the right location for the pole vector so that the IK system wouldn’t twist. I then made a locator and snapped it to the vert I moved forward and after selecting the IK handle and the locator I used a pole vector constraint. I then made a curve for the pole vector and snapped and parented it to the locator.
An important note at this stage is that anytime I hook up a control I make sure to freeze the transformations before parenting or constraining so that I can return the control to its neutral state.

I then used the bind skin function to make a curve between the control and the knee, I did so by making a joint at the control location and binding it to the knee joint. This made a curve that would make it easier to locate while animating. I also made a group for the curve, set up a group and using the channel control editor to add an attribute to make the group a template so that the curve could not be selected while animating.
A problem I faced was that the pole vectors were crossed over to the other side of the model but it was the only way to hook it up. After talking to Fang I found out that the legs of the model have to be completely strait in order for the pole vector to work correctly and due to time restraints I could not remodel and skin the legs. Also when I tried the same method for the arms, which were completely strait, it did not work anyway so I had to keep the arms in FK.

I began skinning the model at this stage, I could write a book on the things that went wrong at this stage of the process but I will keep it short. I skinned most of the model using the same method which was to select the mesh then the joints and smooth binding the skin and then painting skin weights for each joint. There were a lot of problems along the way that I had to figure out myself due to the fact that we didn’t have much class time to troubleshoot and limited time to complete the rig. There were instances where the mesh would overlap the clothing, to fix this I ended up making more joints and using the add influence function to bind them to the mesh and then after constraining them to the right joint or curve I painted skin weights.

I had huge problems mirroring the joints of the arms and when I painted weights to the right arm, it would not work correctly. To further the problem, I could not remove the joints or remove the influence from the mesh without the mesh becoming corrupted. I probably skinned the left arm over ten times and trying to rearrange the joints but had no luck. I had a lot of problems with the body mesh not skinning properly after painting weights and the twist system I set up for the spine was not working correctly. In the end the only solution I could find was to remove the twist system from the spine which worked out fine for the final model.

For the face rigging I decided to make facial joints and then use set driven keys to make attribute sliders as well. This would allow the animator to select the face control at the side of the model and then use the attributes in the channel box to animate the face, but would also allow greater control when needed by allowing the use of controls for the different parts of the face. I set up the attributes by first selecting the face control then adding an attribute from within the channel box (edit > add attribute).

I then opened the set driven key editor and loaded the face control as the driver with a sub selection of the attribute I want to effect. I then loaded as the driven the actual control I wanted to assign to the attribute and under its sub section I selected the axis or rotation I wanted to assign. I would then set a key at the neutral pose. Then I would set the attribute to 10 in the channel box and move the control to the relevant position or rotation and set another key. This was the basic procedure and was used to key all of the attributes in the face control.
A problem I faced here was that the eyebrows and eye lashes were not combined to the head mesh before skinning which posed a problem as there is no way to add them after. I tried many times to combine them with no luck. After talking to Fang he told me I would have to copy skin weights which I did but the lashes and brow wouldn’t align to the skin properly.

After talking to Fang again he showed me a way to make corrective blend shapes. This was a complicated procedure but after playing around with it at home I was able to replicate what Fang had shown me. It worked much in the same way as adding attributes to the face control. I made a blend shape of the object I was correcting and then set the attribute to max which is where it would mess up. I then selected the vertices of the blend shape and moved them into a position so that the original mesh was where it should be. I then opened the set driven key editor and loaded the face control as the driver with a sub selection of the attribute I needed to fix. Next selected the original mesh and then in the channel box selected the blendshape and added it as the driven in the set driven key editor with a sub selection of blendshape > polysurface.

I then set the face control attribute to 0 and with the original mesh selected I set the polysurface to 0 in the input tab which is in the channel box. I then set a key, after which I changed the attribute to 10 and the polysurface to 1 and set another key. I also had to set a key somewhere in the middle of the transition to make sure it was perfectly aligned.
There was a lot more involved in setting up and correcting the face controls but this is the short version of how I did it.
A problem I faced at the end of setting up the face was constraining the face controls and in the end I had to make a separate save with the face controls constrained. This was because when the controls were constrained the attributes and controls would not work properly and when they weren’t constrained the head would of course warp because they were attached to the facial joints.

In the end I managed to get a working rig test which I didn’t think possible, there was only a small glitch when she does the head turn. As I have mentioned there was a lot more to rigging the model and problem solving than what I have mentioned here but this would turn into a novel. This was by far the most trouble shooting I have done on an assignment but at the same time I learnt more than I have on any other project. I am happy with the end result and due to the fact that I love modelling it has taught me a lot about the relationship between modelling and rigging.
gLike