For context this is a brief explanation on how I did a soft body character animation. This explanation is from the weight gaming discord server.
Just in case, some might rate it for the more mature audience. Link to example: https://twitter.com/RaweWolf/status/1635042437726113793?s=20
I will try to make it short for the chat. I have a long version and a rewritten version of that one, that I guess is clearer. The long version also explains more in depth of why everything is done in the way I did it. It is difficult to keep it short and written in a way so everyone can understand it without making it boring. I tried my best xD.
Okay, here goes. I made myself an anthro wolf character that I can use for all sort of stuff. Originally the character is made to be used in a game engine, so it is a mid poly model consist of about 15.000 polygons, the inner mouth and eyes are excluded in the polygon count. The model has gone through many iterations to have the best mesh for extreme expansion and cloth physics. The shape key, I named ‘thickness’, is something I have spent a lot of time on. I had to find the right blob body shape that looks good in all the steps between thin to blob while it deforms well for the rig. Other shape keys I gave it, is to modify the body as needed, like gender, fullness and so on.
The armature is custom made. For the take-shirt-off animation, I had to add 4 new bones to the hands. 2 main bones with their own bone at the tip. This tip bone work as a force direction for bone constraints. These bones follow the hands and can be moved around independently from the hands. These bones are used for general grab interactions but in this case, they are used for the t-shirt.
The entire body mesh is using cloth physics for the soft body of the character. For the cloth physics, I use 2 weight maps to control how the cloth should behave in the different areas of the character.
One weight map control what part of the character that is pinned in place and follow the rig. The red areas indicates where the mesh is pinned the most and follows the rig when dynamic mesh is checked in the cloth sim. The black areas are where the mesh is free to move.
The other weight map controls the pressure, simulating the weight of the fat pressing against the skin. The red areas are for maximum pressure like the chest, arms back and so on. The belly and the buttocks are in the blueish colors, indicating it is more jiggly and softer than other parts of the body.
The cloth also simulates internal mass which I have set to 0.900 since it is the density of fat in Kg/L. This makes the drooping parts of the mesh heavier at the bottom.
There are many other settings in the cloth sim that determine how the body cloth sim will behave.
The t-shirt has its own armature consisting of two bones placed near the neck of the character. These bones do not follow the character rig, these was a temporary solution. These 2 bones are also placed close to the t-shirt mesh, due to how the pin constraints on the t-shirt works.
These 2 t-shirt bones work as pins for the t-shirt. And both bones have two bone constraints, a copy location and a dampened track (forces the t-shirt bone to point in the same direction as the hand grabber bone). These t-shirt bone constraints make the t-shirt bones follow the hand grabber bones when needed as the constraints influence can be activated with keyframes.
The t-shirt has a couple of shape keys, one for the size (scaling the entire shirt) and one for thickness (making the t-shirt wider at the bottom).
Grab the shirt.
I gave the t-shirt 3 vertex groups I have weight painted. One is called ‘Pin group’, used for the pin group function in the cloth simulation. Then there is one vertex group I have named ‘Pin 1’ this is used for the left hand grabber bone. The third vertex group is called ‘Pin 2’ which is for the right hand grabber bone.
The t-shirt uses two hook modifiers and two vertex weight mix modifiers. Hook modifiers attaches part of the cloth defined by, in this case, the ‘Pin 1’ and ‘Pin 2’ to their relevant hook object, in this case, two bones one for each pin vertex group. This is also used with the cloth pin function. The vertex weight mix modifier mixes two vertex groups together, but I have set it to subtract so vertex group named ‘Pin 1’ and ’Pin 2’ negates the ‘Pin group’ vertex group. When the ‘Pin group’ is negated by the two pin vertex groups, it releases the cloth from the t-shirt pin bones done by keyframing the influence of the vertex weight mix modifiers.
The shorts have a vertex group where I have painted the waist of the shorts red to make them stay on. I could do without it, but this is more reliable. The shorts are parented to the character rig so the waistband of the shorts could follow the hipbone. In this case the shorts have collision before cloth so the belly could rest on the shorts and make the simulation more stable.
The shorts have 2 shape keys. On to pull the front of the pants down to make room for the belly and one shape key for shorts size.
Preparing the animation. For the character body size, I use the characters thickness shape key set to 0.000 at frame 1 and 0.300 at frame 50. The real animation starts from frame 50. When the character expands with the cloth modifier and self collision active, the belly will roll out and rest on the thighs. The thighs will get squeezed together along with other body parts resting on or against each other. If the character started fat, parts of the cloth would intersect and stick together until the character moved in a way that pulls the intersected areas apart.
Insert video from frame 1 to 50 and a bit more.
The shorts starts with their thickness shape key set to a low value at frame 1 and then at frame 50 they have expanded to the desired size.
The t-shirt just starts big there was no need for anything special.
The character is posed in a t-pose to match the t-shirt.