This page will teach you how garmentSupport works – the system that Cyberpunk2077 uses to tuck pants into boots and shirts under jackets. It contains theory, which you don't need to understand to use the system.
Credit goes to psiberx (discord postwith initial explanation of the algorithm), island dancer for providing screenshots and know-how, and Auska for making morphtarget/garmentSupport import able in Wolvenkit.
The engine morphs garments to avoid clipping — for example, if you equip a pair of boots and V's jeans no longer cover the shoes, but get tucked under.
Garment Support in action
This process is accomplished via 'parameters' on the mesh:
These will show up as shape keys in your Blender export
Why doesn't it work on my NPC?
GarmentSupport only works on actual garment items that have been equipped using the game's transaction system. As of October 2024, that's not the case for NPCs.
You'll have to go refitting!
Component prefixes
Garment support will be applied based on garmentScore. For this, the prefix of the component name will be considered (components are named in your .app or .ent file's component array).
A high garment score means that the item is "on top", squishing anything worn "below". (See The algorithm for details.)
The prefixes are as follows:
h0_
t0_
s0_
l0_
...
Any component with a 0 in its prefix will be treated like a body mesh (no deform/squishing of any meshes with x0_ prefixes across .ent files)
h1_
Head inner (mask, sunglasses)
h2_
Head outer (helmet, bandana)
t1_
Torso inner (shirts)
t2_
Torso outer (jackets, coats...)
s1_
Shoes
l1_
legs (pants that aren't leggins)
How it looks if it's broken
Often, you can salvage things by deleting the parameters in WolvenKit
The algorithm
TL;DR: High garment score means "on top", items below will get squished.
Components with the same prefix in the same .ent file will not squish each other, e.g. l1_stockings and l1_pants will not deform each other, but they will deform s1_socks
The game calculates the garment score by checking the prefix of component names, where the one with the lowest prefix is the innermost:
After considering the component name, the game will consider the tags in the .ent's visualTagSchema:
An example for t0_000_pma_base__full (the default body component, torso+legs):
If you're using Equipment-EX slots for your clothing items, then the score is determined by outfit slot you are using. The scoring follows the same logic, i.e. items in slots with higher scores will squish items in slots with lower scores. The garment scores for each outfit slot are:
Troubleshooting Garment Support
Garment support isn't working/working oddly
Component IDs
Check the component's id in the mesh .ent or .app appearance's components array:
If any given ID is equipped twice, it can break garment support in the way you're observing.
If you select the ID in the node tree viewer to the left, you can use Generate New CRUID to create a new entry that is unique considering all your installed mods.
Import settings
Make sure to import your mesh with garment support enabled. If that doesn't do the trick, you can try re-creating the garment support shapekeys in Blender.
My garment support is shrinking too far! or clipping!
My garment support explodes on contact with another item!
It's not doing that to spite you. Most likely, you have a non-unique component ID, and the game can't tell the two items apart. Here's how to resolve that:
The CRUID editor is available in Wolvenkit 8.14+ - you can go grab the Nightly, too
Importing with Garment Support
Make sure that your mesh has the Import Garment Support property checked (this should be default by now).
If you're fed up with this shit and just want your item to stop cosplaying as an exploding pixel cloud, open the expandable.
This will prevent your garment from shrinking under other, "larger" garments, and practically guarantee that it clips.
Delete garment support
This is not the advised course of action, more a desperate last-resort. Try everything else first!
Looks like we have guests from beyond the Blackwall
To check if it's this, equip only the edited item. If it breaks as soon as you put on another clothing item with garment supports, then the solution below applies.
Option 1 (likely to work): Import your mesh with garment supports