3d objects: .mesh files
Documentation on .mesh files and their properties.
This page contains information on .mesh files and their properties.
If you want to export or import mesh files, see here.
If you want to learn how to edit a mesh's appearance, check this guide.
If you want to mess with a .mesh's materials, see here.
A mesh file's shadow is defined in via .component
Material assignment
Step 1: Appearances
This is how to determine which parts of the mesh have which material:

ChunkMaterials
You assign materials based on the "chunks" (the individual submeshes) inside a mesh. Open the mesh file in Wolvenkit and open the "appearances" array, then make sure that each of your submeshes has an entry inside the array.

Material definition
Materials are defined in the array materialEntries
inside your mesh:

While you can mix external and local materials, you can not mix preloaded and non-preloaded ones. For details, see below.
index
numerical index of corresponding material in target list (as defined by isLocalInstance
)
isLocalInstance
Selects the material target list.
True: local material in localMaterialBuffer.materials
or preloadLocalMaterialInstances
False: material reference inexternalMaterials
or preloadExternalMaterials
For more information on this, see the page for local/external materials.
name
unique name of material, used to select the material via chunkMaterial
Preload… what?
Many of CDPR's early meshes use preloadLocalMaterialInstances
instead of localMaterialBuffer.materials
. As far as we are concerned, you can use the two interchangeably, but:
If you are using a mix of local and external materials, you must use the corresponding lists:
localMaterialBuffer.materials
externalMaterials
preloadLocalMaterialInstances
preloadExternalMaterials
If you mix the two, the materials outside of preload
… will appear as transparent the first 1-2 times you trigger your item's appearance.
Step 3: Material definition
A material definition can be in a CMaterialInstance
inside the mesh or in a .mi
file in the project. For local materials, Wolvenkit will display material names as defined in the materialEntries
.
For more details on material definitions, check here.
MaterialInstance: The local material
The materials themselves are inside the array localMaterialBuffer.materials
(or preloadLocalMaterials
in case of older meshes).
You can't go wrong by using those. However, if you don't have any properties that are unique to your mesh or appearance (for example a custom normal map), you might consider creating and using an external material instead.
A material instance looks like this:

Material reference: reusing materials
A relative path to an external material, usually encapsulated in a .mi file. Use this if you don't need to add extra properties.
Last updated