ClothesPhysicsManager
Tight clothes that actually squeeze the body.What it does
Virt-A-Mate dresses a character, but the body underneath never reacts. A corset, a bra strap, a waistband — the fabric hugs the skin and the flesh ignores it completely. Clothing is always the thing that adapts; the body never is.
ClothesPhysicsManager reverses that. Drop it on a Person atom, pick a garment, and compress the flesh beneath it along any axis. The compressed area is not painted by hand and not approximated: it comes from the garment itself, so a bra with a V-neckline compresses in a V, and changing garment changes the shape of the effect with no other adjustment.
On top of that, the plugin exposes the garment's fit — size, thickness, anti-clip — and VAM's own cloth simulation parameters, so a single panel covers the whole subject.
How it works
Three mechanisms, worth knowing because they explain the settings.
The mask comes from the garment. VAM places every vertex of a clothing mesh onto a triangle of the skin, and stores which triangle. The plugin reads that mapping and derives the exact set of skin vertices sitting under the fabric. No proximity guessing, no painting, no per-garment setup.
Deformation is opt-in. The body stays rigid until you designate soft zones. A zone is defined by a morph you already own: a breast morph marks the chest, a glute morph marks the glutes. The plugin reads that morph's deltas and turns them into a softness map, so the morph's own falloff becomes the deformation's falloff — smooth by construction, with nothing to tune.
The direction follows the body's axis. The plugin rebuilds a vertical axis through the covered area, slice by slice, and smooths it. Compression pulls towards that axis, which is what makes it read like a belt tightening rather than a dent being pushed in.
The result is written into a morph, refreshed live while you drag a slider, and fully reversible.
Getting started
1. Load the plugin. Person atom → Plugins → Add Plugin → ClothesPhysicsManager.cs.
2. Pick a garment in Clothing item. Lashes, brows, geoshells and skin overlays are filtered out automatically.
3. Define a soft zone. Open SOFT ZONES, type a few letters in the morph filter — breast, glute, belly — pick a morph, and press Add soft zone. The panel reports how many vertices it covers. Nothing will deform outside these zones.
4. Turn it on. Press SQUEEZE : OFF. It turns green.
5. Squeeze. Open CLOTH PARAMS and raise Squeeze X and Squeeze Z to shrink the girth, or Squeeze Y to compress vertically. The mesh follows as you drag.
6. Fix clipping if needed. If fabric starts poking through skin, raise Anti-clip by a millimetre or two.
To undo everything, press SQUEEZE : ON again to turn it off — the character returns exactly to its original shape.
Parameter reference
Top level
| Control | What it does |
|---|---|
| Clothing item | The garment you are editing. Every setting below is per garment. |
| Hide lashes / brows / geoshells | Filters out everything VAM routes through the clothing system that is not actually clothing. |
| Refresh list | Re-scans worn clothing. Press it after dressing or undressing the character. |
| SQUEEZE : ON / OFF | Arms the deformation. Turning it off releases the borrowed morph and restores the body. |
| Squeeze morph | The morph the plugin writes into. Defaults to Armpit Curve. One garment per morph if you squeeze several at once. |
| RESET THIS ITEM | Returns this garment to default settings and original values. |
| HARD RESET | Zeroes every morph on the character. A safety net, not a working tool — it will flatten your character's morphology too. |
CLOTH PARAMS — the garment and the squeeze
| Control | What it does |
|---|---|
| Exclude this item | Removes the garment from the list. For accessories the automatic filter misses. |
| Size | Moves the fabric away from or closer to the skin. VAM's surface offset. |
| Thickness | Thickens the fabric. |
| Anti-clip | Pushes the fabric outwards automatically, proportionally to how hard you squeeze. Start at 1–2 mm. |
| Squeeze X | Compression across the width, left to right. |
| Squeeze Z | Compression in depth, front to back. Alone, it flattens without slimming. |
| Squeeze Y | Vertical compaction, pulling the top and bottom of the zone towards each other. |
All three axes accept negative values, which push outwards instead. That is how you create a bulge above a waistband rather than under it.
BODY RESISTANCE — shaping the result
| Control | What it does |
|---|---|
| Border falloff | Distance over which compression fades in from the edge of the garment. The first thing to raise if you see tearing. |
| Profile | How sharply pressure ramps up from that edge. Low is abrupt, high is gentle. |
| Hole filling | Closes gaps the mask leaves when a garment mesh is much less dense than the skin. The only setting that pauses to rebuild. |
| Back resistance | Lowers compression behind the body's axis. A back should not hollow out like a belly. |
| Front/back blend | Width of the blend between front and back on the flanks. Too low leaves a visible seam. |
| Invert front/back | Flips the front/back detection if the effect lands on the wrong side. |
| Upper zone resistance | Lowers compression in the upper part of the covered area — traps, base of the neck. |
| Upper threshold | Where "upper" starts, as a fraction of the garment's height. |
SOFT ZONES — what is allowed to deform
| Control | What it does |
|---|---|
| Affect ONLY soft zones | On by default. With it off, the whole covered area deforms and zones only act as a multiplier. |
| Soft zone strength | Global multiplier over the zones, per garment. |
| Soft zone morph | Filterable morph picker. Type a few letters to narrow 7000 morphs down. |
| Add soft zone | Adds the selected morph as a zone. Zones stack. |
| Rebuild soft zone map | Recomputes the map. Useful if a zone shows 0 vertices after a scene load. |
| Remove last / Clear | Removes the most recent zone, or all of them. |
Zones are defined once for the character, not per garment, and saved with the scene.
CLOTH PHYSICS — VAM's own simulation
Every parameter of the garment's cloth simulation, read at runtime rather than hard-coded: stiffness, compression resistance, friction, drag, collision radius, collision power, weight, gravity multiplier, iterations, detach threshold, joint strength, plus the sim toggles.These are VAM's settings, not the plugin's. They only matter on garments that have simulation enabled — simEnabled is shown in the info panel for the selected item.
Tips
One garment, one morph. Two garments sharing the same squeeze morph will fight over it. Create a few spare morphs in DAZ Studio — their content is irrelevant, it gets overwritten — and name them clearly.
Start with Z alone. It is the most readable effect on a torso garment: the chest flattens against the body without the silhouette narrowing.
Tearing is always a falloff problem. Raise Border falloff before touching anything else.
A small zone beats a large one. Adding a whole-body morph as a soft zone makes everything deformable again and defeats the purpose.
Troubleshooting
Nothing moves. Check that a soft zone is defined and that it reports a non-zero vertex count. With Affect ONLY soft zones on and no zone, nothing deforms — this is intentional, and the panel warns you.
A soft zone shows 0 vertices after loading a scene. The morph's deltas were not ready yet. The plugin retries automatically; Rebuild soft zone map forces it.
A morph is rejected. Genital morphs use a different vertex numbering and would deform the character at random. Pick one from the body bank.
The squeeze looks weaker than expected. The chosen morph may have a maximum below 1, which clamps the effect. The log warns about it.
Limitations
The squeeze is cylindrical around a vertical axis. That suits torsos, belts and bands; sleeves and thigh-highs, where the axis follows the limb, are not handled yet.
Region resistance covers the back and the upper zone only. Named regions from skinning weights are planned.
Soft zones have to be defined by hand, because no reliable soft-tissue marking is reachable from a plugin.
Compression is static: it does not yet react to motion.
Tested on Genesis 2 female characters.
Requirements
Virt-A-Mate 1.x. No dependencies.