How to make custom hair for Player V
Last documented edit: February 25 2025 by LadyLea
This page collects information on making and porting hair related projects for player V.
Please check the nested pages in the Wiki's browser for more information, or click the "Next" button at the bottom of the page.
This is the guide for you if you would like to add custom hairstyles into the game.
Published: March 15 2024 by D.I.S.C.O Last documented update: March 18 2024 by
This guide will teach you how to
port a hair mesh from a different game to Cyberpunk
add physics ("dangle bones") to parts of it
use the UUH4V framework to avoid conflict with NPCS
For an overview of existing hair files and -colours, check Cheat Sheet: Hair
For a more detailed guide on hair physics, check Dangle bones or Moving a Dangle Chain
You can find a video tutorial by eagul on youtube:
Blender >= 4.0
the Wolvenkit Blender IO Suite (most recent version)
UUH4V Framework (To avoid conflicts with spawned NPCs)
You first need to understand the files you need for hair to work in CP2077. There are three type of files: the Mesh, the Texture and the Physics.
Begin by importing the player’s head. This will allow you to adjust your mesh more accurately and to avoid clipping.
m
base\characters\head\player_base_heads\player_man_average\h0_000_pma_c__basehead\h0_000_pma_c__basehead.mesh
w
base\characters\head\player_base_heads\player_female_average\h0_000_pwa_c__basehead\h0_000_pwa_c__basehead.mesh
Export the mesh from Wolvenkit
Import the mesh into Blender
Import your hairstyle mesh. This tutorial is using the Festive Hunter’s hairstyle from Nier Reincarnation, since a future version of this tutorial will also cover the addition of ornaments to your hair
The modded hair will come with its own armature (bones), modifiers and materials. Delete all those, since you don't need them:
Bones: The "armature" object in the Outliner (top right panel)
Vertex groups: In the "data" tab (green triangle) under object properties (bottom right panel)
Modifiers: In the "modifiers" tab (orange wrench)
Reposition and refit the hairstyle to fit V's head.
Be sure to check around the edges of the hairstyle to avoid clippings with the head.
Unlike clothes, most head meshes only have one bone: Head
. More complex designs and physics will involve more bones, but we'll stick to the easy version for now.
Select your hair
Switch to Edit mode (Hotkey: Tab
)
Select all vertices (Hotkey: A
)
In the Data
tab of the Properties panel (green triangle), create the Head
entry (see screenshot below)
Click on Assign
If you were to add this mesh in-game, it would stay on your character's head like a helmet.
This will blow the scale of this guide and you can ignore it for now. Once you're done with your hair, come back here and look at the links below if your hair mesh includes ornaments.
For more detes about physics, check Dangle bones or Moving a Dangle Chain. This is not necessary for the scope of this guide!
Remember when I said “like a helmet”? That also means your hair will not have any physics. Some short hair won’t have physics to wave around to begin with, but if you want your bangs and ponytails to wave when you open the character editor, get ready for some trial and error.
First of all, understand which part of your hair you want to have physics first, and separate them into a submesh:
In edit mode, select the part that you want to split off (You can use "Select Linked", Hotkey Ctrl+L
, to speed this up)
Once you're content with your selection, separate
the selection into a new submesh (Hotkey: P
-> S
)
Repeat the previous step on the submeshes that you don’t want to move. In this case, only the bangs will move:
You always have to do this, even if you want to add your hair via ArchiveXL as a wig.
Search for a vanilla hairstyle from the game that resembles your physics part the most, and export them with Wolvenkit.
You can find overviews of all existing hair styles under Cheat Sheet: Hair
What you want to look for is how much the vanilla hairstyle overlaps with your mod hairstyle. The closer their shape resembles, the better. In this case, I find hairstyle 05 to be the most suitable, so I export that mesh, as well as their rig and animgraph.
If you want your hair to have physics, be sure to include the .animgraph
and .rig
into the project. They are the physic components for the hair.
I've done this enough time to have some experience regarding which mesh should I use for weight transfer. For Front and Right Bang, use components from hh_081_wa__buns_02
, for Left Bangs, use hh_040_wa__pixie_bob
, for hair on shoulder, use hh_118_wa__gillean
or hh_115_wa__alanah
, for ponytails use hh_083_wa__ponytail_01
.
-Import the mesh into the game and transfer the weights from vanilla mesh to your mesh. Watch this video if you don’t know how to transfer weights.
-Parent the hair meshes under the vanilla mesh’s armature, as well as add the armature modifier.
While you can put your ornaments and hairstyle together, I recommend keeping them separate. You can import any head item and use its armature instead. This is my personal preference to keep things tidy, to avoid confusion when we handle hair’s material and texture later. It’s best that you keep the hair and ornament in two separate mesh files.
-And we are now done with the Mesh Section, but we can’t export it just yet. We need to make sure that our hair will actually show up as hair in the game, so we shall move on to the next part.
If you are porting a hairstyle from another game, it is highly recommended that you just adapt the UV of your hairstyle to fit CP2077’s shared hair texture instead of using the original texture. This will allow your hair to use the game’s hair color system, as well as saving you a lot of hassle when handling the materials.
Excluding beards, caps and private hairs, CP2077 has 5 types of hair textures. Export them from Wkit and add them into Blender so that you can use it as reference for UV editing.
Curly hair strands - base\characters\common\hair\textures\hh_curly01_alpha01_r.xbm
Dreadlocks - base\characters\common\hair\textures\hh_dread01_alpha01_r.xbm
Kinky hair strands - base\characters\common\hair\textures\hh_kinky01_alpha01_r.xbm
Long straight strands - base\characters\common\hair\textures\hh_long01_alpha01_r.xbm
Short straight strands - base\characters\common\hair\textures\hh_short01_alpha01_r.xbm
Most hairstyles I see use long straight strands, but don’t be afraid to use other types of hair and experiment with them.
Keep in mind that no matter what type you choose, you will always need three accompanying texture files for the hair texture to work properly. These files are gradient
, id
and flow
. You can find them by replacing alpha
in the file name with any of the terms above.
-Open UV Editing and edit the UV to fit the white parts of the alpha texture. The black parts of the alpha map are where the mesh will be transparent, thus creating the image of strands of hair. Keep in mind that the hair root is pointing upwards, while the hair tip is pointing downwards. The direction is important for gradient handling. Scale and rotate the UV to fit the alpha.
This is how your UV should ideally look like. Everything is where the alpha will work.
You can preview how your hair will look in Blender by creating a material and importing all the textures mentioned above. This part is optional, but it's nice to check for gaps before you export.
-Create a material and assign it on your mesh before opening the Shading tab.
-Connect alpha texture to Alpha slot of Principled BDSF.
-Create a mix node, set to color and multiply. Connect id texture to slot A and gradient texture to slot B, and connect the output of the multiply node to a Gamma node and set the value to 2.4. Connect the output of the Gamma node to Base Color of Principled BDSF.
-Connect flow texture to Rebuild Normal Z to Normal Map to Tangent of Principled BDSF.
-Turn on Viewport Shading.
This is what your mesh should look like. The black and white represents how hair color gradients will show itself on your hairstyle. Black is the root color., white is the tip color.
-Now you can export your mesh.
Create a project and copy the framework file from UUH4V Framework. I want to replace FemV hairstyle 33, so I chose file 33 for FemV.
Remember this? Copy and replace one of the sets of three files. For example, you need to rename your imported mesh to fhair33_pt1.mesh
. If that’s the case, you need to rename the .animgraph
and .rig
to fhair33_pt1.animgraph
and fhair33_pt1.rig
. Move them into the uuh4v_framework folder and replace the original file.. Having the wrong names will cause your mesh to morph weirdly.
-Open your mesh to check the materials. You want the materials to actually be what you want. Unless you have multiple submeshes, only the first entry in the material matters.
I want to use cards
, not cards_top
. I can manually change every instance of cards_top
in the appearance, or find another mesh that uses cards in the first entry and copy the materials over instead. Since I joined my meshes into one mesh, only the first material entry matters for every appearance. This is the easy way to do it, because there are 35 appearances for 35 hair colors that you need to check over and edit. Copying the materials from another working hairstyle is the simplest way to do it.
Now you can install the mod and see how it looks in the game!
Oof. The color looks about right, but…
If you’re wondering why the hair is warping weirdly like that, it’s because of the physics. It is important to understand that the method taught in this tutorial is the easiest and fastest method, but also the most unreliable. Advanced modders can weight paint and edit rigs by themselves instead of relying on vanilla hair weights, but I know neither of those so I can’t teach you how. If you can’t get your hair physics to look right, it’s perfectly fine to leave it static instead. A good looking hairstyle is better than a glitchy wavy mess like this.
Static hair mesh, but no weird morphing.
Oh right, we got a hat, don’t we?
The hat’s texture is the same as any other item in the game. You can use MultilayerSetup files or metal_base.remt, it’s all up to you. Check here if you don’t know how to do that.
-Replace another mesh other than what you have for your hairstyle, and install the mod.
Tadaa! A simple hairstyle replacement with a fancy hat.
WolvenKit >= 8.13.0 (you should have it )
Use the to the correct mesh and .
You can check the guide, or read up on material assignment in Wolvenkit under Submeshes, Materials and Chunks.
How to make your own .hp files
Created: Sep 16 2024 by Last documented update: Sep 16 2024 by
This guide will show you how to create a custom hair colour to to replace an existing .hp file.
You can find a step-by-step walkthrough under WKit Blender Plugin: Import/Export ->
To learn more about .hp files and their parameters, see
This is currently under development! (Exciting, isn't it?)
Edit hair mods to replace different slots
Created: Sep 22 2024 by Last documented update: Sep 22 2024 by
This guide will walk through the basic steps of how to change a hair mod to correspond to a different slot, showing you how to change a hair mod from slot 01 to a different slot for female V.
You will need a Wolvenkit Project to search and edit files. If you don't know how to make one check out R&R: Your own Wolvenkit project
TL;DR: You need to add all files from the hair mod to your project. If you don't know how to do that, check Analysing other mods, or keep reading.
Switch the Asset Browser to the Mod Browser by flipping the switch (2) on the image below
Locate your hair mod
You can find files by mod by searching for archive:hairmod_slot_1
, or by finding the mod in the mod browser's list.
Add all files inside the mod to your project. These files will be called "your hair" in the rest of this guide.
Does your hair have any files with the extension .app
under the following path?
Yes (left): Proceed to Files: With an .app file
No (right): Proceed to Files: Without an .app file
Everything is in the root, and you have no idea which is which:Files: A bunch of borked files in your project's root
Happens when a mod has been packed with incompatible Wolvenkit versions.
Delete all files - we'll start over
Starting with Wolvenkit 8.15, you can find a scan button in the Asset Browser. If you do not have it, install a Nightly.
Click the scna button and try adding these files again.
If the file names do not resolve themselves, you will have to mix and match. Read on with Case 2.
The modder has taken and overwritten original game assets, and you'll have to do the same.
In this section, we'll do the following things:
Find a compatible hair in the files
Move your hair to overwrite that one instead
Let's get started:
Find the mesh file for the slot that you want to replace. We now need to check if it is compatible.
Switch the Mod browser back to the Project Browser
Use the Wolvenkit search with its full name, for example, hair mesh 34:
hh_151_wa__judy_variation02_common.mesh
Select Browse to Asset Folder
from the context menu:
You will see the hair meshes from the cheat sheet, among with a bunch of other files:
This hair has .rig
and .animgraph
files, which means that it has physics. Does your hair have those files included?
Yes: You can use this hair. Continue to #5
No: You can't use this hair. Go back to the previous section and pick a different hair slot from the list.
For this guide, we will fall back to 04, hh_089_wa__thompson_common.mesh
If your hair has more submeshes than the hair you are replacing, you can't use it either (not without Files: With an .app file). Go back to 1 and pick a hair with more submeshes, such as one of the braids or the sumo hair.
OK, so you can use the hair. Add it to your project.
If it has a _cyberware_01.mesh
and your mesh does not, you can simply create a copy (hold ctrl while dragging)
You will reassign the hair to a different slot by overwriting different game files. We do this as follows:
Right-click on a mesh and click on rename (can be done using shortcut key F2) and type the desired slot's mesh name along with its cyberware version
Repeat this with all files for your hair.
Your project browser will now look like this:
Drag each of the files to the new mesh's folder (hh_089_ma_thompson
)
You will see a dialogue asking you to overwrite. Select "Yes":
Delete the now empty folder hh_033_wa_player
. We don't need it anymore.
You're done here! Proceed to Pack 'n' go
The modder has overwritten the hair's control files. It should look like this (subfolder names can vary):
This is good news, because it's the easy case. You only need to do two things:
Pick a new hair slot
Move your .app files to overwrite the ones from that hair.
Let's get started.
Pick any hair by slot - we will use slot 04 and search for all its .app
files:
hh_003_pwa__hairs_89 > .app
Add all these files to your project:
Now, we need to overwrite all these files with the ones from our other mod.
Select the first .app
and press f2
, or select "rename" from the context menu
Change its number from 059
to 89
You will get a file overwrite confirmation. Select "yes"!
Your mod didn't have hh_003_pwa__hairs_89_cyberware_01.app
.
Optional: Take a moment to curse these incompetent guide writers, or yell very loud.
Select hh_003_pwa__hairs_89.app
in the mod browser
Hold the ctrl key down and drag it on itself
You will get a file overwrite confirmation. Select "no" to create a copy.
Overwrite cyberware_01.app
with your copy.
You're done here! Proceed to Pack 'n' go
You can also click on the down arrow next to install and set to "Install and Launch" to do these two steps for you!
The quickest way to check if your hair slot change has worked is by making a new game and see the changes in hair style selection.
That's it! You can now test your new hair mod.
.app
fileGo up to Files: With an .app file -> You are missing a file
A .mesh
file
If your mod does not have any .app
files, you have the following options:
Overwrite it with a duplicate: just duplicate one of the existing files, and add it a second time. This may cause clipping.
You can overwrite it with a shadow mesh:
Search for base\characters\common\hair\shadow_meshes\hh_ > wa
(> ma
for a masc V)
Find something that looks vaguely similar
overwrite
You can find a different hair to overwrite
You need to find a different hair to overwrite.
This guide will show the process of making a hair ccxl mod, by converting an already-done hair mod.
Published: Jan 29 2025 by
Updated: Feb 11 2025 by
CCXL is a way of adding new slots into character customization menus. the benefit is that you won't have to change or replace the vanilla game files to do add your own! this guide is related to adding new hair slots from an already-done mod.
This guide is a simplification of the CCXL: Hairs page. Some parts of that page might be omitted from this guide to make the process simple, otherwise you can check the page for more detailed information.
This guide is for a normal hair replacer (direct mesh replace) mod and single-mesh UUH4V hair mods.
You have downloaded the hair CCXL modders' resource template for the V that you want from Nexus
You have the mod that you want to convert the hair from.
Wolvenkit to analyze mod, work on your mod, and pack mod.
ArchiveXL 1.20 or later is required for hair CCXL mods to work.
A Wolvenkit project will be required for this guide. if you don't know how to make one check out R&R: Your own WolvenKit project.
Steps will be demonstrated using the Female V template, but the process is exactly the same with the Male V template so you can follow along just fine!
1. Open the root folder of your WolvenKit project, this can be done by clicking on the yellow folder icon called "Open Root Folder" to open the project's folder in Explorer.
Now open the template that you've downloaded from Nexus. Click on "source" and drag the contents inside the zipped file into your WolvenKit project folder.
Your project should look like this, depending on what V hair CCXL template you've chosen.
Once you've verified the file structures, confirm that the template initially works by clicking on install and launch.
To make sure that the initial template mod works we'll need to install and see it in game:
In WolvenKit, click on the arrow next to "Install" and select "Install and Launch". click on "Install and Launch" to install and run the game
Go to "New Game" and reach the character customization screen, click back(A on keyboard or the Right button on the D-pad) on "Hair Styles". The hair style name should be your_first_hair_wa with Songbird's hair or your_first_hair_ma with Saul's hair, depending on the template you chose.
Now that's done you can exit the game and continue, otherwise update ArchiveXL.
To convert a hair mod we'll need the main hair .mesh
file. This is the most important file as this whole mod . There are other files that we'll need, but if your mod doesn't have you can continue with the guide without any issues as the template has placeholders that you can use.
The files are:
Hair physics files (.rig
and .animgraph
)
Shadow hair mesh file (_shadow.mesh
)
Custom hair texture files (.xbm
)
Use unique names for your mod files before starting on the project, this prevent conflicts with any other mod out there.
For the sake of simplicity, the files in this guide will use the name myhair
and will make appended variations of it, Do not use it in your project.
Start with putting the files in your project by:
Add the files aforementioned from your own hair mod archive to the project.
A detailed process of this step can be found in here. but the TL;DR is to flip the switch to asset browser to mod browser and add the files that is in there.
Move the files into their own appropriate locations. The table below will help
.mesh
, .rig
and .animgraph
your_modder_name\ccxl\your_first_addition\meshes
_shadow.mesh
your_modder_name\ccxl\your_first_addition\meshes\shadow_meshes
.xbm
your_modder_name\ccxl\your_first_addition\materials\textures
to something that you would follow with for the whole project.
At the end of this step you should have a file structure that looks like this.
We've successfully done our file structures. Now we'll do the Hair CCXL part of this guide.
This step will diverge into two paths, depending on if you have a custom hair mesh texture or not.
Your hair mod was done with a custom texture that you've brought along for the ride. If this applies the steps below are for you!
Open the your_first_hair_wa_long.mi
file.
Edit the CKeyValuePair
values of Flow, Strand_Alpha, Strand_Graident, and Strand_ID. This can be done by first right clicking on the fitting name (for flow you would select the file that ends with _flow), click copy relative path to game file (1), then click on the fitting CKeyValuePair
value name then paste the path to the DepotPath of the CKeyValuePair
.
(If you have Nightly version of WolvenKit you can skip right clicking by clicking on the orange button next to the files themselves)
At the end of this step your textures have been successfully pathed to the .mi that's in the template, the your_first_hair_wa_long.mi
file should look like this. If so save, delete the template hair texture files, and move on ahead with the next step.
You've used the game's default hair textures to make your hair mod.
if you happen to use the _long
.mi for your mod then good news!, you've used the textures that's in the template, so you don't have to do anything about the _long.mi file,
If you've used something else, . follow along this part:
Open your mesh and expand the externalMaterials
item(1), then open one of the mi files that are not cap (2).
Add the mi'sbaseMaterial
master .mi file to the project and move it to the materials folder.dd the file's
Keep an eye on what the appended name of the material instance, you will use it in the next step. I suggest that you keep the appended name in the mi file, So if the material instance name ends with __short
then keep that name around, you will use it in the next step.
Don't worry we got you
You'll be doing a combination of both steps in that you'll add your cap's .xbm
textures into the project then edit the cap mi file which is your_first_hair_wa_cap.mi
to include your cap textures inside them.
When you're finished from this step completely, rename your material instance file names to the one you chose before.
I recommend you to click on "Update in Project Files" as shown below, this helps with renaming paths in this whole guide and especially with the file that's in resources.
Here comes the interesting part of this guide as its the cornerstone of the hair mod itself.
This process can be done either by WolvenKit's Convert hair to CCXL Material button or manually by deleting and editing sections of the mesh itself
if you happen to have the WolvenKit with the version 8.16.1-nightly.2025-02-11 or later you can do this step entirely automatically by clicking on the Materials button, click on Convert hair to CCXL materials button, then select the .mi files that you want with their style material from the dropdown menus then click Finish. You can also choose if you want to include a cap or not. Once you're done just rename the files and go to the Rename section of this step.
I want you to follow with me step by step as you might encounter some problems with how the hair is shown if you skip a step.
In this step we'll remove all references of the old materials and their appearances before letting way of the new order of materials, much simplified way of having one appearance and letting ArchiveXL do the rest of them.
Open your mesh and the template mesh (which is hh_your_first_hair_wa.mesh)
, collapse all items open in your file, and put them side by side by dragging one of the tabs to the right. This helps to see the whole process for what we'll do.
It should look like this:
In your mesh, right click on appearances
and click on "Reset Object", do the same step for externalMaterials
, localMaterialBuffer
, and materialEntries
. After doing this you should see a number zero or a "[0]" next to the aforementioned items. This step removes all reference of materials that the mesh used before.
Now your mesh will be devoid of any reference of materials (for now..)
Select materialEntries
in the template mesh file and right click on "Copy Array Contents", then right click on your mesh's materialEntries
and click "Paste Selection into Arrary/Buffer". This makes it so that it copies over the needed entries of materials from the template mesh.
Expand the template mesh file's localMaterialBuffer
and right click on materials
, then click on "Copy Array Contents", go to your mesh, expand its localMaterialBuffer, and right click on materials and click on "Paste Selection into Arrary/Buffer". You should see @context
, @long
(or the name you've put), and @cap
.
Expand @context
then its values
propety, click on LongBaseMaterial
and paste the relative path of your main mesh material instance. Do the same process for the CapBaseMaterial
.
If you've changed the materialEntries' name of @long
you'll have to rename the LongBaseMaterial
's key to the name that fits your renamed material entry, this can be found in ArchiveXL: Character Creator additions . So for example if you've had @short
material entry you'll rename the key to ShortBaseMaterial
.
Click on the second item named @long (or the name you've changed), in baseMaterial's DepotPath paste the relative path of the material instance that has the same name (so myhair_long.mi
to the @long
's DepotPath)
and make sure that the Flags are set to soft, do the same process for the @cap
item.
In the template mesh's appearances
item,, right click on black_carbon and click on "Copy Array Content". RIght click on your appearances
item and click "Paste into Array/Buffer". If you've changed the material entry name of @long then reflect that in the appeareance by expanding chunkMaterials
and replace the long
text to the material entry you've had. (So it becomes black_carbon@short
).
Now save your mesh file, rename it to the name that you want. Duplicate the mesh and add the _cyberware
at the end of the name of the duplicated mesh.
While you're at it, rename the animgraph
, rig
, and the mesh in the shadow_meshes folder to the name you wanted. At the end of this step, your mesh folder structure should look something like this:
This step is about the name of your hair slot in the character menu, so make sure you pick a nice name for it :)
Rename theyour_first_hair_wa__local.json
to your mod's name (preferably to something like myhair__local.json
) and open it, click on the item that has the text UI-Customization-your_first_hair_wa
.
In femaleVariant
property, type the name that you want to be shown in the character creation menu (for example: my hair
) then replace the your_first_hair_wa
part of the with your unique mod name (myhair
), do the same process for the _cyberware
item below it.
For Male V you don't need to fill the maleVariant key, as the game defaults to using whatever value in femaleVariant if a male one doesn't exist.
In the end the items should be named UI-Customization-myhair
and UI-Customization-myhair_cyberware
,and your json file will look like this. Save the file but don't close it yet.
This step is about editing the .app file which is responsible for which mesh and physics file appear.
Open your_first_hair_wa.app
file, and:
Expand components then click on hair_dangle
, copy relative path of your .animgraph
file and paste it into the graph
's DepotPath
field on the right of the window, do the same step for rig
's DepotPath
field by copying relative path of .rig
file.
Click on the hh_your_first_hair_wa
item n and copy the relative path of your .mesh
file and paste it in the mesh
's DepotPath
field. Rename the name
field to your mod's name.
Click on hh_your_first_hair_wa_shadow item, and copy ther relative path of the .mesh
file in shadow_meshes folder and paste it in mesh
's DepotPath
field.
Click on the resolvedDependencies
property of the .app file and replace the index number 3's DepotPath field with the relative path of your .mesh
file and index number 4's DepotPath
's field
with the relative path of your _shadow.mesh
file
Once that's done you can save and close the file.
Open your_first_hair_wa_cyberware.app
and replicate the same steps above with the only difference is to copy relative path of the your .mesh
file that ends with _cyberware
instead of the normal .mesh file in both hh_your_first_hair_wa_cyberware
item and the resolvedDependencies
property. Save and close the file.
Open your_first_hair_wa_fpp.app
and expand components to select the only item in there which is called hh_your_first_hair_wa_shadow
, copy the _shadow.mesh
file's relative path to the mesh
's DepotPath
's field, then in resolvedDependencies property , paste the same path in its DepotPath
's field. Save and close the file.
Once you're done from all the steps above rename the files and keep their appended name (_fpp
and _cyberware
) intact.
You've almost reached the finish line! next step is the last file that you'll have to (somewhat) meticulously edit and put paths in, pay attention as it has bit more than the last step.
TL;DR: Keep the names consistent across the .inkcc file.
The .inkcc
, short for .inkcharcustomization
file is the link between what we've done so far and the character customization menu. In this file we'll link our .app file and put the name of the .json file we've had opened two steps ago.
This file has two main items: headCustomizationGroups
and headGroups
.headCustomizationGroups
is mainly split into two parts:
The empty item and the hairstyle_cyberware
item at items numbered 0 and 1.
These two files are responsible for getting the name that will be displayed in the in-game slot, and to get the item names below it. Below is a visual demonstration of what needs to be done in this section.
The your_first_hair_wa
, your_first_hair_wa_cyberware
, and your_first_hair_wa_fpp
items numbered 2, 3, and 4.
These three items takes the relative paths of their respective .app files names.
Finally, the headGroups
main items will have the names that we'll assign for the items numbered 2,3, and 4.
Open _pwa.inkcharcustomization
(or _pma
) and do the following:
Expand headCustomizationOptions
, in there you will see five items . Now:
Expand the no-name item that has number 0 to the left of it, expand its options
property and expand its item as well.
Go to the .json
file and copy the first item'ssecondaryKey
property value and paste it in the localizedName
field. So the localizedName field now has the valueUI-Customization-myhair
This tells the hair slot file that we'll use the name set in the .json file as its display name in-game.
Now expand the names
property and rename both your_first_hair_wa
and your_first_hair_wa_fpp
to a name that you would use, like myhair
and myhair_fpp
.
Do the same steps for the second item which is named hairstyle_cyberware
, with the only difference being to rename your_first_hair_wa_cyberware
to myhair_cyberware
and the names
values to myhair_cyberware
and myhair_fpp
.
Click on the third item named your_first_hair_wa
, and:
On the right of the view's guide , rename the name
field to the name you've put in the names
fields of the previous items , then copy the appropriate .app
file's relative path into resource
's DepotPath
's field.
Do the same steps but for your_first_hair_wa_cyberware
, and your_first_hair_wa_fpp
.
Now expand headGroups, and expand each item in there, then replace the names in there with the names of headCustomizationOptions
's items.
In the end, the name consistency should look like this (hairstyle_cyberware handle collapsed for view)
Now that's done, save the file and close it.
We've reached at the custom pathing and .archive.xl file editing part. This step doesn't have anything complex in it, just simple path rename here and there, and aligning the .archive.xl file to complete this whole setup together neatly.
Since we've been renaming the files since the start of step 3, that means we won't get deeper into all files and do renaming and pathing for every file
Right click on the folder named your_first_addition
and click rename, then replace your_modder_name
and your_first_addition
with a name unique to you and to your files.
When you're finished check the "Update in project files?" box then click Finish.
As a good measure, check WolvenKit's Log for any issues regarding project file rename update.
Sometimes you might face an issue auto-updating with a file or two. If that happens go back to the problematic file and fix the paths within it.
Now open the your_first_hair_wa_ccxl_mod.archive.xl
file in any edtior program like Notepad++ or Visual Studio Code,
This is the file that will tell ArchiveXL on what to do for the hair mod as a whole.
Now we'll need to copy relative paths of files to the needed locations in the .xl
file. The visual guide below can help you in knowing which file relative path goes to where.
Make sure there's a leading space when putting the paths in the .archive.xl file.
When you're done save the .archive.xl file and rename it according to your project mod name, which can be found in the "Project" button in the toolbar, then "Project Configuration" , then check Mod Name's field.
Make sure that everything is connected correctly click on "Project" on WolvenKit's toolbar and click "Scan project for broken file references" to check if there are incorrect paths in files. If there's only the .mi file and has a file path that starts with archivexl\
that means you're good to go.
Finally, delete the temporary files by going to "Project" then click on "Delete empty files".
Confirm that work and mod works by clicking on the down arrow next to the "Launch" button and select "Install and launch", then click "Install and launch".
If the mod works you should see it in the character creation screen by going a step back on the hair style slots in the game.
This is due to improper pathing in the localMaterialBuffer
item in your .mesh file, go back to step 4 and check in the localMaterialBuffer
part of the guide.
Open Cheat Sheet: Hair ->
Open Cheat Sheet: Hair ->
Now that you've done replacing the mesh files, confirm that your mod worked by clicking on "":