Bones in default armature, how to rotate them correctly?

If your topic doesn't fit anywhere else, put it here.

Moderator: joepal

Bones in default armature, how to rotate them correctly?

Postby pepo » Tue Oct 06, 2020 8:19 am

I am using the Default skeleton, and looking at the shoulders and hips, I see more bones than humans actually have. Additionally, shoulder joints are not at a place where the ball joints actually are. Instead, two "diagonal" bones "shoulder01" and "upperarm01" connect "clavicle" and "upperarm02".

I understand that the additional bones are inserted to get better deformations with just weights, instead of needing to use pose-dependend shape keys (joint correction morphs), so I would like to keep using this skeleton, instead of using a simpler one.

The default pose has somewhat angled arms and legs, and I am fighting with rotating them back to a normal standing pose, with nearly closed legs, and hanging arms. Using Blender, I can rotate all bones just fine, but my problem is that I don't know which of the bones need which rotation to accurately simulate rotation around the actual ball joints (e.g. for animations).

Inspecting some community-provided poses in Blender show many different values, some looking acceptable, some looking weird, but none of them looking correct. My own attempts don't look good either.

I currently use these values for a hanging arm, but using these to interpolate a move from the default pose look wrong.

clavicle Z = 0.05
shoulder01 Z = 0.1
shoulder01 X = -0.1
upperarm01 Z = 0.1
upperarm02 Z = 0.1
lowerarm01 X = -0.2

So my question is, if there is any "formula" to transform the (single) arm/leg angle (front view) to the (multiple) armature bone angles in WXYZ?
pepo
 
Posts: 21
Joined: Thu Oct 03, 2019 12:03 am

Re: Bones in default armature, how to rotate them correctly?

Postby punkduck » Thu Oct 08, 2020 7:14 pm

Well the skeleton and weighting itself is one of the biggest problems for all characters (not only in MH) and especially some poses will create problems. Typically there are a lot of methods to get better results, like additional shapekeys, helper-bones, keep volume + no keep volume used in blender by a vertex group etc. etc. etc.

We can do tweaks in Blender for a good render but for a game one need a straight-forward method.

Starting with the pose we have, I am not quite sure but the pose was created like this to have some rotation planes pre-definied. If you have two bones like upperarm01 and 02 which use the same axis, a rotation plane is undefined. But for some joints it makes sense like for the elbow where we usually have something like a hinged joint. The "pre-rotated" lowerarm bone automatically creates the plane. Some of the bones are splitted in the middle like lowerarm01 and 02. This allows a better weighting and the texture will be less distorted, But of course only rotation in local y direction makes sense in blender for this joint. Same with upper and lower leg (mostly). So for that it was just the case to have less distortion. For the shoulder: try to do a typical fashion pose, so hands behind head ... without the chain of clavicle and shoulder, upperarm etc. it is hard to do.

So that's the reason for that default skeleton. I tried similar things with a bento or also rigify, in a way the problem is similar. Mindfront explained a typical problem and showed how he solved it:
http://www.makehumancommunity.org/forum/viewtopic.php?f=2&t=15545&start=102

Now about your values: We cannot give the real values. Best use local rotation in Blender, otherwise it is hard to work with that.
Only thing I normally do, which is different to your setup: I use only local y rotation between upperarm01 and 02. (okay for that fashion pose above I may use it different to cheat a bit :mrgreen: )

The simple reason for not giving you exact values is that the bones are created inside the human depending on vertices. These vertices are either on the skin or in little cubes inside the body. When you move a slider to change form of the body, these cubes and also the vertices on the skin are influenced.

A simple example is a longer arm, in this case the bone is only stretched. A bigger problem: the change of the buttocks with "pelvis muscular tone" will even influence the root bone, Because the head of this bone is on vertex number 4223. That means when you create a poselib in blender with one character the next one might be tilted when buttocks are different :shock: . So the angles differ from character to character

Here is the documentation I started for basemesh and the bone positions etc.:
http://www.makehumancommunity.org/wiki/Documentation:Basemesh

To conclude: use sth which looks best for you. Even in reality you have people walking like a stick with razor blades under axles and other ones which remind us of a very early human species ;)
User avatar
punkduck
 
Posts: 1216
Joined: Mon Oct 17, 2016 7:24 pm
Location: Nuremberg, Germany


Return to General discussions about makehuman

Who is online

Users browsing this forum: No registered users and 1 guest