Hi all,
Today, we are going to address some topology stuff. Particularly about joint like elbow.

Disclamer : This is not a tutorial, neither some good practice. Here is only some research/work I did. There is probably other ways to do, and probably some more efficient way …

I tried many way of doing, in order to have some correct deformed joints, fold in only one way, about 150°, exactly like elbow.

Start situation

It’s a cylinder, cut in half size, with 2 bones, and basic Weight Paint.

As you can see, result is quit bad:

Volume Preservation

First step is to activate Volume Preservation on Armature modifier.

Result quality increase a little bit, but is not good enough yet:

Topology change

Here I changed topology, in order to have a deformation limited to joint area. I added 2 loopcuts.

Now, we have indeed a deformation only on joint area, a small volume loose. But we have some face intersection when angle is too high:

Change topology again

In order to avoid intersection, I changed topology again.

Main disadvantage is that now, joint can only be fold in one side. That is how elbow works ;-)

We have still some intersection issues, but next step will partially fix them:

Adding SubSurf

I then added a SubSurf modifier:

Now intersection are limited :

Adding Shape Keys

In order to decrease intersections, I added a Shape Key, that is activated by a driver based on joint rotation:

This time, no more intersection. But joint is now “webbed”:

In order to avoid that, we can tweak value of driver of Shape Key. I am not going to perform this step right now, but I am going to test another modification.

Moving Armature

Without any modification on weight paint, I then moved location of bones (in Edit mode), to be closer to inside face of joint.

Here is result (without ShapeKey of previous step):

Mix this two steps

Based on two previous steps (bones closer to inside, and shapekeys), we now have:

We have again webbed joint (more that previously). Now time to adjust the driver!

Adjusting Driver.

Rotation range must be adjusted, or value must be decreased.

Now result is quite correct :

Adding another shapekey

Inside face of joint is now correct, but outside part is so much rounded. Have a look on your elbow :)

I added another ShapeKey, in order to extrude elbow bone. I kept the first one, of course.

Here is final result :

Conclusion

You know all tests I did :) File with all steps can be downloaded here : Joints

As I said in introduction, there are only tests. I never used this on production.