I’m doing some human animation and I’m not exactly sure to what to set the rotation limits for the human arm when I am animating that arm with an inverse kinematic chain. Right now though, I am animating robotic looking characters to define the actions, and I plan to use the same actions to animate human characters later.
I am going to describe how I have the arm configured. I hope I explain it clearly so it is not confusing. For this discussion, I am going to consider the front of the arm to be the side adjacent to the palm of the hand. I modeled the arm so that in the default position, the hand is parallel to the body and the thumb is pointing outwards. The palm of the hand is close to the body and the back of the hand is facing away from the body. The line across the wrist is parallel to the line across the elbow on the front of the arm. On an actual human arm, there appears to be a visible fold of the skin at the elbow on the front of the arm on that point. That fold of skin is parallel (in my model) to the wrist right below the palm of the hand. However, I think a more natural default pose would put that fold of skin on the front of the elbow at an angle, somewhere in between facing the side of the human body, to facing the same direction that the front of the human body is facing. However, I think this might make it a little more difficult to model the human arm (once I get to modeling the human character instead of modeling a robotic looking figure). Although even though if I model the character the way I currently have the arm configured, I could make an action so that the arm turns a bit to give it a more natural look, when I want someone standing with their arms relaxed. However, I wonder if the second configuration (with the arm at an angle that I described above) would make the IK work easier.
In adition, I am not sure how to set the rotation limits of the arm. This would be affected by which of the two configurati ons above that I have described. When I have the arm in a position so that the line at the wrist below the palm of the hand is parallel to the fold of skin at the front of the elbow, I can twist my lower arm 180 degrees in one direction, and 0 degrees in the other. When I have the front of the elbow facing the side of my body, I can twist my upper arm 135 degrees in one direction and 0 degrees in the other.
I have my humanoid model facing the negative y axis and standing on the xy plane. The rotation limits for the left arm are as follows:
- upper arm: -45 < x < 180, -90 < y < 45, -45 < z < 180
- lower arm: 0 < x < 180, 0 < y < 180, z is locked
- hand: -22.5 < x < 22.5, y is locked, -100 < z < 90
This is confusing since the global coordinates are different from the local axes of the bones. The local y axes of the bones point downward (global -z), the local z axes of the bones point in the same direction that the humanoid faces (global -y) and the local x axes are aligned with the global -x axis. However, I am having a little bit of a problem with an IK action, and I think this arrangment might be causing the problem.
Does anyone have any advice for what numbers I should set the limits of rotation for the bones of the arms? Does anyone have any advice for how an arm should be rotated in the default position? Also, I have read suggestions that the arm be bent when IK is used. Does this have to be at least any particular angle, or would any angle work fine? Should it be 5 degrees or 0.01 degrees, or something else? Should both the armature and model be bent like this?
I’m also not sure what to do about the thumb. The top two bones the the thumb appear to work like hinge joints and can bend from 0 to 90 degrees. The bottom thumb bone I’m not sure about though, and I’m also thinking about using IK for the thumb.