Irons, threads and everything else
This section contains guides how to alter or overwrite already existing items (please see the page tree in the navigation menu on the left).
If you want to look up Variants and appearances, find the corresponding page in References, lists and overviews.
Changing how an item looks in-game
Created by @manavortex Published November 05 2022
This guide will teach you how to change an item's appearance by editing its MultilayerSetup (*.mlsetup file), how to rename materials, and how add your own mlsetups (custompathing).
It uses the following versions:
Please keep in mind that video guides might be outdated, as they are much more difficult to update than a wiki page. Refer to the written guide below if you run into any troubles!
Add the item to your project and open it in WolvenKit. You want the original to look up material names, even if you overwrite it with your own mesh.
We will change the appearance bwstripes
, which is used by Vest_17_basic_01
:
chunkMaterials
corresponds to the chunkMasks
: For submesh_00, the material at array position 0 will be used, for submesh_01 the material at position 1, and so on.
This vest has only one chunkMask, so there's only one material.
Remember its name (ml_t2_002_ma_vest__puffy_bwstripes
) and find the corresponding material definition:
Most meshes have their materials under localMaterialBuffer/materials
. However, some of them (especially those with physics) use preloadLocalMaterialInstances
instead.
You will (hopefully) see a material with three entries in values
(order doesn't matter):
Most materials in Cyberpunk use the engine\materials\multilayered.mt
material and assign colours via an .mlsetup file. If you're used to textures, you are probably going to hate this. As somebody who has been where you are: the mlsetup system is cool. Genuinely. Give it a chance!
You can turn any multilayered material into its cyberspace variant by changing the material from engine\materials\multilayered.mt
to base\characters\common\cyberspace\silverhand_overlay_cyberspace_mml.mi
We do that by editing the MultilayerSetup. Check the MLSetupBuilder wiki page for how to do that.
Add it to your Wolvenkit project.
Export the file, overwriting the original .mlsetup.json
Switch back to Wolvenkit
This is already working. You can pack the project and see it in action!
Since you haven't changed anything in the mesh itself, you can (and should) delete it from your mod. Only keep it if you want to do the steps below.
If you want to put up your own .mlsetup, rather than overwriting the original one, you can do that. All you have to do is changing the DepotPaths to the relative path of your mlsetup.
Keep your folder and file names unique! If you have two mods adding a file at the same location, the second one will be unable to overwrite it and will use the first mod's file. That is, unless your mods are in REDmod format, which will be loaded even later and in order of their folder names.
Understood? No? That's fine. Just keep it unique. :D
You can rename a material by changing the "name" property inside the CMeshMaterialEntry
in the materials
array:
Inside the appearances block, the material assignment to the individual submeshes happens by name, so don't forget to change the chunkMaterial
names!
To add a new material to a mesh, you need to create two entries. The first of those needs to be in the materialEntries array:
Now, add an entry in the localMaterialBuffer.
If your mesh doesn#t have entries under localMaterialBuffer
, use preloadLocalMaterialInstances
instead.
You can now use your new material just like the regular, old materials.
For a step-by-step walkthrough for a recolour of the Netrunner suit, check
If you want to edit emissive (glowing) material, check ->
WolvenKit >= 8.11 ( | )
>= 1.6.7 (get the )
Most items in Cyberpunk are not textured, but use a procedurally generated material consisting out of an (a list of alpha masks) and an (a list of material paths and -colours). There is a section on the exceptions below.
If you want to learn how mesh material assignment works in general, you can check the .
For an overview of base materials and example files, you can check .
If your changes do not become active, you will want to install from Nexus.
This tutorial assumes that you already know which mesh and appearance you want to change. If you don't know that, you need to . If you only have a cheat code, see instead.
We will use the female variant of the puffy vest (as I've already ):
If you don't know which appearance you want to edit, check .
default
is the fallback appearance that'll be used if anything can't be resolved by name or index. This is the reason why most item swap mods give you only a single appearance - people didn't set up the .
Key | Value (DepotPath) |
---|
For the purpose of this guide, all that matters is the mlsetup, which determines all the individual material assignments in this CMaterial. For an explanation of the shader, check .
If you have your own mlsetup file, this is where you need to set tohe path. See for further details.
If you would rather use a textured material, check .
A multilayered material consists of multiple layers of materials, projected on the mesh through the mlmask: white parts get affected, black parts are blocked out. (Again, for a full explanation, check ).
We're going to edit the mlsetup file and then import it back, causing a global change in the appearances of every item which uses this particular material file. (If you don't want that, see below).
Find the file that you want to edit in the .
In the project explorer under Wolvenkit's archive
folder, right-click on am mlsetup
file
This folder will only be visible in the "source" or "archive" tab of your
Select ""
If you don't have MLSetupBuilder installed, you need to . If you don't know how to use it, please check
Optional: If you don't see an mlsetup.json
in your project, switch the to source
or raw
.
Right-click on the file and .
For a documentation of multilayer properties, see . For a list of reference images, check
and .
Right-click on the .mlsetup.json
and
MultilayerSetup |
|
MultilayerMask |
|
GlobalNormal |
|
How to make it iconic
This guide will show you an example for adding a modifier to an existing game item; in this case, making David's jacket iconic.
It will point you towards further reading material in case you want to dig deeper.
Find The Cyberpunk 2077 Game Directory. Then, create the following text document (you can name it what you want):
Paste the following contents into the text document and save it:
That's it. When you start the game now, the item's quality will be iconic.
You created a tweak edit.
If you want to safely delete a record property, set its value to None. For example:
You might not want to actually do it.
To add attachment slots to an item, simply pick one from the list and append it to your item's slotPartList
.
The example below might have all sorts of unintended side effects, as David's jacket is not a cyberdeck:
Put your item in place of a default game item. Supports variants.
Created by @manavortex Published November 05 2022 Updated Feb 28 2024
This tutorial will teach you how to switch a player mesh for an NPC garment and map its variants to the existing colours.
Other relevant know-how for this process (you don't need to read them if you already know which item you want to replace):
Perquisite: You need a Wolvenkit project.
Find the mesh that you want to use ("the old mesh") and replace it with the one that you want to switch in ("the new mesh").
Example: Replacing the short-sleeved poser jacket with the monk shirt with the tied-back sleeves.​ For the male variant, replace _pwa_
with _pma
_ and _wa_
with _ma_
.
Find both files in the Asset Browser and add them to your project.
Move the replacement mesh to the original mesh's folder.
Rename the old mesh (e.g. "t2_084_pwa__short_sleeves.mesh
" -> "original.mesh
").
Rename the new mesh to replace the old mesh (e.g. "t2_135_wa_jacket__monk_shirt.mesh
" -> "t2_084_pwa__short_sleeves.mesh
")
Open both meshes in WolvenKit by double-clicking them in the Project Explorer — we will now transfer the appearance names to enable variants.
The game looks up appearances in a mesh file by name. If none can be found, then game meshes will fall back to the default
appearance, which is how the early replacers worked — every variant (base_01, old_01, rich_01) would simply spawn the default appearance.
We can simply transfer the names from the old mesh to the new mesh by renaming the entries in the appearances array.
Now that we have done that, we can start recolouring.
Each appearance in the appearances array has a list of chunkMask entries (one per submesh), which are assigned a material by name.
You can now save your mesh, then install your mod by clicking on the green arrow in Wolvenkit's toolbar. Once you have started up the game, the old item will now look like your new mesh — including its variants.
Enjoy!
How to add decals to existing items
This guide will teach you how to add decals to existing items.
It will walk you through the following:
Setting up the material
Any links will lead to extra information and are not required to complete this guide.
You should have an .xbm texture inside your Wolvenkit project for your decal, and a .png export of the decal that we'll use in Blender. If you don't have a texture, you can
copy any .xbm
Replace this png with your decal
For this guide, I will be using a sock mesh.
In the viewport, click on the submesh that you want to have the decal.
If you want it to span multiple submeshes, you should merge them into one submesh to cut from. Shift-click to select them all, then duplicate them (Hotkey: Shift-D
) and join them together (Hotkey: Ctrl+J
).
Switch to Edit Mode (shortcut: Tab
)
Turn the viewport to the side (shortcut: Numpad 3
)
Turn on X-Ray mode (shortcut: Alt+Z
). This lets you select right through the mesh, in my example, on both sides of the leg.
Use the selection tool (shortcut: W
, it should be active) to select your decal mesh. It should look something like the left side of the screenshot below.
We will refine this later — select generously, too much is a lot better than too little!
Duplicate these vertices (Shortcut: Shift+D
)
Split them into a new submesh or new submeshes (Shortcut: P
-> Selection)
You should now have something like the right half of the screenshot.
This guide will add a new chunk to an already-existing mesh.
If this is your first rodeo, do not do any of that.
Switch back to Object Mode (Hotkey: Tab
)
In the Outliner, click on your meshes until your decal mesh lights up
Change the name: it needs to be the submesh with the highest number (see the red box in the screenshot below). Double-click the name, then change it to (in this example)submesh_04_LOD_1
.
Depending on your mesh, you will end up with a different number than 4!
With your new submesh selected, it's now time to clean up.
Switch back to Edit Mode (Hotkey: Tab
)
Cut away all vertices that you don't need. (Hotkey: X
)
As the decal shader supports transparency, you can be generous here as well. Having too much is better than having too little!
After cutting away everything that you don't want/need as part of your decal, select the rest (Hotkey: A
)
The decal should be one piece, so let's make sure to merge by distance now (hotkey: M
).
Now, let's make sure that our decal is above the surface of the original mesh by using the Shrinkwrap Modifier
.
Switch back to Object Mode (Hotkey: Tab
)
Duplicate your mesh (Hotkey: Shift+D
)
Select just one of the two meshes, and switch to the Data tab
Delete all shapekeys (starting at the bottom).
If your mesh doesn't have any, you can skip step 13 and delete your extra duplicate.
Now, switch to the Modifiers
tab. Leave the Armature modifier alone.
Add a Shrinkwrap
Modifier (Deform -> Shrinkwrap).
Configure it. Try the standard parameters below — if you have clipping, you can play around with the modifier after.
target
: The mesh you originally cut from (you can use the eyedropper symbol)
Wrap Method
: Select Nearest Vertex
Offset
: 0.0005 m
(sometimes it's necessary to increase it to something like 0.002 m
)
Your decal should be floating directly on the surface of your mesh, with just enough offset that it's not clipping. When you're satisfied, apply the shrinkwrap modifier:
Now let's merge it with the original submesh with the garment support. Select the duplicate that you made in Step 6.
Switch to Edit Mode (Hotkey: Tab
)
Select all vertices (Hotkey: A
)
Delete them (Hotkey: X)
Switch back to Object Mode (Hotkey: Tab
)
First, select your decal mesh (with the offsets) by clicking on it in the Outliner
Second, select your empty mesh (with the shapekeys) by shift-clicking on it in the Outliner
Now, join them together (Hotkey: Ctrl+J
)
You now have a decal mesh with an offset and garment support shapekeys. Awesome! Let's take care of the material now.
With your new submesh selected in Object Mode, switch to the Shading perspective. Delete the existing material assignment and create a new material:
Click the X above the node browser to delete the existing material assignment
Create a new material
In the node browser, add a new image texture (Hotkey: Shift+A, Texture -> Image Texture)
Click on "open" in the orange node and point the path to your decal png
Drag-and-drop the "Color" dot on the orange box to the "Base Color" dot on the green one
If your mesh's surface hasn't changed yet, you need to assign the material:
Open the Material tab
Switch to Edit mode (Hotkey: Tab
)
Select all vertices (Hotkey: A
)
Assign them to your new material
Our decal is now showing our new material. Make sure that it has exactly one UV map by checking the Data
tab:
Time to change to the UV Editing
perspective. You should be in Edit Mode (Hotkey: Tab
if not) and have all pixels of your decal mesh selected (Hotkey: A
if not).
We will now unwrap our decal. I'll do both UV islands at once - if you have only one (because your decal is on a jacket or something), then your life will be easier.
With everything selected in the UV Editor
on the left, select UV -> Unwrap -> Unwrap (Hotkey: Ctrl+U
)
This will unwrap the mesh. Hopefully, you get nice and clean UV islands. If not, you may have to play puzzle
I'll show you a simple example of doing it by hand. If you want anything more complex, you should hit up Google, as there are plenty of best practices and even Blender add-ons.
At the end, we want a nice and straight grid over the full width and height of the decal, with the correct orientation. Let's start by fixing up the UV islands.
Select a row or column. From the right-click menu, select one of the following:
Straighten
: Will put them all in a line
Align Auto
, which does one of the following:
Align Horizontally
: Will put them all on the same Y-axis
Align Vertically:
Will put them all on the same X-axis
Keep doing that until you have a nice grid.
While straightening out your UV layout, keep an eye on your decal in the viewport on the right. Sometimes, vertices need to be crooked, or your mapping will look like shit.
If you can't get a grip on your OCD, you can shift vertices over the mesh's surface by clicking on them, then pressing G
twice and sliding them along the edges.
If you have multiple UV islands, you can move them on top of each other.
Make sure to keep a little offset between the vertices, because Blender's glb export does not play nice with shared UV coordinates — it will split your mesh into a million individual triangles.
If you need an exact identical layout, know that the UV mapping tiles infinitely, so you can simply select one of the islands and move it by a full tile in any direction (G -> X -> 1)
Check the individual decals in your viewport and fix up any that are flipped/rotated:
Click on a vertex in the viewport
Select linked (Hotkey: Ctrl+L
)
Fix the UV mapping (Right-click: Flip horizontal/vertical, or rotate)
Now it's time to head back to Wolvenkit and activate our new decal chunk.
This guide will add a new chunk to an already-existing mesh.
If this is your first rodeo, do not do any of that.
After successfully importing your new submesh into Wolvenkit and open it.
Find the appearances
array at the top of the file and expand it.
Under each appearance, find the chunkMaterials
array and expand it.
If you already have an entry for your new submesh, change its value to decal
. If you don't, right-click on the last entry to duplciate it. You should now have something like this:
Find the materialEntries
array inside your mesh and duplicate the last entry
Change its name
to decal
Make sure that isLocalInstance
is checked
Increment its index
by one (e.g. 29 -> 30)
Find the array localMaterialBuffer
Find the array materials
(directly underneath)
If it's empty, go back up and find preloadMaterialBuffer
instead
Duplicate the last entry. This is your new decal material. Now we need to make sure it behaves like a decal, too.
As of now, your decal will be completely transparent. Let's change that.
Now we need to get the right material properties. The easiest way is to find another material that uses mesh_decal and steal them from there:
Sort the results by file type by clicking on the column, then find and open a .mi
or .mesh
Switch back to your own mesh and copy these values into your mesh_decal material's values
array (the one from step 3.3)
The other properties should be numbers only. If you don't know what they do, you can delete them for now.
Replace your clothes with an NPC's that requires blender editing.
This tutorial will teach you how to swap player's clothing items with NPC's that requires blender editing.
Without mesh editing, some NPC meshes will clip quite badly, because they don't have as many poses and animations as V. Some are even worse, since they'll be flying around rather than following V's movements.
Prerequisite: you have the mesh that you want to fix already in your project. For this tutorial, we'll want Maman Brigitte's jacket: t2_001_wa_jacket__maman_brigitte.mesh
For female body gender, search for _pwa_
For male body gender, search for _pma_
Open Blender
delete the standard objects from the scene (Shortcut: A -> X)
Import the player mesh (File -> Import -> Cyberpunk GLTF)
Import the NPC mesh
Delete or hide the NPC item's armature
Delete the NPC item's armature modifier (or make sure that it points at the player item's armature)
Repeat the process for each submesh.
If you don't have the same number of submeshes, you can simply use the "biggest" mesh you have (e.g. the coat's base mesh rather than the seams)
Select the player item's mesh
Select the NPC item's mesh
Switch to Weight Paint mode in the dropdown on the top left of your viewport
Select "Transfer Weights". Use the settings from the second screenshot.
Make sure that the NPC mesh's armature modifier is targeting the player armature:
Make sure that you select Object Mode while adding modifiers.
Select all submeshes under the NPC's armature
Use the Wolvenkit Blender plugin to export them over the player item's mesh (overwrite it)
Switch to Wolvenkit
Import the player item's mesh via Import Tool
Optional: copy the NPC's appearances, materials and material definitions to the player mesh
Optional: rename the appearances to match those in the original player item
Sometimes you will need to do a bit more of editing but that is not a topic for this tutorial.
Now you have functional clothing attached to the player and not flying arround.
Published: Jan 29 2024 by Last documented update: May 04 2024 by
For a guide how to import meshes into Cyberpunk, check .
Make sure that you replace an item that you can actually spawn — not all items in V's folder are actually spawn-able =>
If there are more entries than variants available, or if you're just curious which spawn code corresponds to which appearance, go for a guide how to find out.
For a full guide on , follow the link (you don't have to).
For a more detailed explanation, you can check , but all we care about right now is this lookup chain:
For a guide on how to edit an .mlsetup file (or to change an item's appearance in general), see .
Published: Jan 21 2024 by Last documented update: Jan 21 2024 by
Adding it to the
To add new items to the game, check
To learn about materials, check the section or follow the links from there.
Tool/Software | Version |
---|
This guide assumes that you have an existing Wolvenkit project with your item and just want to add the decal mesh. If you don't have one, you can grab the template project from .
again (premultiplyAlpha
must be checked)
Start by from Wolvenkit and . You should see something like this:
For more advanced cases (such as use with dynamic variants), you can split off the decal into its own file, or you can use an extra appearance that will .
If you take a look at the outliner, you will notice a new submesh in the scene collection. This is your decal mesh. We need to change its name to register it as a .
I'll show you how to do this in a way that preserves potential garment support. If you run into issues with your decal mesh (being invisible or crooked), you can always .
For more information on this, check (but the page will only send you back here).
You will see something like this (to learn more about UV maps, look up our ):
You should be unwrapping a roughly rectangular 2d surface that has undergone merge by distance
. If you haven't done that yet, refer to , item 4 — or read up on UV seams.
When you are done, . Include all submeshes.
For more advanced cases (such as use with dynamic variants), you can split off the decal into its own file, or you can use an extra appearance that will .
First, we need to add your new chunk to each of your . For this example, we will use the material decal
.
If you save your mesh now, file validation will complain that the decal
material doesn't exist. It's right; we haven't added a yet. Let's do that.
Now that our chunk knows which material it's supposed to look up, we need to provide .
Change its baseMaterial to base\materials\mesh_decal.mt
.
This will tell the game which shader to use, and is for exactly this.
Unless your previous material was already using mesh_decal, right-click on the values
array and
Open the and search for base\materials\mesh_decal.mt
Right-click on the file and select
Find the decal material inside the other file, and
Adjust the properties. Find the one that says DiffuseTexture
and point its DepotPath
to your decal's .xbm
(right-click it and select )
If you don't have one, go back to ->
. If you have done everything right, then your mesh should now have a decal!
See ->
See
See
This tutorial will not cover changing materials and appearances from an NPC's mesh to player's. For that, visit the tutorial . To add an item rather than replacing one, see .
In this guide, we'll fix up a coat by transferring weights from a different item. Prerequisites: - - - Wolvenkit
Use the to find a player mesh of roughly the same size/length/cut. For this tutorial, we'll use River's coat:
t2_087_pwa_jacket__river_short
Add it to
both meshes
and test it!
If you don't know how to import meshes, visit this
For adding appearances and materials, visit this
If you have any questions about modding join server and we will help you out.
the old mesh |
|
the new mesh |
|
>= 8.12 for Cyberpunk 2.1 |
>= 4.0 |
the most recent one, but at least 1.5.2.2 |
Wolvenkit ( | )