CCXL: Eyebrows
This page will tell you how to use ArchiveXL to add eyebrows to the character creator.
Summary
Created: April 25 2025 by lumad11 Last documented update: April 25 2025 by manavortex
This page will teach you how to add custom eyebrows to the character creator with ArchiveXL.
Wait, this is not what I want!
To learn more about the character creator, check Game Components explained -> Character Creator: .inkcc
You will need:
CCXL Eyebrows Template (download from Nexus)
The latest Wolvenkit (stable | Nightly)
You own edited eyebrow textures
Step 1 - Starting a new project
You want to create a new project in Wolvenkit (call it whatever you want your mod to be called).
Extract the CCXL Eyebrow Template file: copy the
archive
andresources
folders to your projectsource
folder.
Step 2 - File names and paths
Once you’ve placed the folders from the template into your project folders, your project in Wolvenkit should look like this:
Now we'll rename a few folders.
Rename the folder
your_name
to whatever your name isRename
your_eyebrows_mod_name_ccxl
to your actual mod name
You still need to adjust the paths for files you add, but we will do that together.
Step 3 - The files
The files are split up by body gender. Anything with pma
in their name is for masc V, pwa
for fem.
The .inkcharactercustomization
file is the entry point for the character creator. You need only one per body gender
Each additional eyebrow slot needs the following files per body gender:
.app
.morphtarget
.mesh
... and a material file that can be shared between masc and fem:
.mi
Textures and materials (.mi files) can be shared between masc and fem V, but every .app
, .morphtarget
and .mesh
file needs to have a pma and pwa version.
I also recommend that you number all the files except for the .inkcc
files in relation to which eyebrow pair they belong to.
To add more files to each folder, right click on the file, click ‘copy’ and paste into the specific folder, or hold the ctrl
key and drag and drop the file to its parent folder.
The .inkcc
The .inkcharactercustomization
defines what is shown in game and enables adding your own entries to the eyebrows switcher with custom names. Open the first .inkcc file you want to start with.
Under headCustomizationOptions
you will see a few entries. Before we start duplicating anything, let's talk about what they do.
gameUiSwitcherInfo
gameUiSwitcherInfo
This is where you will be adding slots to the eyebrows switcher. Open the entry and find options
.
To add another entry, left click options
and you will see a yellow button as shown in the image below:
For each of the appearances, change the following properties:
localizedName
: This will show in the character creator for the eyebrow slot. Call it e.g. ‘[your mod name] [slot number]’, so you can tell the slots apart from each other in the game.names
: You need a unique name, so changeyour_eyebrows_01
to something unique to your mod (e.g.yourmoddername_yourmodname_eyebrows_01
). This is what the character creator uses to pick the correct entry fromheadGroups
(we'll get to that).
gameuiAppearanceInfo
gameuiAppearanceInfo
Below the switcherInfo, the template has two gameuiAppearanceInfo
entries for two eyebrow appearances. For each of the appearances,
Open the first one called
your_eyebrows_01
, and change it to the same value you put into names in the previous step (e.g.yourmoddername_yourmodname_eyebrows_01
)’.Make sure that the
resource
path is the relative path to your.app
file for the corresponding gender and eyebrowsMake sure that the resource
flags
property is set toSoft
headGroups
Expand the
headGroups
entry and you will see threegameuiOptionsGroup
entries:TPP
,character_customization
andTPP_photomode
.Each of these three entries need to have each of the names of your eyebrows from the
gameuiSwitcherInfo
added tooptions
. So when adding additional eyebrows, you would addyour_eyebrows_03
etc. to each of those three entries.

Duplicating entries
To add another gameuiAppearance
entry which will reference the third and so fourth pair of eyebrows:
right click on the bottommost
gameuiAppearance
entry (here ‘your_eyebrows_02’)select ‘Duplicate in Array/Buffer’
Follow the previous steps regarding the name and resource path
Addanother entry under
gameuiSwitcherInfo
and link it to your new ‘gameuiAppearance
’ like I explained.
If you started with the ‘pma’ .inkcc, repeat the process for the ‘pwa’ .inkcc. Next we move on to the .app files.
The .app file
The .app file connects the .inkcc appearances with the correct .morphtarget file, which in turn points at the .mesh with the actual appearances.
Open the
components
entry, then theentMorphTargetSkinnedMeshComponent
.Make sure that the
morphResource
's depot path points at the correct .morphtarget fileFor
name
, put the name of the.morphtarget
file itself.
Your appearance should look like this:
Next, scroll all the down to ‘resolvedDependencies’ and paste the same relative path from ‘morphResource’ into the entry here.
The .morphtarget file
The .morphtarget
defines which .mesh
file is being used.
Make sure that the
baseMesh
path points at the correct.mesh
file for your current body gender.
Next I’ll explain what you need to do in the .mesh file.
The .mesh file
This file contains your eyebrow appearances. Thanks to ArchiveXL's magic, you only need to check the material path:
Expand
localMaterialBuffer
Expand
materials
Expand the
CMaterialInstance
with the name of@context
Make sure that the
BrowsBaseMaterial
's relative path corresponds to the matching.mi
fileNow go to the
@brows
CMaterialInstance, and make sure that thebaseMaterial
has the exact same path.
The .mi file
Open the .mi file you want to change the textures of.
There are only three entries you want to change the path to:
SecondaryDiffuseAlpha
DiffuseTexture
NormalTexture
Each entry’s path should match that of the imported textures. So for the secondary diffuse, it should match the _ds
texture, diffuse the _d
texture, and for the normals the _n
texture.
Step 4 - Importing your eyebrow textures
You can read about importing textures with Wkit here: Textures: Importing, editing, exporting
Step 5 - Editing the .xl file
Rename your .xl file to match your mod's name
Open up the file in a text editor (like Notepad++) and make sure that the relative paths match the ones you have in WKit
To add more eyebrows, simply duplicate the last line from each file type (.app, .morphtarget and .mesh), and make sure that the paths match. (
_wa_
is for femV,_ma_
for masc)
Step 6 - Test in-game
Once done, install the mod from Wkit and check in the CC if the eyebrows are showing up.
(This is what the textures in the template look like)
Troubleshooting
The eyebrows are invisible!
Double-check your
.xl
file: This can happen when the paths are wrongCheck the
.inkcharcustomization
file: Did you forget to add a slot for the eyebrow switcher?Check the chain of the files above. Make sure none of them is missing a path.
Other problems
If you have any questions or don’t know why your eyebrows aren’t showing up, you can ask for help in the modding discord server.
Happy modding!
Last updated
Was this helpful?