Creating the IK stretchy/FK arms was a very similar process to creating the legs, except I didn’t manage to find nearly as many bugs. Once I created the IK arm I discovered that Maya was having trouble calculating which direction the elbow should point, despite me having added a Pole Vector constraint. As the hand got closer to the body, the elbow would suddenly rotate 180 degrees. After some research into the problem I established there were a couple of things I could do to try and fix it. Firstly, the arm had been modelled without much of a bend at the elbow. Secondly, when creating the joints, I hadn’t created the bend in quite the direction I had intended. I wanted the arm to bend horizontally, but it was actually trying to bend towards the head.
To fix the problems I moved the shoulder bone and re-oriented all my joints.
Before setting up the IK I bent the elbow in the correct direction and set this as the “preferred angle”. This tells Maya when an IK is created that this is the axis it should try to bend the joint chain on. I recreated the IK system and it finally worked. I had also had some trouble with positioning the pole vector constraint, as my usual method was causing the pole vector to angle across the monkey’s back. Usually I point constrain the controller to both the shoulder and the wrist whilst making sure maintain offset is unticked. This causes it to be positioned exactly halfway between the two joints. I then use an aim constraint to get the controller to point exactly at the elbow (again with maintain offset unticked). Unfortunately, the lower arm is much longer than the upper arm, which meant the controller was past the elbow, and once aim constrained, pointed towards the monkey’s back. As such, I changed the weighting on the point constraint so that the controller was more level with the elbow.
I then created a stretch for the arm, just as I had with the leg. I parented the two ends of a distance tool to the shoulder and the wrist and used the length with a multiply/divide node and a condition node to calculate when the arm should be stretching and by how much.
Finally, I created a set of FK controls, choosing to use the curve tool and draw these around the body using snap to vertex. The difference in shapes between the boxier IK controls and the more curved FK controls provides another indicator for the animator alongside the colour scheme to indicate whether the limbs are in FK or IK mode.
Finally, I created a switch and wired things in the hypershade so that it controlled whether the deform skeleton follows the FK or IK controllers. I had created the finger controls like the foot (only one set of controls connected directly to the deform skeleton) so again I wired these up to follow the FK and IK (dependent on the switch) and to change colour like the toes do.