Some bones mirror on multiple axes when posing

I downloaded a model from the internet, and since the bones were broken, I had to re-position them myself. They aren’t mirrored perfectly, since the armature was oriented wrong when I first imported it and I didn’t realize it until later. There was one thing I couldn’t figure out, though. When using X-axis pose mirroring, some bones seem to be mirroring on all three axes at once.

The thigh bones exhibit the expected behavior. Mirroring along the X-axis does just that - the pose is mirrored along the X-axis and nothing else.

The upper arm bones, on the other hand, are completely out of wack. Mirroring along the X-axis also mirrors along the Y and Z axes.

And don’t even get me started on what’s happening with the foot bones. It looks like the rotation is getting rotated in some arbitrary direction and amount, if that makes any sense?

Here’s the rig:

I’ve tried re-orienting the armature relative to the world and the bones relative to the root of the armature, I’ve tried un-parenting and re-parenting all the bones, I’ve tried resetting the weird roll values on them, I’ve even tried deleting a couple of bones and replacing them with ones bound to the same vertex groups. Nothing even changed the manner in which the broken bones are broken, much less fixed the issue. I also posted this same problem on two other sites and got nothing. What is going on here?

Is this something like you’re looking for? When I faced everything to the front, moved the rig so it was centered to the world then applied ROT LOC and SCALE to the rig, and did some very minor clean up in edit mode, It appears to be working, at least, I’m not noticing any pose mirroring issues.

Yep! That’s what I was looking for. The materials are broken now, so I’m going to have to figure that out, but other than that, it’s all good.

My bad, I just opened your file and I was wrong. Your bones just aren’t mirrored at all, because 1.they don’t respect the necessary naming convention and 2.the armature object itself is rotated. So what appears to be the X-axis (in world space) is actually the Y axis (in object space).

  1. orient the armature and the character together so they’re facing negative Y.
  2. apply armature transforms (ctrl+A in object mode).
  3. rename symmetrical bones with respect to the naming convention (names have to end with .L and .R). Blender is a bit picky, you can’t use underscores, it has to be a fullstop.
  4. transform (in edit mode) your bones slightly so Blender will update the symmetry (even starting a transform and typing 0 will work, so your bones don’t actually move).
1 Like