Creating facial cyberware
Custom facial chrome from scratch
Summary
Created: Jul 18 2025 by mana vortex Last documented update: Jul 18 2025 by mana vortex
This guide will show you how to create custom facial cyberware from scratch.
What you need
Skipping and skimming

This tutorial has no fluff, and you should not skip over parts of it unless they're clearly marked as optional. If you do anything differently (using other names or whatever), you add extra complexity which you will have to deal with.
I recommend following the steps exactly like a braindead automaton, then creating a backup copy of the working project before starting to fuck around.
Of course this is a free world, so you can do what you want.
Step 1: Setting up the files
Add the basehead .mesh and .morphtarget to your Wolvenkit project:
fem V
base\characters\head\player_base_heads\player_female_average\h0_000_pwa__morphs.morphtarget
base\characters\head\player_base_heads\player_female_average\h0_000_pwa_c__basehead\h0_000_pwa_c__basehead.mesh
mascV
base\characters\head\player_base_heads\player_man_average\h0_000_pma__morphs.morphtarget
base\characters\head\player_base_heads\player_man_average\h0_000_pma_c__basehead\h0_000_pma_c__basehead.mesh
Currently, your mod is overwriting the player base head. To avoid that, we will custompath and move both files to a custom folder.
Select the
.mesh
file and use Wolvenkit's rename function (f2
) to move it. Make sure to have the "Update in project files" box ticked.

Do the same for the .morphtarget file.
Your
archive
tab should now look like this:

Now, export the
.mesh
and.morphtarget
file: In Wkit's Export Tool, click on the "Export all" button. This will create the files for Blender in your folder.
Step 2: Creating your new cyberware
Open up Blender and import the .morphtarget file. We will only work on that one!
You should now see something like this:

Select the head mesh by clicking on it in the outliner (blue arrows to the right)
Duplicate the head (Hotkey:
Shift+D
), so that you have a reference for resizing.Switch to Edit Mode (
Tab
)
Step 2.1: Cutting out your cyberware's shape
We will now cut away all the faces (surface triangles) that are not part of your custom cyberware.
I'm putting a smiley on V's forehead, so I am cutting away everything but this little part:

2.2: Make it a tiny bit larger
We want our cyberware to float above the player head, not clip into it. For that reason, we need to scale it up a little.
Select all vertices (Hotkey:
a
)Enter scaling mode (Hotkey:
s
)Upscale it slightly (Hotkey: type
0.02
and press enter) - you have the original head as a reference
Once it is directly above the surface, you're done here.
Step 3: Textures

Switch back to Object mode (hotkey:
Tab
)Delete the reference head mesh (select it by clicking, then press
x
)Switch to the Shading perspective
Make sure that the viewport is set to "Viewport Shading"
Add a new material to your mesh by clicking the "New" button
This creates a new empty material for Blender.
3.1: Adding a texture
Now, add a blank texture to your mesh. Move your mouse cursor over the node editor at the bottom, then do the following:
Add a new image texture (hotkey:
Shift+A
, typeimage
, press enter)Create a new image texture by clicking the
+ New
buttonGive it a name (for example
my_new_cyberware_d01
)
Connect the
Color
output of your new node to theBase Color
input of thePrincipled BSDF
shader nodeClick on the texture node to select it. That will change the texture viewport on the left to black.

3.2 UV Mapping
In the top bar where you switched to the Shading perspective in 3.1, switch to
UV Editing
Make sure that your viewport (right) is in Edit Mode (Hotkey:
Tab
)Select all vertices (Hotkey:
A
)To prepare for UV unwrapping, we will now merge by distance (Hotkey:
m
):

On the UV editor on the left side, also select all vertices (Hotkey:
A
)Unwrap them (Hotkey:
Ctrl+U
)

Now that our UV map is using the whole texture, it's time to paint our texture.
3.3 Texture painting
In the top bar where you switched to the Shading perspective in 3.1, switch to
Texture Paint
You can now use a brush to paint, either on the texture (left), or on the 3d model (right):

Draw the rest of the owl.
Once you are done painting your texture, save it:
Move the mouse over the texture port on the left and press Ctrl+Alt+S
From the "Recents" dropdown, select the topmost folder (where your mesh and morphtarget are)
Right-click to create a new folder "textures"
Save your texture inside the fodler as
my_new_cyberware_d01.png
Step 4: Back into Wolvenkit
In this section, we'll get our .mesh and .morphtarget back into Wolvenkit.
In the top bar, switch back to the
Layout
perspectiveMake sure that your viewport is in Object mode (Hotkey:
Tab
)Select all meshes that you want to export
From the menu, select File -> Export -> Cyberpunk GLB (or see the wiki page)
Overwrite both
h0_000_pwa_c__basehead.glb
andh0_000_pwa__morphs.morphtarget.glb
That was the Blender part. Now, we need to go back to Wolvenkit.
On the Import Tool in the bottom left, import first the glb that goes into the
.mesh
file:

Now, import the morphtarget and the texture.
Step 5: Materials
Open the
.mesh
file in WolvenkitFrom the top bar, open the "Clean Up" menu
Hold the shift key and click "Clear All Materials":

Save the file.
5.1 Creating and configuring a new appearance
Now, we'll create an appearance with materials.
Select the
appearances
node, and click the yellow+
button on the right:

Expand the
appearances
node on the leftExpand your new appearance (it is called
default
)Select the
chunkMaterials
node on the left, and click the yellow button again to add an entryGive the chunkMaterial the name of the material that you will create next (e.g.
my_custom_cyberware_material
):

5.1.1 Adding the material
On the left, expand the
localMaterialBuffer
node and select its childmaterials
Right-click, then select
Add material and definition
from the context menuIn the popup dialogue, enter the name from step 5 in the previous section (e.g.
my_custom_cyberware_material
)Select the new CMaterialInstance
5.1.2 Configuring the material
This is where we tell the material how to behave. We'll create a decal
(something that is projected on top of something else), then tell it to use our texture.
Set the
baseMaterial
depot path tobase\materials\mesh_decal.mt
Expand the node and select the
values
arrayClick the yellow + button on the right panel
In the dialogue that now opens, add a
Texture
Change its
key
toDiffuseTexture
Change its
value
to the relative path to your texture (right-click on the texture in the project browser, selectcopy relative path
, then paste it into the depot path box)
Add another property, this one a
Scalar
Change its key to DiffuseAlpha
Change its value to 1

The decal will now project your texture on top of V's head, and force it to be completely intransparent.
Step 6: Connecting everything
So far, we have a .mesh and a .morphtarget in Wolvenkit. If we packed the mod now, nothing would happen, because the game doesn't know what to do with those files.
6.1 The .ent file
First, we need an .ent file to hold our component.
Find
base\characters\head\player_base_heads\appearances\entity\cyberware\hx_000_pwa__cyberware_01.ent
and add it to your project (pma
for masc V)Move the file to your folder (tutorial\cyberware\my_custom_face_cyberware) and open it
Select the second component and change the following properties:
morphresource's
depotPath
to the path of your custom morphtargetthe name to something unique

Save the file.
6.2 The .xl file
Now we only need to add our .ent file to the player entity. ArchiveXL can do that for us.
Switch your project browser to the
Resources
tabIn the resources folder, create a new .xl file (or an empty text file with the .archive.xl extension)
In the text file, paste the following content (delete the gender that you're not using):
resource:
patch:
# masc V
tutorial\cyberware\my_custom_face_cyberware\hx_000_pma__cyberware_01.ent:
- base\characters\entities\player\photo_mode\player_ma_photomode.ent
- base\characters\entities\player\player_ma_tpp.ent
- base\characters\entities\player\player_ma_tpp_cutscene.ent
- base\characters\entities\player\player_ma_tpp_cutscene_no_impostor.ent
- base\characters\entities\player\player_ma_tpp_reflexion.ent
- ep1\characters\entities\player\photo_mode\player_ma_photomode_ep1.ent
- ep1\characters\entities\player\player_ma_tpp_ep1.ent
# fem V
tutorial\cyberware\my_custom_face_cyberware\hx_000_pwa__cyberware_01.ent:
- base\characters\entities\player\photo_mode\player_wa_photomode.ent
- base\characters\entities\player\player_wa_tpp.ent
- base\characters\entities\player\player_wa_tpp_cutscene.ent
- base\characters\entities\player\player_wa_tpp_cutscene_no_impostor.ent
- base\characters\entities\player\player_wa_tpp_reflexion.ent
- ep1\characters\entities\player\photo_mode\player_wa_photomode_ep1.ent
- ep1\characters\entities\player\player_wa_tpp_ep1.ent
Now, start the game. If you did everything correctly, you should now see your new cyberware!

Last updated