Hi, I’m wondering if anyone can take a look at this and see what’s happening. I’m rigging a model for another student and it’s all looking nice, deforming properly but for one issue with the rotation of the hind legs and “hips” of the creature.
This is how it looks normally:
Having rotated the model roughly 90 degrees clockwise I get this:
The hind legs use IKSpring solvers which might be the cause of the problem, but even after removing the hind leg joints and all related controls, locators, etc I still get the hip twist. My hind leg setup was based on this tutorial.
I’m guessing it’s a simple double transform problem but I can’t find the connection between the rotation of the hips and the main controller. Can anyone see why this is happening?
You can’t rotate clusters, but your spine joint isn’t parented under ctrl_puppy_all, so it isn’t rotating properly. That is the source of the effect.
You’ll need to parent (or constrain) the spine under the ctrl_puppy_all.
As a general rule, parent everything except clusters and skinclusters under ctrl_puppy_all. That means all bones. So parent the skeleton, but UNPARENT the clusters. (and possibly turn relative on or off.)
Then you you can drive the clusters by connecting their translation to the controls. (Rather than constraining.) But the clusters will remain in global space.
Once you do that, you’ll see you still have some double-transforming leg pole-vectors or twist. (I didn’t look into that.)
Another alternative is to use 3 joints to drive the ikspline, rather than using clusters. I’ve found clusters to be confusing hierarchically, so I mostly use skinClusters. You can then parent and rotate the joints freely.
Thanks clesage, it’s certainly given me a lot to think about. I’ve been deleting various parts of the rig and checking to see if the rotations are still off as I’d been working under the assumption that the IKSprings I’d been using were related as I’d never used them before. I deleted them and still the hip rotates. I’ve been looking at the hip rotations and they’re not zero’d out so that’ll be the next thing I test. Searching on Google I’ve seen some people with similar issues that think having non-zero rotations before applying the IKSpline causes similar problems.
I’ll post again once I get this fixed to let you know what I eventually did. It might be I just remove the clusters and IKSpline altogether and try another approach.
[QUOTE=clesage;15355]You can’t rotate clusters, but your spine joint isn’t parented under ctrl_puppy_all, so it isn’t rotating properly. That is the source of the effect.[/QUOTE]
Just doing this solved the spine twisting effect as you said, but I managed to solve the leg twisting problem by adding two new joints extending from the root joint, one for each leg, so that I could have a few joints to which I can point constrain the legs. Writing this I realise I could probably have just one… :rolleyes:
Once I’d done that I pulled the leg joints out of the main joint hierarchy so that it sit in the group that contains the ctrl_puppy_all control. The IKs are controlled by the control shapes, which are in the main hierarchy. The legs get a clean translate/rotation inheritance from the joints I’d added so seem to rotate like they should.
The only problem is that I’ll need to paint the skin weights again but I’m happy to do it if the skeleton beneath is working properly.:):
Are they all the same influences? Reference in the old version of your scene and copy weights. You don’t have to paint from scratch.
You can also Detach Skin with “Keep History”. Move your joints around. When you reskin the geometry, it will remember what your weights were and put them back.
EDIT: If they aren’t the same influences, but they are the same number/amount of influences, just make sure the names are the same as the old influences, and copying weights from a reference will still work.
I thought I’d be able to do something like that but haven’t had to in the past. I do normally use Keep History when I detach the skin but at some point in the latest version of my rig it disappeared. I have plenty of old versions to work from though so doing what you’ve suggested should get me at least close enough to what I want. Thanks again for the advice.
update: Imported a reference of a version of the rig with the correct skin weights and copied the weights over to the new mesh based on joint names. Worked a treat.