Flexibility and Joint-Flipping

The object of discussion is a three-bone arm; upArm, loArm, and hand.

If the arm is created in a linear fashion, with all three arms in one line, it is susceptible to erratic motion when being posed. The elbow can perform many funky tricks as you play with bone movement.

If the arm is created at a half-flexed position, with the elbow bent in a ninety-degree angle, it will behave as a human arm. The expected funk-factor was non-existant, despite my attempts to duplicate the error.

The bones are the same with the same joints. Therefore, the mathematics and corresponding matrix manipulation by the program should be the same. But why does the previous example behave erratically while the latter as though biological constraints (something Blender doesn’t handle yet) are active?

Struggling with basic concepts,
Bob

how would it know which direction to bend the bones if they didn’t start bent?

if you noticed, you didn’t specify which way they were bent in the edit buttons or anything [not that that would be a bad idea]

so, clearly as the behavior is different the function isn’t the same, it does depend on the direction the bones started rotated as
[which is something you seem to understand, why do you ask?]

you don’t need to initally bend the elbow 90 degrees, only a couple. And, you can control it better if you put for example a locked track constraint on the upper arm to turn where the elbow points

I am curious as to the actual difference between the afore-mentioned methods of rigging: half-flexion or full-extension. Why does one behave more “normally”?

Such questions should really be directed to the developers, I think, as they are more familiar with the mathematical underpinnings of our beloved program. Next I need to find a contact for the core developers, or whoever might answer me.

Bob

Half flexed joint give better results because the IK solver code will favorise already existing flexions when calculating the rotations need to point to the IK solver.

Also, another thing worth knowing is that using an IK solver does not prevent tweaking the bones orientation using FK rotations. With IK rigged chains, this affects the pre-orientation of the bones (before solving) and therefore affect the solution. You’ll probably need some time getting used to how rotations will affect the solution, but it’s worth knowing and using (sometimes its faster and less bothersome than using tracking targets).

Martin

I want to post a special “Thank You!” to Theeth and the other people here at Elysiun for helping me find solutions to the many problems that a Blender n00b can encounter.

Bob