Adding props
How to create custom props to use with AMM and WorldBuilder
Summary
Published: April 2023 by @manavortex Last documented update: Jul 4 2026 by @manavortex
This guide will show you the minimal way of creating spawnable props with WolvenKit via the built-in generator.
Wait, this is not what I want!
To learn the file structure and understand how this works, read Custom Props (old workflow). This page also has a video guide!
To use Cyberpunk materials with your props, check AMM: Textured items and Cyberpunk Materials using Custom Props
To register existing props or items with WorldBuilder, check Adding custom resources / props
If you want to enable collisions, see Enable embedded collisions
If you want to make meshes out of 2d textures, see Your image as custom mesh
If you want to use a custom model (Or other resource type) with World Builder, see Adding custom resources
… or use the wiki's search function, or simply poke around
Where to find models
Many websites host free stuff; you can find the largest archives below. Browse this list for a more comprehensive collection, or use the following queries in your search engine of choice:
thing_I_want free 3d model
thing_I_want free fbx fileFor game design or rendering, usually textured:
TurboSquid (there's a drop-down menu on the left-hand side where you can select to search for free models!)
For 3d printing, usually not textured:
Requirements:
Appearance Menu Mod or WorldBuilder to spawn your prop
Notepad++ to edit text files
Level of difficulty: You know how to read.
Skipping and skimming

If you follow this guide to the letter, you will end up with a working prop. If you decide to skip steps, or if you're sloppy about the instructions, you will run into problems. Do yourself a favour and be thorough!
Any links in this guide will lead to extra information. You should not need to follow any of them to complete this guide, but if you're curious, feel free to browse around.
Optional steps will always begin with the word
Optional:Optional sections will tell you in the first sentence where to go if you skip them
Step 1: Creating a prop
This section will walk you through setting up the file structure. At the end of this, you should have a spawnable prop, which will be the copy of an existing game item.
1.1 Creating a project
Create a project in Wolvenkit and give it a name (mine will be "swords").
The project name will become the name of your mod.
1.2 Add container files
We can't create files on import, so we'll have to start with an existing game file (which we will then re-name). I will use a piece of concrete, but you can pick whatever you want:
base\environment\decoration\construction\concrete_debris\concrete_debris_piece_h.mesh
In the Asset Browser, search for
environment > .mesh, and double-click on one to add it to your projectOptional: You can include up to four meshes in a prop. If you want, you can add more files.
In the Project Explorer on the left, select your mesh file, and hit F2 to bring up the rename dialogue

Pick a custom file path and -name for your prop. This path will be used to spawn it in WorldBuilder — use something like
your_modder_name\props\prop_pack\prop\prop.meshMake sure that the box "Update in project files" is checked, then click "finish".
1.3 Creating the prop
See Prop generator in the red wiki for a full description of the tool
I (manavortex) have written a generator for Wolvenkit, which will do all the hard work for you. Let's use it:
Open the generator (
File->Generate files->Prop (Decoration))Pick a
Parent folderfrom the dropdown (use the folder from 1.2.2, e.g. (manavortex\props\swords\red_sword)Namewill be auto-populated. You can change it if you want.In
Define appearances, list the appearances that you want to create. I'll make two, so I'll setdefault, glowingMesh files: Skip ahead and set the first entry to the file you added in 1.2.1 (manavortex\props\swords\red_sword\red_sword.mesh)Go back to
Write to meshes(underAppearances), and check the box with1. This will create the appearancesdefaultandglowingin the skeleton mesh.Click "Finish"

1.4 The file structure
This section is optional - if you want to skip it, go to 1.5 Testing.
In the Project Explorer's source tab, you should now see something like this:

This section will give a brief explanation what these files do.
prop_name.ent
Your prop's root entity.
If you have one appearance, it will contain components loading in your .mesh files.
If you have multiple appearances, it will register each appearance, pointing at your_prop.app .
prop_name.app
You will only have this file if you selected more than one appearance.
Your prop's appearance definitions:
One entry for each of the appearances you added with the generator
In each appearance, one component per mesh file that you selected
prop_name.mesh
The .mesh file contains your 3d data. Right now, this is a game item, but we will customize it in Adding props.
mod_name.lua
This file registers your prop(s) with AMM. You can open it with a text editor to make changes — if you do and the mod breaks, use a lua online compiler to check what's wrong with it.
mod_name.txt
This file tells WorldBuilder about your props.
By default, only the .mesh files will be registered. If you want to tell WB about your entities, run File -> Generate files -> WorldBuilder asset file, and check the .ent files as well.
1.5 Testing
This section is optional (but highly recommended). If you want to skip it, go to Adding props
Let's make sure that this is working (it is working, but I want you to see it).
In Wolvenkit's toolbar, hit the green Play (Install and Launch) button to install the mod and start the game.
Spawning the prop with AMM
Pull up the AMM menu
Open the Decor tab
In the search box, enter the prop name that you picked in the dialogue (
Red Swordfor me)Spawn the item
Spawning the prop with WorldBuilder
ToDo: Look up what exactly the menu items are called
Step 2: Your own item
You have created a prop and it's spawning. Now it's time to actually put your custom 3d data and textures there!
2.1 Blender
Use the Export Tool to export the meshes from 1.2
In the Project Explorer, copy the absolute path to the raw folder: right-click on an item, then hold
CtrlandShiftto change the context menu entry.

Now, open Blender
Optional: Delete everything from the scene (move your mouse over the viewport, hit
A, then hitXand clickDelete)Select
File->Import->Cyberpunk GLTFIn the file selection dialogue, click into the path box at the top, and paste your path (Ctrl+V). That will open the folder.

Select your file, and hit Enter (or click the "Import gltf" button)
You should now see something like this:

2.2 Converting your download
For this guide, we'll be using a sketchfab model that I downloaded in .glb format — if your download is from a different source, your structure may look different.
You may be tempted to use 4k textures. Don't — most people won't even see them, and they will clog up your memory while the engine has to work overtime to size them down. Use 2k at max or check here to learn more.
2.2.1 Importing into Blender
You can usually drag and drop the downloaded files into Blender, and it will offer you an import dialogue. If not, hit up Google.
2.2.2 Mesh conversion
This process is covered in detail in the AMM: Textured items and Cyberpunk Materials using Custom Propsguide. I'll only tell you which buttons to push.
In the Outliner, click through the file structure until you see triangles (meshes)
Ctrl+click on all of them to select them
Join (Ctrl+J) to put them all in one mesh
Enter Edit Mode (Hotkey:
tab)Hit A to select all vertices
Right-click, and select
Separate->By Material

Switch back to Object Mode (Hotkey:
tab)Un-parent the meshes (Hotkey:
Alt+P), SelectClear Parent and Keep Transform.Optional: Scale the meshes (Hotkey:
s)Optional:
Movethe meshes (Hotkey:G). If you turn them in game, they will turn around the world origin.Optional: Apply transforms (Hotkey:
Ctrl+A,All Transforms)
Now, re-name the meshes to meet Cyberpunk's naming scheme:
Double-click on every mesh in the Outliner at the top right, and change its name to
submesh_xx_LOD_1(xx is the number, starting at 00). You can use the mesh that you imported as an example to get it right.
Blender will add suffixes like .001 to keep track of things - you can ignore them!
In the Outliner at the top right, make sure that all meshes that you want to export are selected
Switch to edit mode again (Hotkey Tab) and triangulate (hotkey:
Ctrl+T,enter)Use
File->Export->Cyberpunk GLB, and overwrite the file you exported from WolvenKit with the following settings:Skinned Mesh: turn it off
Fix meshes: turn it on
Now, export from Blender: overwrite the file you previously exported.

If you don't exactly overwrite the file, you won't be able to import into WKit.
Now you can use the Import Tool to import it back.
2.3 Textures
If your textures are in a folder in your download, rather than embedded in the file, re-name it to textures and skip to 2.3.4 below the picture
When saving files, make sure that everything has lower case letters and numbers only. No spaces, no uppercase letters, no emojis, no ascii art!
We're not quite done in Blender yet: we need to export the textures, too.
Switch to the Shading tab at the top
In the node editor, click on one of the orange texture nodes to select the texture in the editor
In the texture editor (bottom left), export the image (Hotkey:
Ctrl+Alt+S). Save it in the same folder as your mesh, or put it in the subfoldertextures

Now, let's re-name our files to match Cyberpunk's naming scheme. That will let WKit pick the correct import settings:
The diffuse/albedo (actual colour of the item) needs to end in _d0X (make it
d_01for the first texture set,d_02, and so on)The normal map (the buumpmap, blue/purple or yellow) needs to end in _n0X
Roughness (if present) needs to end in _r0X
Metalness (if present) needs to end in _m0X
Optional: If any of the textures you used has transparency, check this guide.
Optional: Both image width and image height should be even numbers (1024, 2048 etc).
Optional: Re-scale your textures (max width/height: 2048)
Import
Let's get those files into the project!
Switch back to WolvenKit
Use the Import tool to import all textures and .glb file(s) - you can use
Import AllYou might see warnings. These are fine: as long as the text is not red, you can ignore it.
If you click on your .mesh, the preview should change. If not, check the log and hit up Troubleshooting your mesh edits.
Optional: If any texture imports failed, check Troubleshooting
Step 3: Your textures
This process is covered in detail in the AMM: Textured items and Cyberpunk Materials using Custom Propsguide, so this guide will only show you how to hook up one (1) textured material.
This section will show you how to configure your object to use textures instead of Cyberpunk's prodedurally generated materials. However, Cyberpunk materials are cool, and you'll definitely want to learn about them (check also Changing materials, colors and textures).
All this takes place in WKit.
3.1 Materials
We'll configure the materials first, then update the appearances to use them.
Prep
Double-click your .mesh file in the Project Explorer to open it. You will now see something like this (the arrows show you where the materials are defined):
Optional: If the materials are in the red list from the screenshot
Select
Clean Upfrom the menu barExpand the
Convert material preloading statesubmenuSelect Convert preload materials to local
From the menu bar, select
Clean Up->Adjust Submesh Counts. This will make sure that you have exactly as many chunks in your appearances as you need.

Using a textured material
Optional: Expand the
materialEntriesnode, where the materials are defined.Select the first material (
CMaterialInstance)Right-click, and select
Rename Material. If you do not have this option, you have selected the wrong thing.Name it something that you can remember (e.g.
textured_1, orsword_metal) Doing this will make the entry inmaterialEntrieschange. Alternatively, you can also use this entry directly, but that won't update material names in the appearances.Change
baseMaterialtoengine\materials\metal_base.remt— that will make it a textured materialClick on the
valuesarrayRight-click and select
Clear Array/Bufferto delete all propertiesIn the right-hand panel, click on the yellow + button to add a new parameter
Select
Textureand click Create

Select the entry in the values array
Right-click, and
Duplicate Item in Array/Buffer. Do this once for every xbm file you have.In the panel on the right, click the refresh button next to the dropdown menu for
Key. This will read the material parameters from the base material:

Now let's connect our textures. We use the CKeyValuePair in the values array that we just created. This parameter is of the type texture, so we can pick our textures from the dropdown.
For
Key, select the property name corresponding to your textureFor
Value, select the.xbmfile corresponding to the name
You can find a full list of options under Textured (PBR) material properties. Your options for textures are:
BaseColor: The texture ending in_d01(material color). By default, this is usingengine\textures\editor\grey.xbmand is grey.Normal:Bumpmap (height map). By default, it is usingengine\textures\editor\normal.xbmand is just flat. ℹ️ Importing the normal map into wkit with the correct settings should have turned it yellow.Roughness: (greyscale) How rough or glossy the surface is. By default, it usesengine\textures\editor\white.xbmand is maximally rough.Metalness: (greyscale) How metallic the surface is. By default, it usesengine\textures\editor\black.xbmand is not metallic at all.Emissive: (greyscale mask): Which parts of the mesh you want to glow, and how much. By default, items do not glow at all.
Another material
This is optional - you can skip to 3.2 Appearances.
After splitting the hilt into a different submesh in Blender and adjusting the submesh count in the prep step of this section, my appearances now have two submeshes, which can use different materials.
I already have my sword_metal material, now I need another for the hilt.
Expand
materialEntriesSelect the last item in the list
From the context menu, select Duplicate as new item(s)
Change the name of the new material to e.g.
sword_hiltGo to
localMaterialBuffer.materialsClick on the material node that you want do duplicate
If this material is the last in the list, you can simply duplicate the item and skip to 10.
From the context menu, select
Copy from Array/BufferSelect the last item or the materials array (the parent node)
From the context menu, select
Paste into Array/Buffer. This will give you a new material with your new name.Select and expand your metallic material (
sword_metal)Add another Texture parameter to the
valuesarray of the metal material (or duplicate an existing one)Set its
keyto MetalnessSet its
valuetoengine\textures\editor\white.xbm
Add another
Set its
keyto RoughnessSet its
valuetoengine\textures\editor\black.xbm

3.2 Appearances
Now, all that is left to do is to pick the right materials per mesh appearance! Fortunately, this is easy:
Expand the
appearancesarray at the top of the file. If you pressCtrl, all child nodes will be expanded as well.For every appearance, select the chunkMaterials node
In the panel on the right, you can pick materials per chunk in the dropdowns.
If you are not sure which chunk is which, you can switch to the Mesh Preview tab, and toggle the checkboxes. This is only a preview, and will have no effect on the game.
Troubleshooting
There are no dedicated troubleshooting steps for this workflow yet. For the general package, check Troubleshooting.
Last updated