jjpixelc I don't adjust the rotation of any bones (although I would love to) as I just can't make that work - everything gets weird if I try that :-)
Probably you are talking about the behavior when the Rotate
mix is between 0 and 100. You should be able to adjust rotation with a transform constraint by checking Local
and Relative
, set Rotate
to 100, and the use the rotate offset to change the bone's rotation.
jjpixelc I loose the ablility to rotate spine/neck/head bones on character B
Why? What prevents you from rotating the bones?
jjpixelc Some images on character B are deforming when their bones move.
Are the meshes weighted to those bones? With limited information I can only guess, but you may just need to reset the bind pose for the mesh using Update bindings. However, my guess is your problems come from nonuniform scale to adjust your character size.
Do you really need to scale bones? The length of bones is only a visual aid except for IK and path constraints. If you aren't using those, you can just translate child bones instead of scaling a parent bone.
If you do need to scale a bone, it's going to squish the attachments and child bones. You can deform meshes the reverse amount to make them look un-squished, but that only really works for attachments parented to the scaled bone. When child bones (technically all descendant bones) rotate, nonuniform parent scale is applied in the direction of the parent bone. That will cause your meshes to be skewed, they will scale differently at different child bone rotations. It won't be possible to compensate for such dynamic scale.
You can workaround this a couple ways:
Don't scale the bones. This should be fine everywhere except for IK and path constraints. IK constraints are more common.
When you do need to use scale, then scale uniformly. That means scale X and scale Y are set to the same values. With uniform scale child bones won't skew when rotated. You can un-squish your meshes and they won't skew/deform when the child bone is rotated because they get the same scale in both the X and Y directions of the parent bone.
Another option is to disable scale inheritance on the child bones. This allows you to scale a parent nonuniformly without skewing the child bones. You won't have to un-squish your meshes at all! Of course this comes with the drawback that scaling the parent no longer scales the child bones/attachments. That can make it harder to use squash/stretch in animations.
One setup is to use a parent bone with nonuniform scale, a child bone that inherits scale, then instead of putting attachments on the child bone, add a new bone that does not inherit scale and put attachments on that. This way you can choose which attachments get affected by scale inheritance. Being clever about where you put this extra bone with inherit scale disabled can give you different capabilities.
If you put the extra bone as a child of the child bone, then it can protect attachments that look like they are attached to the child bone from inheriting scale. The child bone will still inherit scale and may have other bones or attachments that inherit scale.
You could put the extra bone as a child of the parent bone. Attachments you want to scale with the parent bone are attached to that parent bone (like a leg). Child bones are parented to the extra bone, so child bones will not inherit scale from the parent bone (ie a foot won't stretch when the leg bone is scaled for a taller character). When you need squash/stretch in animations, you can scale the extra bone to squash/stretch all the child bones and attachments.
This can give you some flexibility, though you still won't be able to squash/stretch the root bone and have it affect everything. Note that at runtime you can set the skeleton scale X and scale Y to squash and stretch the entire skeleton, regardless of any bones not inheriting scale.
jjpixelc Is there a way to achieve what I'm trying to do here? Should I go about it in a completely different way?
Overall I think your approach is OK if you can work out the quirks, like avoid scaling as much as possible to adjust your skeleton for different characters.