Symmetric posing

Hi there,

I’ve been testing this for a while, yet I haven’t been able to create it yet and thought I’d ask this.

I’m aware of copy pasting of poses.

Is it possible to orient joints in armature so, that left and right side axis are aligned to create mirror behavior in for example legs and arms - if I select both left and right arm, then rotate left arm forward or backwards, up or down, both arms would do the same.

I’ve tried aligning joints in armature edit mode using Ctrl+R (roll) or Ctrl+N but seems like it’s not possible (or obvious) to rotate one continuous bone chain joint (clavicle-upperarm joint) so that it would create mirror behavior when rotated using rotate tool.

So, has anyone done this in Blender and what are the steps to achieve this?

had a quick look, for some reason local rotation on individual origins dosen’t do what I expect so need to double press the rotation hotkey (so r, x, x) to get local rotation of the bones in pose mode. You can get the bones doing what you asked in one axis but you need scale one of the bones by -1 in the axis that dosen’t do what you want. AFAIK you can only do that in pose mode and that’s obviously not very good to skin weights to so you might have to make a bone to act as a controller for your deformation bone and use rotation constraint. All sounds a bit messy to me and would break the copy inverse pose which I find really useful so might be worth dropping the idea.

https://dl.dropboxusercontent.com/u/1693140/game/blenderrotation.gif

@FrankieH: Thanks! It’s neat that you’ve got it figured out, but unfortunately I’m not sure if this is acceptable (for the reasons you you mentioned). I wouldn’t like to resort on negative scale objects, however nice to see that it is possible to somehow have mirror behavior!

Seems like Blender really wants to have Y+ axis along bone - always, no exception to this anyway? …and even though it’s possible to have up-down symmetry without negative scaling… which prevent creation of mirror behavior of rotations, Where z and x would be inverse on both sides, and y would be same, for example.

Ctrl+N or Ctrl+R options won’t help at all. Maybe I’m doing this wrong, but if these are only options to orient joints, this approach to rotations gives very limited options to deal with joint rotations.

Use a Transform constraint on the opposite bone with a negative rotation to the rotation of the target bone. You cannot play with the axis orientation of the bones, since they always obey the left hand rule, irrespective of whether you mirror them or not. You could also use a Copy Rotation constraint, with the Inverse set on the required axis so it rotates the way you want.

Cheers, Clock.

PS. Just Internet-search Left Hand Rule to understand this.

@clockmender: Thanks for the reply, I’m aware of issue you are talking about, but no, I’m not talking about it.

What I’m trying to explain, is that Blender way of thinking hierarchies of joints is quite “rigid”. Instead of having joints that are connected to each other, we have rigid bones where the whole bone orientation towards it’s child decides it’s rotations.

And then there is the way local rotation by gizmo is transformed into actual rotations in Blender…

It’s possible to have mirror behavior of joints for example in 3ds Max (or Maya too?), just by aligning joints in certain way, there is no need to change coordinate system handedness and such.

Example: Have two objects, orient/align x-axis of transform to x+ then right side object’s z down, and left side objects z can be up. Now right side object’s y points towards screen and left side objects’ away from screen. If I now rotate both in their local/gimbal coordinate system (more like parent in reality I guess), their rotation will be inverse in all axis.

It is just how the objects are rotated and how gizmo rotation is handled. I guess there is no one way to “model” this but to me it seems like Blender cant do this - or at least I haven’t found a way how.

Blender flows with the .L and .R for Symmetric posing. Two sides needs to be the absolute same as for the names and positions. Here are the steps. Please read carefully.

Step 1:
Delete right or left half of your rig but make sure you have your hips to head bones. The only thing is being deleted is arms, legs, hands, or anything that will need to be mirriored. Be sure you have all of your roll’s that you want to copy aligned either with CTRL.+N by axis or with CTRL.+R manually.

Step 2:
Rename your bones. You absolutely need to name your bones with correct endings! Left side is .L and Right is .R. So, an example would be (Shin.L/Shin.R) or (Hand.L/Hand.R)

Step 3:
Make sure your 3D cursor is to x0 y0 z0. A way to do this is to be in the 3D view port and press SHIFT+C.

Step 4:
Now we need to change the pivot point to the 3D cursor. One way is down at the bottom of the 3D viewport by clicking the icon, that is second from the left of the mode selection, and change it to 3D Cursor. I suggest setting up your constraints/IK’s for arms, legs, and etc. before going to the next step.

Step 5:
Alright, select your armature and go into edit mode. Copy all that is on the left or right with “.L or .R” and scale it on the X by -1.

Step 6:
Deselecting X-Axis mirror. You have constraints on your bones so in order to keep them be sure to deselect X mirror before going to step 7. To get to this you need to go to your Armature Options in your armature’s edit mode. So while in editmode go to your Properties. Press T in the view port to open or close it. You will find you have three tabs; Tools, Options, and Grease Pencil. Click Options. Keep this check mark unchecked before step 7. Cruicial.

Step 7:
Flipping names. I usually press the [SPACE] button ba efore I deselect the selected half. You will get a search bar and all you have to type in is Flip and you will get the Flip Names option. Now flip by X. Your .001 bones will go from (.L.001 to .R) or (.R.001 to .L)

Step 8:
Reselecting your X axis mirror. Not only reselecting your X axis mirror but besure to select the previous side that you copied from. Before step 9:

Step 9:
The Mirrored Bones rolls. Alright now that The X axis is selected and you have the bones that you recently copied from. Now its the fun part. You know that the other side of the rig needs to be rerolled but the quick fix is simple. Press CTRL.+R and press Enter.

Now you have a perfectly mirrored rig. I put these steps as simple as I could put it. Blender’s Naming for bones is different than Maya and 3Dmax but really simple to use after renamed. I hope this helped. Good luck!

Greetings,
I was searching for the same behaviour as ezez asked and I must say I understand him because I can’t find the desired solution aswell.
Correct me if I am wrong but it looks ezez is searching for Maya’s way which is a bit on different basis.
The problem is that you can mirror at once two rotations at once(based on Euler rotation principles) in Maya and when I try to reach the same result in the Blender I can’t find the solution thanks to linked geometrical definition of bones here.
Maya has a way worse bone(or joint is the right definition there) definition thanks to just one point in the local or world space and it gives you under the hood local rotation axis which is internally defining the euler way “bone” direction from the joint point of view but this way is much much worse from skinning or binding point of view. The internal definition of local rotation axis for each jont allows you to orient each joint(priciple is the same as in the Edit Mode in the Blender but it is happenning in the real tree hierarchy) so for example the front axis(in this case Y, let set it the same as in the Blender) can be flipped on the other side thanks to reorienting internal local rotation axis.
I grabbed two screenshots from the Blender and Maya for direct comparison so you can check diffencies between these two solutions.
What I would like to know if it is possible to reach the same rotation results in the Blender as in the Maya?

Thanks a lot.