How to add a new appearance to an NPV
This will show you how to add a new appearance to an NPV if you maybe didn't make it yourself.
Summary
Created: Jul 3 2025 by ratstick Last documented update Jul 14 2025 by ratstick
This page will show you how to add an appearance to an already-existing NPV.
Introduction
Commissioned an NPV or had someone make one for you and want to add new appearances yourself? It’s easy! Well, sort of. All the hard work has been done, but there are still some things you’ll want to consider. Here’s a guide walking you through it, step by step.
Don’t hesitate to DM me on Discord or Nexus (ratsstick/ratstick
respectively) if you need help, or if the guide is unclear! You can find me in the modding community discord, the AMM server, the KS server, and Veegee’s server. <3
Disclaimer
I love subfolders and organizing my NPVs. The screenshots I’ll be sharing are from a mostly vanilla fem V NPV that I was commissioned to make. You’ll see my stupidly detailed folder organization for clothing meshes and textures. If you want to use this in your own projects, you can download it here!
These steps will be the same for adding new hairstyles, tattoos, cyberware, anything that is only on a new appearance and not the base appearance.
The Mr. Potato Head and Barbie Dress-Up Metaphor
The .ent
file tells the game what file to reference for a given entity to load its appearances. You can read more about it hereEntity: .ent files
The .app
file tells the game what to load when spawning the character entity. You can read more about it here Appearance: .app files.
The .app
file is where most of the work takes place. It’s where we’ll start. You can think of it like a Mr. Potato Head doll. The components are the eyes, nose, ears, mouth, hats and such of the Mr. Potato Head doll. When we add items to the .app file, we’re playing dress up with our Mr. Potato Head or Barbie.
What does “custom pathing” mean, and why do we do it?
Custom pathing is changing the folder structure or the name of a file so that vanilla or other modded files don’t overwrite what you’re putting together. This means that if I have Arkhe’s Universal Skin Tone mod installed, but your NPV uses a different skin file, then your file wouldn’t be overwritten by me having that mod installed.
I take a broad approach to custom pathing and path nearly everything that isn’t an engine file or file type not commonly edited. I still recommend doing this for vanilla clothing items, as replacers are still used for some clothing items. In general, I recommend custom pathing the following file types:
.mesh
.mi
.xbm
.mlsetup
.mlmask
Adding new appearances
Step 1: The project
If you already have a Wolvenkit project for your NPV, you can skip this step and go straight to Step 2: Duplicating an existing appearance.
Open WolvenKit and select “create a new project”.
Fill out the stuff. Make sure you use underscores instead of spaces. WolvenKit will freak out, and your mod may not work if you use spaces in folders and such.
Follow the guide for Analysing other mods on how to add your NPV's files from the
.archive
you have installed. Add every file in the archive.You'll want to make sure you add any extra files like the
.lua
for spawning via AMM or a custom.xl
file that may contain things like localization or scope info. Don't worry if none of that makes sense, the only thing you need to worry about is getting all the NPV files into your project.The
.xl
file will be found inarchive/pc/mod
and goes directly into your project'ssource/resources
folderThe
.lua
file goes into the resources folder, too. When we pack this, we need to make sure AMM can read our file. You'll want to create a new folder insource/resources
using the following path:bin\x64\plugins\cyber_engine_tweaks\mods\AppearanceMenuMod\Collabs\Custom Entities
. You can use Wolvenkit's Create Folder button to create the entire thing in one go, then move the .lua file there. To do that, right click on the resources folder and select "Create new folder" (or hit F7 on your keyboard). Then, copy and paste the path shown above! You click the yellow button to open the folder in Windows Explorer and move the.lua
file into it.This is what it should look like if you're using the "Create Folder" function inside Wolvenkit
Step 2: Duplicating an existing appearance
Since all the hard work has been done for you with the base appearance, you can duplicate an existing appearance. Personally, I usually duplicate one with the same t0 submeshes hidden because I frequently forget to unhide them. (We’ll get to this in a later step).
Find your .app file and click the blue button to open it (you’ll see it when you hover the file).
Right-click on the appearance you want to duplicate and select “Duplicate in Array/Buffer”.
It is imperative that you change the name of the appearance. After duplicating, make sure the new appearance is selected. In the right pane, you’ll see a field that says “name”, that’s where you can change the appearance name. Remember: You must use underscores, no spaces!
Step 3: Playing Barbie Dress-Up (Adding items)
Once the name has been changed, click the carat next to the appearance to expand it.
Click the carat next to
components
In some template NPV .app files, clothing has its own section. If your .app file looks different, you can find the clothing components by looking for
entGarmentSkinnedMeshComponent
orentSkinnedMeshComponent
and checking the component names for clothing prefixes. Some modded items may use custom names but it should (hopefully) be obvious which of those are clothing items. The clothing prefixes are as follows:t1 inner torso)
t2 (outer torso)
s1 (shoes)
h1 and h2 (headwear)
l1 (legs)
g1 (gloves)
i1 (items e.g. pouches and bags)
Since we duplicated an appearance, there may be clothing items you don't want or need in the new one. I don’t want the sunglasses in this appearance, so I’m going to delete it. Right-click on the item and select “Delete Item in Array/Buffer”.
Now it's time to play Barbie dress-up!
Finding clothing items
You can either search for the name of the item if you know what it is, or peruse the asset browser. You can also use the Tweak Browser after finding a vanilla item's baseID to find the mesh you need. You can follow this guide to see how to do that.
I want to use the vanilla Converse so I need to add the mesh to my project.
Right-click on the .mesh (p)ma = (player) male average; (p)wa = (player) woman average
Click “Add selected items to the project”. This will duplicate the folder structure in your project as well.
I’m going to add a new subfolder (right click on one of the folders) to “feet” for the converse and add another subfolder inside that for the textures. You can also rename the mesh, however I prefer a more organized file structure as I find it easier to navigate, especially if I ever need to change textures!
Drag and drop the .mesh into the new subfolder.
Nice, we're following custom pathing best practices. Next, we need to tell the game that instead of the boots in this appearance, we want it to load the Converse instead. We can either duplicate an existing clothing component or swap the paths and mesh/appearance names in the .app
file.
Sincere there's already a shoe component in this appearance, I'm going to just swap the mesh path and mesh and appearance names.
ight-click on the mesh and select “copy relative path to game file”.
Paste it into the “DepotPath” section on the right pane.
The component can be renamed to whatever you want. I’m going to put “converse”.
Finding mesh appearances
Now we need to find the mesh appearance and clean up any unused mesh appearances. This just keeps it nice and tidy and easy to find the materials you actually need to change. Just like we did when opening the .app file, hover over the mesh and click the blue button to open it (or double click).
The first section you see contains the mesh appearance names, and these are what we’ll put in the meshAppearance
field. I like the look of the black converse, so I’m going to choose the “black” meshAppearance
.
The component in the .app should now have the mesh appearance, component name, and path to the mesh changed.
Optional, but recommended: Cleanup
Now, it’s time to clean up the mesh appearances! If you use more than one appearance in the mesh, it’s fine to keep those entries in the mesh file. I only want to use the black appearance, so I’m going to delete the rest of the material entries. WolvenKit has a very handy tool that will do this part for you.
Select the appearance entries you don’t want, then right click and hit “Delete Item in Array/Buffer”. Alternatively, you can also select the entry you want, hold shift, and click "Delete everything but selection".
Now, we can use a function in WolvenKit to clean up the entries we don’t need in the
localMaterialBuffer
andmaterialEntries
. Click on “Clean up” and then “Delete unused materials”.
Everyone say “thank you Wolvenkit devs.”
Custompath the material files
Now to edit the path of the textures.
Find the
localMaterialBuffer
and click the carat on the left to expand it. Do the same thing formaterials
,CMaterialInstance
and the values. These contain the paths to the textures we’re going to change.
Click the yellow arrow to add the texture to your project. We can ignore the
baseMaterial
because that’s an engine\materials file and I don’t think those are ever changed in any mod. Just like when we added the mesh to our project, the textures will replicate the folder structure.
Just like we did with the mesh, we want to drag and drop those into the “textures” subfolder.
Just like we did the mesh path, right-click on the texture, select “copy relative path” and paste it into the corresponding field in the .mesh. Then save it. Do this for all the textures that need to be pathed.
This guide is getting hella long already, so I won’t bore you with adding more clothes. The process will be the same no matter what you add.
Hiding body submeshes
One thing you may want to do is hide some of the body submeshes to prevent clipping through clothes.
Find the
t0
mesh component in your appearance and toggle off or on the chunkmasks. You can also open the mesh and switch to the preview tab to see which submeshes you may want to hide.
Step 4: The Paperwork
Save the .app
file after you’re done updating and adding your clothing. This can take a while sometimes depending on a few different factors. But just wait until it’s done.
Now, we need to tell the game that there’s a new appearance that can be used for the entity. That means we have to update the .ent
file. Find that file in your project and click the blue icon to open it.
Right-click on any one of the
.ent
entries and select “Duplicate in array/buffer.”Just like we did when we duplicated the .app appearance, we’ll need to rename it. Rename it to the same name you used for the appearance. Pay close attention to the formatting of the “name” field. You only need to append the new name to the end of the NPV name.
This is what it should look like.
Save the
.ent
file.
Optional: Add the appearance to AMM
If you don't want to use AMM, you can skip straight ahead to Step 5: The Finish Line
If you also want it to spawn in AMM, we’ll need to add the appearance to the .lua
too. You can do this in any text editor, I use notepad++.
Pay close attention to the formatting of these names!
And don’t forget the comma!
If you also want the NPV to show up in photomode, you’ll need to regenerate the photomode files. Thankfully, WolvenKit has a way to do this automatically too! Follow this guide to generate those: Step 1: Create photo mode files
Step 5: The Finish Line
This guide assumes you’ve never opened WolvenKit in your life so I’m going to show you how to pack the project.
If you're raring to go, and not using a mod manager like MO2, you can just click "Install Mod" or "Install and launch" if you're ready to test it right now.

This will pack your mod, install it to the game directory, and then launch the game for you.
However, I think it's important to also know how to pack the project so you know where to find the packed file and if you need to install it to a mod manager.
Packing the project
In the top bar, click “Build” then “Pack Project”.
The log will show you when the packing is complete.
You can click Build and Install or you can click the yellow folder in the Project Explorer to open the project folder.
Go up a level and you’ll find a .zip file with the packed mod, ready to install.
If you made a new project and aren’t using the one the modder did, make sure you uninstall the old NPV by deleting all of its files.
And that’s it! Install and go, test it out!
Final Notes
Garment support doesn’t work on NPVs. You can hide submeshes in ACM or in Wolvenkit. You can also edit the mesh(es) in Blender to cut out or resize the parts that clip with other items.
This process should work for NPC+ too. And again, please don’t hesitate to reach out to me (ratstick
) if you need help!
Last updated