Roll angles still broken - help

(AndyD) #1

I’ve tried everything I can think of except manually re-aligning each and every bone but no matter what I try, I cannot get my bones to align consistently throughout the armature. I’ve deleted all actions and animation keys and I’ve Ctrl-N’d and Ctrl-A’d a few dozen times but the angles refuse to align.

Here’s the 2.4a2 blend (the un-parented mesh is hidden on layers 1+2):

I’d really appreciate if someone can take a look at advise what’s caused all the different angles, how to fix them or why they can’t be fixed. I don’t want anyone to spend hours fixing it just in case I end up re-building but I don’t even want to start re-building until I have some idea how to avoid or solve this problem.

Help, pleeeease…

(Fligh) #2

They’s no broke.

When you add an (object, but let’s stick to) armature in Top view it lays flat on the Grid as do the X and Y axis arrows, and the Z axis arrow (this is the relevant part) points Up/Down relative to the grid (that’s the Objects Axis in F7).

(If you add it in Front view (Numpad-1) the Armature ‘stands’ on the grid and the Y and Z axis arrows change places (so now it’s the Y axis that points Up/Down relative to the grid)).

All this is irrelevant and of no consequence (yet), except for the fact that we have a grid to relate it to. Later, when there is a mesh and a scene it becomes relevant.

Now we go to Pose Mode and turn on the Axis button for Bones and no matter which view the armature was added, the Z axis is the “Roll Angle” of the Armature. To visualize it think of the Z axis arrow travelling thru both ankles (foot rolls around it), thru both knees (lower legs roll around it) hips (thighs roll around it).

That’s the Roll Angle and when you hit Ctrl-N it tries to allign the Z axis with that of the Object, but, if the average roll angle of the chain is not equal to that of the object it will use the chain rather than the object.


(AndyD) #3

But I thought CTRL-A was supposed to fix the “front view” problem by taking whatever is there and making Z align vertically?

The “Draw Axis” still shows Y as being aligned along the bone axes with X and Z pointing outward - just not consistently.

Although you say it’s not broke, it still needs fixing :frowning: Can it be fixed?

Should armatures be added in Num7 view then rotated then CTRL-A’d then CTRL-N’d? No tutorial has ever mentioned that as I recall.

(Fligh) #4

Lotsa questions in there.

Should armatures be added in Num7 view then rotated then CTRL-A’d then CTRL-N’d? No tutorial has ever mentioned that as I recall.

It’s all relative. That’s why I bothered to write the first 2 paragraphs. As long as, when you bend the foot, shin, thigh, the heel touches the butt and the toes are under the knee.

I’ve had a go at explaining this a few times now (I notice others won’t go near it) so maybe you tell me near as possible what it is you think is wrong, what the correct behaviour or procedure should be as you see it. The problem here is that without a definition and example of what ‘roll angle’ actually is, I had that eurika moment when I sussed it, and that’s what it’s been for me ever since. It might take some natty explaining to get my head to fit around what you think it is (or should be). But until you can get me to see it I’m going to keep tellin what I think it is and I may be wrong.


(AndyD) #5

Ahhh, rest assured I appreciate your time and realise that it’s often difficult to work out what’s in someone else’s head.

I noticed the “problem” when I first decided to try and apply the new rotation constraints in 2.4.

I tried applying a constraint to one elbow and of course it didn’t do what I expected (in terms of direction) so I turned on Draw Axes and saw the reason- the axis alignment wasn’t “typical”. In the case of this armature, the left and right arm bones (upper and lower) are all over the place. I expect I’ll face the same problem with fingers etc since the axes are inconsistent. I tried rotating a bone around it’s axis but it wouldn’t (I see now that this can be achieved with N-panel, roll angles)

So, I re-read the docs and it stated that the roll angles should be consistently aligned to make the armature usable. It noted that Z-up was usual for horizontal bones, Z-front for vertical bones. It recommended CTRL-N but that didn’t change anything on my rig - that’s when I realised I couldn’t do anything at all with the angles except editing one by one.

I thought it might not matter but I’ve downloaded 3 different armatures in the meantime for various reasons and noted that all of them have consistent Z-up on every horizontal bone. That’s when I figured I was probably going to run into problems if I didn’t sort it out - and since this model was to be made available for general use, it seemed wise to make it “generic” in every sense of the word by making it consistent with othe rmodels.

Plus, it’s frustrating to see that other armatures have exactly the alignments I’m after but can’t achieve.

So, whether z faces forward or upward is probably not a great issue - but having Z point at a variety of angles between the two vertical concerns me immensely - it just looks like potential trouble.

(Fligh) #6

I just looked again at a .blend of yours called GenChar (don’t know what date I downloaded it) and the Roll Axis is X, same as the F7 axis. If you have another armature please upload so I can look, it may just be your build that’s broken.


(AndyD) #7

GenChar would have been an early version (made in 2.37a). I do have a bunch of versions but I’ll need to check through and see if they are all early versions of this armature or not. Actually, do you want a version of this same armature or just another armature I’ve made?

Thanks again for your time. Everyone else is steering well clear :-?

(Fligh) #8

I just want one with messed up roll angles that I can test drive. The worse the better.


(AndyD) #9

Okay, here’s one.

I believe this is an early build of the same armature, with original 2.37a IK solvers (nulls) and targets still intact (It was built following Gabio’s tutorial in the animation forum).

I think I deleted a number of the IK-related bones in 2.4 so I could redo them using bone tips and try out other options. Maybe there’s something in that?

This might be the same as the rig in GenChar though. I notice that some of these bones seem to align okay with Ctrl-N but things still look messier than other rigs I’ve seen. I’ve uploaded it unaligned.

The real problem I’ve faced is not knowing if it’s my expectations, the rig or the software at fault here.

(Fligh) #10

I have looked and looked and find no problems with that one either.


(AndyD) #11

So do you get the Z axis (as shown by Draw Axis) to point upwards on horizontal bones throughout the armature? Even for the “ArveyKaye” armature?

If so, can you repost it so I can take a look please? Maybe it is my Blender (2.4a2, Mac OS 10.3.9, Py2.3) causing the problem.

(Fligh) #12

Aah… maybe I see what you expect?

“Recalculate Bone Roll Angles” isn’t akin to Ctrl-A in Objects (reset global values to 0.00), it’s more akin to Ctrl-N on Meshes; it resets the (local) roll angle to what it was when the bone was added.


(AndyD) #13

In that case, maybe I was rotating the view all over the place as I added bones. I don’t recall doing so but I wouldn’t be too surprised either. I’m just amazed that I’ve never seen any tutorial mention view angles when building armatures and yet every other armature I have here appears to have perfect axis geometry. Maybe the authors of those armatures just knew what they were doing.

At this point I guess I have to decide whether to persist with this one and fix the roll angles bone by bone (I guess I could do half and mirror it) or rebuild from scratch and watch the angles as I go.

Thanks for the effort.


I just tried a simple test. I added a bone in top view, one in front view and one in side view. Then I rotated the two vertical bones horizontally and the horizontal (top view) bone to vertical. All their axes align correctly (as I expect that is) with Z up on horizontals and forward on the verticals. In fact, you can watch the Z axis align itself as the vertical bones are rotated (in front view) to a horizontal position.

However, it’s when I recalculate roll angles that it screws up and the axes point in different directions. I guess the important point is (as you suggested) to not add bones in various views. The recalculation appears not to realign a bone to it’s original roll angle but to some average based on which view it was added in - as such x and z point out at angles instead of forward and upward.

It looks like the only way to get the Z-up result that I’m after is to build the whole armature in top view then rotate it to vertical pose in side/front view. At the very least to create the entire armature from one view only. I’ve never seen this mentioned anywhere though and since this automatically delivers correct alignment, I’m still left wondering what CTRL-N is supposed to achieve. :frowning:

(Fligh) #14

However, it’s when I recalculate roll angles that it screws up and the axes point in different directions

When looking at isolated bones, but results are pretty consistent with chains. Or, I should say, here on this build they are.

I’m still left wondering what CTRL-N is supposed to achieve.

It sets bone angles relative to other bones and the armature so that Actions and (especially) Constraints are calculated consistently.


(AndyD) #15

I wonder if you’re seeing what I’m seeing? Maybe I should have done this earlier but here’s what I get on ArveyKaye’s rig AFTER recalculating roll angles. The Z axis of each horizontal bone has been highlighted.

This is just one arm and hand with fingers and thumb. Except for the thumb they are all essentially horizontal bones with many connected in chains. As you can see, the Z-axis is simply unpredictably random which is going to make rotational constraints extremely difficult to do consistently.

FYI, I’ve also posted this question over at to see if anyone will jump in over there.

(Fligh) #16

Nope, this is what I see:

I’m using LGuillaume’s build from 20051117


(AndyD) #17

Hmm, seems I might have to wait for the next release for Mac :frowning: No wonder you couldn’t understand what my problem was. Hopefully my post over at blender forums will generate some interest from the coders.

(AndyD) #18

Further Information

I just unparented all bones, removed all IK and constraints then CTRL-N but it made no difference.

So, I rotated the entire armature in Edit Mode just a few degress then CTRL-N with pretty good results - all the Z axes pointed roughly upwards.

I then put the armature back in position and CTRL-N again and it went bad again.

I laid the whole armature on its back (in side view), CTRL-N with good results (Z-Up approx). I then rotated back into vertical position and Z remained pointing up. Hitting CTRL-N again sent the axes all over the place again. :frowning:

(Fligh) #19

In wonder if this isn’t related to the Z-Axis blues in curve paths:


(AndyD) #20

I just got a reply from osxrules on and he suggests aligning bones then applying the recalculation. I’ve just doe a quick test and it looks very promising [breathes slowly for the first time in weeks].

He’s also suggested that a script to make all “roll angles=zero” might be worthwhile for these situations. It seems odd to me that the recacluation code doesn’t already do that (it’s hard to see what it is doing in my case) but I never progressed past Q-Basic so I won’t comment on that any further :wink:

I’ve got some fixing to do…

Thanks for your time on this too Fligh. You’re an unstoppable asset here.