description |
---|
PartsOverrides, visual tags, and how to use them |
Published: November 12 2022 by manavortex
Last documented update: January 21 2024 by manavortex
This page will teach you how your clothing can influence other clothing items, for example hiding the sleeves under a jacket. You have to do this manually for every item that you want to affect, a much better way to address the problem is the game's Garment Support system.
This guide will explain how to influence meshes by directly in the .app file, overriding whatever is defined for the components in the .ent file which loads them.
For even further customization options for wardrobe items, see EquipmentEx's readme.
Cyberpunk 2077 uses a clever system to layer clothes on top of each other while minimizing clipping. It's called GarmentSupport, and as of 2024, it's almost completely functional.
To use it with your clothing item, you need to change the component names to use the right prefixes. Check the #component-prefixes section on garment-support-how-does-it-work for details.
To learn how to hide things via PartsOverrides, check #chunkmasks-partially-hiding-meshes
{% hint style="info" %} You can't use PartsOverrides on components defined in the same .app file. Either use components from other files, or load them #mesh-component-entity-simple-entity {% endhint %}
In the .app file, each appearance lets you define #partsoverrides, which — as the name implies — let you override previously defined components. An entry looks as follows:
Overwrite the component "kimono
" and "kimono_filler
", which are defined in the file "kimono_meshentity.ent
"
This is the reason why Cyberpunk has all the player components stored in .ent files!
Where partsValues lets you define the individual entity files that you'll load, partsOverrides lets you assign properties which take precedence over those defined in the .ent file:
componentsOverride > .ent file
{% hint style="warning" %} Components need to be unambiguously identified by their name as defined in the .ent file. For that reason, it's good practice to have globally unique identifiers. {% endhint %}
{% hint style="info" %} You can make use of archivexl-suffixes-and-substitutions.md for your components. {% endhint %}
{% hint style="warning" %} Due to cyberware, V has more arms than Shiva the Destroyer (although not at the same time). Arms are why we can't have nice things. {% endhint %}
You can find arm component names on cheat-sheet-body.md -> #arms. Alternatively, you can browse the corresponding entity files in the Asset Browser by searching for base\characters\common\player_base_bodies > .ent
, the file names will start with a0_.
The player base body component name is
t0_000_pwa_base__full
t0_000_pma_base__full
Normally, you can override only components from .ent files that you include via partsValues in the same appearance. ArchiveXL expands this by letting you manipulate any components that are loaded as part of the player.ent:
This is hiding a submesh of the default body, which isn't part of the referenced pants_leggins.ent.
This is only possible because of ArchiveXL!
To delete an already existing reference, set the numeric value to the right of the depot path to 0: \
These can be used in addition to PartsOverrides and will let you influence your item even further. To learn more about garment-support-how-does-it-work, read #the-algorithm.
{% hint style="info" %} This mechanism is how e.g. your sunglasses disappear when you put on a helmet. {% endhint %}
{% hint style="warning" %} Visual tags in the root entity will get applied to every appearance in the app.
However:
Due to technical limitations, any visual tags that hide parts of the mesh must go into the .app file to take effect. File Validation will warn you about this.
{% endhint %}
The following tags are used by the base game; however, to make use of them, you require ArchiveXL.
{% hint style="info" %} With visual tags, you can force-show hair, hide an item in first person, or turn body parts on and off. Find the full list under archivexl-tags.md {% endhint %}
If you want to un-hide chunks rather than hiding them, you need to define a custom tag via ArchiveXL. See #adding-custom-tags for details.