Whilst I was skinning I discovered yet another mistake with my leg (and arm) rigging. When constraining the three tibia joints so that they would always stay the right distance from knee and ankle, I used a parent constraint. I had thought this would mean they would twist nicely when the foot was rotated. What I had not thought about was that this would of course affect their rotation in all three axes, and not just the one twist axis I wanted. When I started working on the leg and looking at the movement during deform tests, I realised my mistake.
The joints were rotating and so rotating the leg mesh on an axis that the leg shouldn’t be able to rotate. I had to delete all the tibia and femur constraints (including the parenting to the deform skeletons) on the IK chains. I also had to delete all the skinning I had done so far, as the deform joints were also out of position.
I used the FK joints to reorient them correctly and then used a point constraint rather than a parent constraint to control their positions relative to the knee and ankle. I then wired up the ankle and wrist controller’s on the twist axis to drive the limb’s rotation. I simply wired up each of the tiba/femur joints to have 0.25 of the twist rotation of the ankle/wrist. Combined with the cumulative rotation of the parent chain, this caused the three joints to rotate 0.25, 0.5 and 0.75 of the ankle/wrist rotation.
Then I just had to parent constrain the deform skeleton once more, wire up the various switches and I could start skinning again.
Suffice to say, lesson learnt. I will be thinking much more carefully about which constraints I use in the future.