How do you make skin fold instead of stretch?

A lot of times when bones rotate inward in an arm or something, in real life, the skin doesn’t stretch, it folds into itself. How do you make bones do that in blender?

First, you will want to use a double-jointed joint. This will give the thickness that you need. Think of your actual bones. Each bone has a “ball” at the end (I don’t know the scientific name). Imagine a link connecting the centers of the two balls at a joint with a joint at the center of each ball. This will give you the extra volume to fold the flesh onto itself.

Next, Weight paint the joint with weights that favor one bone more than normal. The result should be closer to two cylinders that will intersect.

Lastly, clean up the intersection using shape keys. To make the contact look believable, you may need multiple shape keys that engage over different ranges of angles. For instance, one shape key may apply for 180° to 90°. This would push the flesh out of the joint, like the tendons pulling out. Then, 90° to 70° could have a shape key to begin folding the flesh onto itself. Then, 70°-85° could be a shape key for the flesh compressing onto itself.

The tricky part will be that the shape keys are linear. But, you want the shape key to follow the flesh contact (to prevent self-intersection). I make a driver using a custom curve in the graph editor using the following method. I bend the arm to a certain degree. Then, I add a point to the curve that drives the shape key to a point that results in a clean contact. Then, I move the arm a few more degrees and add another point positioned to a value that results in clean contact. It is tedious, but the result looks good.

I actually used it for a blocky Minecraft arm. I had the arm bend to 90° using one method. Then, I wanted it to fold onto itself like rubber until something like 20°. But, the method would easily work for making it look more like flesh than rubber. I never made a tutorial on it, mainly because it is a rather complex task. But, you can see an example image in the banner of this YouTube channel:

EDIT: Also, notice that the arm is double-jointed in that image. For that arm, I had one joint up until 90° and another joint for the rest of the bending. But, for a realistic humanoid, I would have the joints bend the same amount. Note that setting this up needs a separate control bone. I had a control “arm” with only one joint. And, each of the double-joints should be rotated at half the angle of the control “arm” using drivers. When setting up the control shapes, you would want the control for the lower arm to be positioned at the real lower arm rather than remaining on the control arm.