Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Find knowledge on editing 3d models here
Check the sub-pages for more detes, or check the section's sub-pages.
Due to its complexity, we don't have a dedicated guide on Blender. However, if you have no idea how to start, various other guides cover part of the process:
For more hands-on advice, see the guide section, for example
Wolvenkit Blender IO Suite: Importing/exporting #meshes
A mesh defines the shape and surface of any in-game object.
For more information on .mesh files and how they work, see 3d objects: .mesh files
For more informations on materials and mesh appearances, see Textures, Materials and Shaders
Morphtargets are a special kind of mesh used for alternate and additional shapes beyond the static shape a .mesh
can define. If your source is a .morphtarget
, you need to primarily work with that rather than the .mesh
.
Read more on the Morphtargets page
Overview of working with morphtargets
COMPATIBILITY WARNING
Full .morphtarget
editing is enabled in Wolvenkit >= 8.9.1.
.morphtarget
Morphtargets are a special kind of a mesh, or more accurately a .mesh
is a more limited version of a mesh without the ability to define targets by itself (with a few exceptions.) A full model can consist of multiple .mesh
es and .morphtarget
s.
Morphtargets (or more generally just 'targets') are used for additional deformation beyond what rigging can do, as well as for creating alternative and/or additional shapes for a mesh. Blender calls targets shapekeys.
To be exact, cp2077 has three kinds of targets:
.morphtarget
is a separate type, and has an associated .mesh
(baseMesh
) because redengine splits the full data needed for the model into these two separate types. The .morphtarget
always defines the shape, overriding the .mesh
. The .mesh
stores the other information as usual. .morphtarget
s are used for, for example, body and head customization.
GarmentSupport is a property of a .mesh
. It is also a target and this is a more common way to define targets than the separate type. GarmentSupports are used, for example, to slightly shrink a t-shirt so that it doesn't clip when you put a jacket over it.
Vehicle damage submeshes. This is a static end state of a target, inserted directly as an extra submesh rather than a target.
A simple and perhaps familiar.morphtarget
example is chest size for FemV. There are three states: default, small, big. The default corresponds to the base mesh shape, and is the Basis shapekey in Blender.
The two other states are defined as targets. Each target defines a 'delta', a set of offsets for base mesh vertices from their positions in the default shape - including any other active deform, like a pose in photomode. If you fully enable one of these targets, you effectively have a mesh with the chest area reduced or enlarged.
Targets can be also enabled partially, with the states between off and fully on (the 'end state') interpolated by the engine or 3D software. This can be used for animations, but in the cp2077 context generally is not.
Targets can be blended together. If two targets are enabled fully or partially, their combined state is blended into one shape. In cp2077 some targets are mutually exclusive (like the chest size), and others are inclusive (your V's face is a combination of the selected eyes, nose, mouth, jaw, and ear target states all blended together.)
Exclusive/inclusive is not a limitation of the targets themselves, but of how cp2077 activates them..
The game engine activates targets by name (and region) in specific conditions.
Character customization targets are activated when the character is loaded (and dynamically in the CC view.)
GarmentSupports are activated when equipping a garment that goes "on top of" the garment with GarmentSupport.
So, some uses are probably already obvious. But targets enable quite a bit of exciting modding:
Modding anything with a .morphtarget
without breaking the targets like before
You can for example mod the CC tattoos, or piercings...
...Or any aspect of character face customization. Vampire catboy Legolas here we come!
TBA
The main limitation currently is that we do not have a way to add activations, at least generally. You need to hook into a target name that the engine already uses.
This Section is Incomplete
For best results, export an original game file and start from there, as exports from older Wolvenkit versions may not work.
For a collection of morphtarget resources for eye overlays, find NoraLee's Nexus resource.
One thing deserves highlighting right up front: whenever you are doing 3D work on a model that has a .morphtarget
, you work with the .morphtarget
, not the.mesh
. The .mesh
is only used for things the target doesn't include, like appearance definitions.
Fundamentally the 3D workflow goes like this in Blender (use the blender cp2077 plugin import/export):
WkitExport the .morphtarget
BlenderImport it
Make your edits to base shape and/or shapekeys (if you need to - the base shape edits are automatically propagated to shapekeys.) You can edit just like you would a .mesh
, because it is a mesh.
BlenderExport to a file named after the .mesh
BlenderExport to a file named after the .morphtarget
WkitImport the .mesh.gltf
first. Wkit will treat it just like it would a 'real' .mesh
WkitImport the .morphtarget.gltf
...And that's it. You can pack the mod.
Make sure to test your targets work blended with other targets, not just by themselves
You can create targets from scratch, all that matters is that the name matches the original. This is handy for zeroing out targets you don't need or want, for example.
I prefer to use either of the .gltf
formats over .glb
. They're all GLTF but .gltf
is slightly more widely supported, plus you can open it up in a json editor. -- Auska
See the GarmentSupport section for more info.
TBA
Best Practices for actually changing meshes
This guide will give you a number of techniques when it comes to editing meshes in Blender. The screenshots have been taken using version 3.4.1.
Starting in version 1.5.0, the Wolvenkit Blender IO Suite features an auto-refitter, which supports many custom bodies and will be expanded in the future.
For information on weight painting, check Meshes and Armatures: Rigging
This guide is aimed at more intermediate refitting needs. For a step-by-step refitting guide, check here.
Prerequisites: - You have exported a mesh and imported it into Blender - You are able to read and comprehend instructions.
You can find the documentation about this under R&R: Refitting (step by step) -> #step-4-refitting.
This is the recommended method, as it is easiest, fastest, and has the least chance of wreaking havoc with things that you don't want to fix.
This page documents other techniques so you've heard about them. If you're new about this, do not read on here.
Before you start editing your mesh, you should delete its shapekeys. This is necessary for the Sculpt Mode to show your changes in real time, and you don't need them anymore after editing your mesh.
Some people have been told to delete the Armature modifier before sculpting. That's not necessary!
The obvious approach is to change your mesh by moving vertices. This process is covered in the r&r refitting guide.
The downside of the sculpt mode is that it can edit only the selected mesh. For a workaround, see here.
The Sculpt Mode is pretty much What You See Is What You Get.
The easiest tools for beginners are Grab, Elastic Deform, and Smooth
In the "Tool" panel (Toggle shortcut: N), you can optionally enable symmetry (blue on the picture below).
A useful shortcut to keep in mind is F, which will let you change the cursor size.
You can import a body mesh as a reference.
You will find the player's body under
base\characters\common\player_base_bodies\player_female_average\
base\characters\common\player_base_bodies\player_male_average\
You can hide those parts that you don't want to sculpt.
Use the Edit Mode (Shortcut: Tab) to make a selection. Then, leave only those parts visible that you want to affect before switching back to Sculpt Mode.
Useful hotkeys:
H: Hide selection
Shift+H: Hide everything but selected
Alt+H: Unhide everything
You can also use the Lattice Deform Method below to selectively edit only part of the mesh.
You can use Blender's mask brush and function in Sculpt Mode to mask the parts that you do not want to sculpt.
This method is a workaround that you can use when you have only 2-3 meshes. You can fuse all meshes together, then split them apart after you're done.
Pros:
Relatively simple, and good to make small, simple changes to 2-3 meshes.
Allows symmetrical sculpting.
Cons:
Destructive editing
Can be a little time-consuming because you have to join, separate, and rename meshes every time you want to import it back to WolvenKit.
Let's assume that we're sculpting Rogue's pants. For surface material assignment, the seams are an own submesh — the pants (submesh_00) are coloured via multilayered
material, while the seams have a variation of metal_base
with coloured stitches.
We don't want to edit those separately, so we'll fuse them into one mesh, sculpt everything in one go, and then split them apart again.
To allow splitting, we need to make sure that every submesh has its own unique material. Select the mesh, switch to the "Material Properties tab on the right", and duplicate the assigned material:
Before the next step, make sure to remember the submesh numbers, because you need to restore them later. Changes in the submesh order will mess up material assignment in WolvenKit.
You can create a copy by duplicating the meshes (shortcut: Shift+D)
Now, join the meshes together — hold CTRL, select the main mesh, and join the meshes together (shortcut: Ctrl+J)
You now have a single mesh which you can sculpt to your heart's content.
Once you're done, you can separate the meshes again. Switch to Edit Mode, then select something that belongs to the former submesh. From the menu, pick the following entry:
Select -> Select Similar (Hotkey: Shift+G) -> Material
Then, split off the selection into its own submesh again:
Right-Click -> Separate (Hotkey: P) -> Selection
Make sure to restore the original mesh names before exporting your mesh from Blender.
After importing back into WolvenKit, remember to delete the GarmentSupport parameters from your mesh, as they will now produce string cheese.
The Lattice modifier deforms the base object according to the shape of a Lattice object.
Pros:
Can edit as many meshes at once as you want, no matter what armature they are parented to.
100% Non-destructive sculpting.
No need to separate, rejoin, and rename meshes after sculpting is done.
Good for making small, local changes to multiple meshes.
Edits can be stacked on top of each other by stacking modifiers.
Does not have to go through all the steps like Material Separation Method each time you want to import to WolvenKit.
Cons:
Trying to select desired vertices of the lattice can be difficult.
Can be hard to restrict edits to areas not covered by the lattice, thus possibly making unwanted edits.
Does not allow symmetrical sculpting.
Begins by adding a Lattice to the scene. In Object mode, go to the menu Add > Lattice
. Reshape the lattice so that it covers the part of the base meshes that you want to edit or all the meshes that you want to edit.
Go to the Object Data Properties panel, and increase the resolution as you wish. for most edits, 6-10 levels are fine.
Now select your base mesh(es). Add the Lattice modifier to the mesh then choose your Lattice in the Object option.
To apply this modifier to all base meshes, while still selecting this mesh, hold Ctrl
then select all the meshes that you want to edit, or hold Shift
then drag to select all the meshes that you want to edit. Click the drop-down menu arrow in the modifier, then click Copy to Selected
.
Go to edit mode, select vertices and start moving them around to edit your base mesh(es).
When you are done, you do not have to apply this modifier. As long as your export settings are correct, and you remember to delete all Shape keys, the changes will be applied automatically upon export. That's why this method will make all the changes non-destructive and you can revert to vanilla by toggling the modifier.
You can stack modifiers to make desired changes to your mesh(es).
The Mesh Deform modifier allows an arbitrary mesh (of any closed shape) to act as a deformation cage around another mesh. This method resolves many problems of the previous methods.
Pros:
Can edit as many meshes at once as you want, no matter what armature they are parented to.
100% Non-destructive sculpting.
No need to separate, rejoin, and rename meshes after sculpting is done.
Easier control than editing vertices of a lattice.
Allow symmetrical sculpting.
Edits can be stacked on top of each other by stacking modifiers.
Cons:
If you have a lot of meshes and the vertex count is relatively high, the waiting time to bind can be just a little long.
In this example, I will work with the head mesh (1 submesh) and the body mesh (10 submeshes).
In Object Mode, duplicate everything by right-clicking on the collections and hit Duplicate Collection
.
Still in Object Mode, select all the newly duplicated meshes and join them together by using hotkey Ctrl + J
or navigate to the menu > Object > Join
.
This mesh will be our cage mesh, we will use it as a proxy to make edits to the main meshes. Now we have to prepare it so that it works well as a cage.
Add a Remesh modifier to this mesh, use Voxel setting. Decrease the Voxel Size until the human shape is fairly recognizable but the mesh is not too high poly. Also, enable the Smooth Shading option. Below is my setting for this model.
Now, apply the modifier by hovering the mouse above it and using the hotkey Ctrl + A
, or click on the drop-down menu arrow and hit Apply.
Now we need to "bloat" the cage mesh so that it covers the whole base meshes. We will make use of the Shrink/Fatten function. You should toggle visible the base meshes along with this cage so it's easier to see. Switch to Edit Mode, and select all vertices by using the hotkey Ctrl + A
. Hold Alt + S
, then drag Left Mouse button
to fatten the whole mesh. For finer control, also hold Shift
while dragging it. Make sure that it completely engulfs the base meshes.
Switch back to Object Mode, select all the base meshes instead. Add a Mesh Deform modifier, then select the cage mesh in the Object option. Then select the drop-down menu arrow, click Copy to Selected to apply the same modifier to all base meshes. Then go to each meshes and click the button Bind to bind them to the cage. Depending on the complexity and vertices count, it can take anywhere from 1 to 30 seconds to finish binding.
You have finished binding all meshes to the base meshes. Now, all the editing you made to the cage mesh in Sculpting and Editing Mode will be reflected on the base meshes.
To see the edits easier, select the cage mesh, then go to Object properties. Scroll down to the Viewport Display setting menu, in the Display As option, chose Wire. This will render the cage as wire and you can see the vanilla meshes below as you edit.
Hint: to make symmetrical changes, enable the symmetrical editing in Sculpt Mode. If your cage doesn't cover the whole base meshes, you can add a Mirror Modifier to the cage mesh. It will be reflected on your base meshes as well.
After finishing sculpting, you don't have to apply the modifier to the base meshes. As long as your export settings are correct, and you remember to delete all Shape keys, the changes will be applied automatically upon export. That's why this method will make all the changes non-destructive and you can revert to vanilla by toggling the modifier.
You can cleverly combine these methods to make changes to your mesh as you desire.
If your problem isn't listed here, check Troubleshooting your mesh edits.
You need to delete the shapekeys.
How to replace an in-game item with your custom mesh
This page will give you information on how to get a 3d object into Cyberpunk.
You can find other relevant guides scattered across this wiki, for example
Wolvenkit >= 8.11.1
Blender >= 3.6 (or 4)
As this guide will focus on equipment items, you can skip Step 3 and 4 completely.
You will delete fewer meshes if you read all of the sections below before starting.
Begin by picking a game mash from the right slot. If you're porting shoes, pick a shoe mesh, if you're porting glasses, pick a glasses mesh – you get it.
For the sake of future you, pick an in-game item that is as close to your new garment as possible. If you're porting boots, take boots and not slippers. If you're using a baggy sweater, pick one of those or a jacket rather than a skin-tight t-shirt.
Make sure to use an item with the correct armature. You can identify them by prefix in the path:
Search for something like this:
For torso items, you can add t1
for inner torso items (tight-fitting) or t2
for outer torso items (worn above t1).
If your mesh won't export from Wolvenkit, try unchecking the following box(es) in the export settings (by unchecking the boxes):
This part won't be documented here. If you don't have an entry in your import menu, hit up Google - get that thing into Blender somehow.
The mesh count in Blender corresponds to the submesh/chunk count in Wolvenkit. In Cyberpunk, we have one submesh per material that we want to use.
Select all meshes but one by shift-clicking them in the Outliner at the topright of your viewport
Select the last mesh
Join the meshes together (Shortcut: Ctrl+J
)
This section will show you how to get the following end result:
one or more mesh(es) with names from submesh_00_LOD_1
, consecutively numbered
parented to the right armature
By the end of your section, you should have something like this:
No matter which strategy you use, we need to get the prerequisites done first. We need an original Cyberpunk armature.
Clean up any residual modifiers and transforms (we don't want them):
If your mesh has an armature modifier with a non-Cyberpunk armature, delete it
(click on the x
in the modifier panel)
If your mesh is parented to anything that is not a Cyberpunk armature, unparent it:
Select the mesh(es)
Select Unparent (Hotkey: Alt+P
)
Select the second option "Clear Parent and Keep Transforms"
We start by deleting the original's vertex data.
Switch to Edit Mode (Hotkey: Tab
)
Make sure that all vertices are selected (Hotkey: A
)
Delete all vertices (Hotkey: x
, option: Vertices)
Switch back to Object Mode (Hotkey: Tab
)
We'll merge our new meshes into the empty containers now:
Click on your new mesh
Click on the empty original mesh in the Outliner (yes, order matters)
Join them (Hotkey: Ctrl+J
)
Repeat the same for all meshes that you want to import to Cyberpunk.
If you need more submeshes, simply duplicate an existing one (Hotkey: Ctrl+D
, ESC
) and change its name by incrementing the number. Make sure it still ends in LOD_1
, not in LOD_2
— that will tell the game it's low-poly, and cause it to be hidden until you're further away.
That's it. All your meshes are parented to the armature now.
We can simply parent the meshes to our existing armature:
Click on your mesh
Click on the Armature object in the Outliner
Select Parent (Hotkey: Ctrl+P
)
Select "Armature Deform"
Make sure to rename your mesh: Wolvenkit doesn't know what to do with meshes that aren't part of the sequence starting at submesh_00_LOD_1
. (Blender's .000 suffixes will be ignored)
You can delete the original meshes, or you keep them for Step 4.
Start by deleting all vertex groups from your new mesh, as we will now replace these and don't want anything funky to stick around to destroy our re-import:
Nobody likes weight painting.
This is what you need to do if your mesh moves unevenly or if parts of it are clipping through the body although things are fitting correctly.
If everything worked, here are a few more guides that you might want to look into:
How everything is connected, or: why your edited mesh moves weirdly
The connection between a mesh and a rig is made via vertex groups. Any number of vertices can be assigned to a group, which is then matched to a rig's bone via name.
How much every bone influences the vertices is determined by vertex weight, which can be altered in Blender's Weight Paint perspective:
Vertex weights are assigned for every vertex group, and each vertex will move on the basis of the sum of all its weights.
Published January 29 2023 by @manavortex | Edited by Na Last documented edit: January 09 2024 by
written by , published on Oct. 14 2023
>= 1.5.0
A , so that you can pack your mod
To bring 3d data into Cyberpunk, Wolvenkit needs a .mesh file to import into. .
For the purpose of this guide, it doesn't matter if you are trying to, creating or . You will overwrite an existing in-game mesh, the file path doesn't matter.
If you are , you use a mesh from the template project or grab any static mesh from the game.
Do not take equipment item or weapon meshes — those include a bunch of extra data that you don't need (the ). You don't need it, and it can have side effects.
If you want V to wear the item that you're currently porting, it needs to move with the player. For that, you need . This guide will show you how to acquire one.
The default fallback mesh that people use in this case is the .
You can use the in the to find meshes.
body gender | Player | NPC |
---|
For where to export a mesh, see
For how to export a mesh, see
Once you are done, you can find the exported glb in your project's raw folder (see or for details).
If you don't know what that means, ignore the information for now - but few meshes use more than five. The current maximum is the player base body with a total count of ten submeshes per , so to be on the safe side, we need to stay below that.
If you want to get fancy, check out in the guide about ported items and Cyberpunk materials. Otherwise:
There are two strategies that you can use. Personally, I use , since it will retain most of the original mesh's properties.
Import the result of Step 1 into Blender (see the 's documentation about )
If you are doing this, you can skip.
In , select all of the original meshes.
If you are doing this, you can skip .
You now need to transfer the weights from your original game mesh. If you deleted or overwrote the armature's original meshes during , you can simply import it again for a second copy.
The has a function to. For the sake of completeness, the box below contains the full manual process, but we recommend using the plugin's Mesh Tool panel to do this.
This is where you pray that you don't have to do this (and I pray that nobody will have to actually write this section), because weight painting sucks. you can find some general information on .
See the 's documentation about
See the wiki about
… or maybe not. Maybe you should try now.
will teach you how to refit for a certain body mod
will walk you through the steps of adding your mesh as a new piece of equipment
will tell you more about Cyberpunk's material system
For a documentation of the import/export options in Wolvenkit, check .
For Simarillius's Blender script to merge several armatures, check .
Guides on how to transfer weights between rigs: , ,
To preview the deform in Blender, you can select the mesh's parent armature and enter the "Pose Mode". There, you can either apply an , or select individual bones and rotate/move them. The Armature modifier will morph your mesh according to the pose, letting you spot errors much faster than trying to debug them in-game.
You can see a video of the process (courtesy of Vesna).
male rigged |
|
|
female rigged |
|
|
What is Garment Support and how does it work?
This page will teach you how garmentSupport works – the system that Cyberpunk2077 uses to tuck pants into boots and shirts under jackets. It contains theory, which you don't need to understand to use the system.
Credit goes to psiberx (discord post with initial explanation of the algorithm), island dancer for providing screenshots and know-how, and Auska for making morphtarget/garmentSupport import able in Wolvenkit.
If you want to create garment support, check Garment support from scratch
If you want to use garment support in an existing mod, you only need to use #component-prefixes
If your garment support is shrinking too far, check the section for #painting-garment-support-in-blender
If you have other problems, see #troubleshooting-garment-support at the end of the page.
The engine morphs garments to avoid clipping — for example, if you equip a pair of boots and V's jeans no longer cover the shoes, but get tucked under.
This process is accomplished via 'parameters' on the mesh:
Garment support will be applied based on garmentScore. For this, the prefix of the component name will be considered (components are named in your .app or .ent file's component array).
A high garment score means that the item is "on top", squishing anything worn "below". (See #the-algorithm for details.)
The prefixes are as follows:
TL;DR: High garment score means "on top", items below will get squished.
Components with the same prefix in the same .ent file will not squish each other, e.g. l1_stockings
and l1_pants will not deform each other, but they will deform s1_socks
The game calculates the garment score by checking the prefix of component names, where the one with the lowest prefix is the innermost:
After considering the component name, the game will consider the tags in the .ent's visualTagSchema
:
An example for t0_000_pma_base__full
(the default body component, torso+legs):
based on experimental research by revenantFun
Make sure that you have the parameters _GarmentSupportWeight
, _GarmentSupportCap
and Col
, and that all of them are in the format Face Corner > Byte Color
_GarmentSupportWeight
: Vertex paint it red (RGB 1, 0, 0)
_GarmentSupportCap
: Vertex paint it black (RGB 0, 0, 0) if it isn't
Col
: Vertex paint it black (RGB 0, 0, 0) if it isn't
You're done!
In a given mesh, garment support is handled by two color attributes: _GarmentSupportWeight and
_GarmentSupportCap
. In Blender, these are found in the Data
panel under Color Attributes
, together with the third attribute, Col
.
For exporting, all three of these must be in the format Face Corner > Byte Color
Here's how it looks like:
If you are editing vanilla items, you may find parameters of the type Vertex -> Byte Color
with their names in ALL CAPS, such as _GARMENTSUPPORTWEIGHT
and _GARMENTSUPPORTCAP
. Delete them by selecting them and clicking the minus icon:
It's crucial to repeat this process for every submesh in your garment, or your attributes will not get written correctly on export.
If all you're doing is trying to preserve existing garment support before doing some light editing or refits on vanilla garments, you can stop right here!
If you're making a brand new item and making your garment support from scratch, however, you'll need to keep reading to find out how these parameters should look.
Garment support color attributes are edited in Vertex Paint
mode in the viewport:
_GarmentSupportWeight
This attribute affects how the mesh behaves when layered with other garments:
Simple base game clothing will have a flat red layer. If you have a flat black layer, you may want to paint it red, as this will deform more than you might want.
_GarmentSupportCap
_GarmentSupportCap
determines stopping points for the deformation effects of garment support. Like _GarmentSupportWeight
, it is painted only with red and black.
With vanilla items, you will see red GarmentSupportCap on areas that will either
directly intersect with the body (the ends of sleeves and legs, the bottom of a shirt, the opening of a turtleneck...)
sit right above something that shouldn't be deformed (the player body, or a tight-fitting shirt, or the lapels of an open jacket)
The cap provides a shrinking limit, so without GarmentSupportCap, every part of your mesh will apply shrinking/tucking on the meshes layered "below".
Often, this is completely okay and your _GarmentSupportCap
layer can be flat black. Otherwise, you need to paint red those parts which either cut straight through the body or butt right up against other items.
If this step is skipped, you can have unexpected clipping, but nothing will break. If your mesh seems like it's being too aggressive when you layer it over other things, and leaving holes in whatever you're trying to layer under it, try painting more of the inside faces red.
The simplest way to add functioning garment support to your custom item is to have a flat red _GarmentSupportWeight
attribute, a flat black _GarmentSupportCap
attribute, and a flat black Col
attribute. Your mesh will export and, assuming you have the proper shapekeys, will morph in (more or less) the way you'd expect! The next page will outline this process step-by-step.
Every submesh of your garment must have these three attributes in order for garment support to function correctly - even submeshes that contain non-deformable things like accessories, buckles, chains, belts, etc.
Check #painting-garment-support-in-blender — paint it red, baby!
It's not doing that to spite you. Most likely, you have a non-unique component ID, and the game can't tell the two items apart. Here's how to resolve that:
If that doesn't work, you still have the option to re-create Garment support from scratch in Blender
If you're fed up with this shit and just want your item to stop cosplaying as exploding pixel cloud, you can use #option-2-guaranteed-to-work-delete-garmentsupport-from-the-mesh.
This wil prevent your garment from shrinking under other, "larger" garments, and practically guarantee that it clips.
When you can't import, or your imported mesh looks weird
For a guide on exporting and importing meshes, check WKit Blender Plugin: Import/Export
If you don't know how to begin editing, check Refitting: Mesh sculpting techniques or R&R: Refitting (step by step)
We need to troubleshoot your import.
Yes: The problem is somewhere else, the mesh import works fine.
No: #is-there-an-error-message-in-the-console
Yes: Here's where your problem is. Make the error message go away by checking the rest of this guide.
No: #do-you-have-extra-shapekeys
In Blender, check your shapekey section. It should look like the green box (or be empty).
If it does not, you need to apply any extra shapekeys, because Wolvenkit will ignore them on reimport. Expand the box below, or check here to find out how.
You get an error message like this:
Message: One or more Geometry in provided GLTF doesn't contain Tangents data. Tangents must be included within glTF files.
Quick, easy, recommended: the plugin will tell you exactly what's broken and how to fix it. Download it here.
Alternatively, you can check by hand:
The neutral bone is created by the glb export plugin when there are vertex groups without a parent bone. WolvenKit will not let you import if there is a mismatch.
Your armature in Blender needs to have a bone for every vertex group in the submesh, and there must not be vertices with no vertex group assigned.
You then need to import over an already-existing .mesh file which supports all those bones.
The following two scripts help you finding and/or fixing the problem. Switch to the Blender Scripting perspective and create a new, blank text file. Then, toggle the Blender system console to see their output (Blender: Window -> Toggle System Console)
Missing bones
Optional: To find which bones you're missing, you can use this script, which will print their names to console. You can also skip this step and try the troubleshooting below.
Vertices without weights
You can use the Wolvenkit Blender IO Suite's #mesh-tools to Group Ungroup Verts
— if you're lucky, that will solve the problem.
You can find a Python script on mana's github that will drop unused bones and vertex groups. Run it in Blender's Scripting Perspective with your armature
You can import the mesh with Noesis, which will not do any of these checks. For that, you need to import/export via .fbx.
Since noesis expects differently-named submeshes under the root armature, you'll want to export the mesh via noesis, join your changed meshes on those under Noesis_Root, and import it again. Caution: You'll have to rotate your armature in this case.
While this will get your mesh into the game, the missing bones mean that parts of it won't move the way you expect it!
The armature from the following mesh has a lot of bones and will often resolve most of your issues:
To create more submeshes, you can either
create more submeshes with the correct naming in Blender, e.g. submesh_01_LOD_1
, submesh_02_LOD_1
If you end up with missing bones,
It's time to play 3d puzzle and assemble bones from multiple sources. Unfortunately, there is no simple solution for this yet. You need to
find the bones that your armature is missing in other meshes
transfer them into your import target mesh (guide on xbae's page)
export all the extra meshes into Blender
merge their rigs, which you should do with the linked Python script
and finally reimport everything back into Cyberpunk.
WolvenKit will not import a mesh that has any kind of issues. Those include, but are not limited to:
non-flat faces
zero faces/edges
loose vertices/edges
There is no guarantee that any of the steps below will actually solve your problem.
In Edit Mode, you can find a few commands in the Mesh -> Clean Up menu:
Delete Loose
Split Non-Planar Faces
Split Concave Faces
Merge By Distance
If you select your whole mesh, Merge By Distance will merge the individual parts, obliterating the seams. To avoid that, make sure to do them one after another: - Select a vertex/edge/face in Edit Mode - hold down Ctrl Num+ to select everything connected - use Merge By Distance before proceeding to the next part of your mesh
Your last option is the 3d print tool to (hopefully) find out what is wrong with your mesh.
Fortunately, the tool is free, easy-to-use and already included in your Blender.
If you don't have a 3d print entry in the tools of your 3d viewport, you might need to enable the plugin in Blender's settings first.
Zero Edges: Those are bad, fix them (click on them, then press X and just delete them)
Non-Flat Faces: Those are even worse, as they can make the game crash. You need to split them up until they are flat, or investigate the surrounding edges/vertices to see what's going wrong here.
Zero Faces: Only fix if you have <100 of them — the tool doesn't always identify them correctly (the mesh analyzed above was h0_000_pwa_c__basehead
, which is absolutely fine).
make sure that you have exactly one UV map
check Face Orientation — most materials won't show backfaces (red). You can import submeshes with the suffix _doubled
to make WolvenKit generate them for you, like it does with hair.
When saving your mesh, check the console for errors. In version >= 8.9.0, a basic material validation is taking place. If you don't see any warnings, make sure that the resource paths in your mesh are correct and that you aren't loading invisible textures.
Do they show up in the Wolvenkit preview?
No: you probably forgot to select them when exporting from Blender. Make sure that you get them all into Wolvenkit.
Yes: There's either an issue with your material assignments or with your chunkmasks. Refer to the corresponding guides to learn how you can debug this.
Some meshes require an entAnimatedComponent along with the garment's component. Check here for details.
For example, you have moved something, but the change doesn't show in the game: this most often happens when you change things around in edit mode, since they are stored as object properties rather than applied immediately.
Select the object in edit mode
Press Ctrl+A
Select "All Transforms" to apply all transformations.
E.g. you've changed a shape, but now everything moves at an offset.
As stated in the importing/exporting guide, it is easy to fuck up the mesh's properties, and this is most likely what happened. The easiest way to "fix" this is to apply your shape deformation to the original object.
See #strategy-2-replacing-the-vertices on the Porting 3d objects to Cyberpunk page
If you have added the item via ArchiveXL or swapped out an in-game item with something that belongs in a different slot (e.g. a jacket on the head slot), you might have to fix the corresponding entity file.
Check the renderMask
attribute inside heder / renderChunkInfos / index
. For shadow meshes, there shouldn't be anything but MCF_RenderInShadows
.
The textures are most likely embedded. Here's how you can force your material to pull in external textures instead:
This section will tell you how to delete garment support. If you don't want that (you shouldn't! It's cool!), check the next section.
To check if it's this, equip only the edited item. If it breaks as soon as you put on another clothing item with garment supports, then the solution below applies.
Check the component's id in the mesh .ent
or .app
appearance's components
array:
If any given ID is equipped twice, it can break garment support in the way you're observing.
As of January 03 2023, we don't know how these are generated and can't tech the problem away in Wolvenkit. Your only choice here is to manually randomize your ID in a text editor by switching out single digits. Remember that the resulting ID needs to be an even number!
What are Dangle Bones, and how do they work?
Created by @eagul Published March 20 2023
This guide will teach you everything you need to know about dangle bones, focussing mostly on hair meshes. However, dangle bones can also be applied to any other mesh
Assumed skill level: - You are familiar with Wolvenkit and Blender. - You know what bones and weights are. - You are able to read and comprehend instructions.
Dangle bones are a 'chain' of linked bones which are used by the game engine to simulate physics (dangle). They're found mostly in hairs, but also in certain clothing items. For a mesh to have working dangle physics, corresponding .rig and .animgraph files are also needed The image below depicts how a dangle skeleton looks. The .animgraph will move the dangle bone chains, which are connected to the mesh using weights, which will then in turn animate the mesh.
The easiest way to add physics to a mesh that does not have them, is to transfer them from another mesh. If you are doing a hair port, prepare the (static) .mesh and textures first. 1) Locate a 'donor' mesh. It should have a similar mesh, and physics that you could also see working on your 'new' mesh. 2) Add both the donor mesh, together with it's .rig and .animgraph pair, and your new mesh to the project in wolvenkit. 3) Import both meshes to blender. 4) Using alt+P, clear the parent of the new mesh. Now select the new mesh, and then the armature of the donor mesh, and press ctrl+P, followed by Armature Deform with Empty Groups. 5) Select the donor mesh, and secondly the new mesh. Swap to weight paint mode. In the top-left cornet, press 'weights' and then 'transfer weights'. In the bottom-left corner, a small black window will appear. Click it. Set Vertex Mapping to nearest face interpolated, and source layers to 'by name' 6) Go into weight paint mode and manually clean up the weights, using the weight transfer as a reference. Optionally duplicate the mesh and move the copy to the side, so you keep an untouched reference. 7) Import it back into wolvenkit, and you're done!
1) Oftentimes, you can get away with editing a hair mesh, and not having to touch the physics at all, especially if the changes you are making are fairly small. 2) If you move the mesh away from the bones, it might move in unexpected ways. The further the mesh is from the bone, the more of a 'lever' effect will happen. This is particularly noticable when bones are rotating around an axis perpendicular to the one you moved the mesh away on. Usually small movements are fine and will not affect the dangles in a noticably bad way. If you do find yourself in a situation where you need to move the skeleton as well, check the 'Moving a Dangle Chain' section. 3) Check out UUH4V. It's an amazing resource that will allow you to load multiple hair meshes with each their own rig/anim pair simultanously. Keep in mind that you cannot have 2 of the same rig/anim pair loaded in the same hair slot simultanously, as this will cause unacceptable deforms. You need to merge any 2 meshes that use the same rig/anim pair in blender and import them as one .mesh.
Included is an image of what i mean by the leverage effect. I used a handy little trick here to make bones visible in-game. Overlay a simple mesh over each of the bones in blender and weight paint it completely red. Load the boxes instead of a hair mesh. Edit the material used by the mesh to make it better visible. I used plastic_red here. Congratulations, you can now clearly see what bones are doing in-game. Hiding the body mesh helps with visibility. Green circle includes the true location of the dangle bone chain. Meshes in the yellow circle are rigged to the same bones as those in the green circle. Bone 3 is invisible. Upon moving bone 3 to the right (by editing the .rig), bone/mesh 1 rotated slightly, making mesh 2 do a huge leap. If you were to load a hair mesh in the same location as indicated by the yellow circle, you would end up with horrible stretching and deformations, even without exxagerating the effect by moving bone 3.
Created by @eagul Published March 20 2023
This guide will go deep into detail about moving dangle bones. Still unknown: changing bone parenting, rotating bones, editing the animgraph physics, adding new mirrored dangle chains for better coverage. If anyone has done tests on any of these topics, please contact me.
Assumed skill level: - You understand what you are doing, and know why you need to move dangle bones - You are able to read and comprehend instructions.
Okay.... Let's get started. If you are doing physics stuff, and need to move the dangle bones to fix the leverage effect, or for any other reason, you are in the right place. I will be using my long hair dangles project for examples here. Read 'Leverage effect' section in 'Dangle Bones' page for the reasoning behind why this process is necessary. (Using a normal hair dangle skeleton is not an option because it is parented to the 'head' bone, which causes horrible clipping and unnatural movements when the head turns. It might be possible to change the parenting to spine3 bone, but i have yet to test. Even if it is possible, the process described below would still be usefull to move the chains into the right positions) You will need to do a couple things: 1) Get everything into blender. 2) Isolate the bones you need to move. Hide other bones in armature edit mode. 3) Duplicate the bones and move them to the desired position. 4) Edit the bone positions in both the .mesh and .rig, sometimes editing the collision hitboxes in the .animgraph will also be required. I would also recommend having a rigged and weight painted mesh ready, for testing purposes. I will explain each step of the process more in-detail below.
Usually, you can get the skeleton in it's real form into blender by using WithRig export on the mesh. However, if the .mesh contains bones that are not present in the .rig, you will need to use MultiMesh Export. You need to find a second (or even more) .rig file, so all the bones that are present in the mesh have a counterpart in the .rig. You then need to also add the meshes that correspond to the new .rigs and then export. Attached images show settings i used to export base\characters\garment\citizen_formal\torso\t1_072_shirt__netwatch\t1_072_ma_shirt__netwatch_dangle.mesh with rig, which i used for long hair dangles.
Open the .rig file in Wolvenkit. Under boneNames you can find which index corresponds to which bone. Expand boneTransforms. Locate the bones you want to move. Moving a bone in a chain will also move every bone that's parented to it (located lower than it in the chain). In the case of the image above, moving the bone selected in yellow, also moved the entire chain. In this case i moved bone 8 (selected in yellow) by 0.283076668 on the Y axis.
As you can see, the skeleton exploded. This is (to my understanding) caused by collision hitboxes on the spine bones. It will only happen if you have moved the dangle chain inside of those hitboxes. If this happens to your skeleton/mesh, follow these steps to fix it: 1) Open the .animgraph file in Wolvenkit. Expand the 'rootNode' array, and keep expanding untill you see collisionRoundedShape and then lower the roundedCornerRadius for each of the bones untill your skeleton no longer explodes. Here i set the value to 0, the animations work fine, but a correctly set value might reduce clipping in some poses.
Notice how editing the bone positions in the .rig also deformed/moved the mesh in-game. At least it's dangling nicely now, and it no longer explodes :copium:
The .mesh also contains bone matrices. To my understanding, these are used to map the bones from the .rig to the vertices. You will need to move the bones in the .mesh to match the changes You did to the .rig skeleton, and this will fix the mesh deform. In this case, I'm editing bones 79-83. The goal is to move each of them by -0.283076668 on the Y axis. Open the .mesh in Wolvenkit and navigate to boneRigMatrices.
Notice how the bottom row of the inverse matrix corresponds to the coordinates of the bone, which you can see in Blender.
Next, copy the new Y coordinate from the bone you duplicated and moved.
After that, return to the calculator, and press 'Insert in B', and then replace the matrix entry corresponding to the Y position of the bone with the new coordinate.
Then, press 'inverse'
Next, press the 3 small lines below the output, click on Show LaTeX, and copy the top row entries back into wolvenkit.
And now repeat all of those steps for each of your bones... enjoy... After that, you should be finished!
Adding garment support to a mesh that doesn't have it
This guide uses the following versions:
This guide assumes that you know your way around in Wolvenkit. If you don't and you want to mess with this, kudos — I salute your frustration tolerance. In this case, the wiki's search function will be your new best friend.
As a preparation for our garment support, we need a base that we'll shrinkwrap to. For this guide, we'll be using the full player body in a single mesh.
You need the following files:
in the viewport, click anywhere to deselect everything
press A
to select everything visible again
Shift-click on something (e.g. the head) to deselect it
shift-click again to re-select it (you need a most recent selection)
press Ctrl+J
to join all those meshes together
Optional: Clean up
In the outliner on the right, delete all empty collections
Double-click on your mesh and rename it to something, e.g. body
You should be looking at something like this:
This is the base that your items will shrink to, thus not-clipping. Neat, isn't it?
You only need this if you're layering garment support — for example, shrinking a custom-made decal under a jacket. Don't do this with the base body, it will shrink on its own to stay underneath the clothes!
If you're using a custom mesh as the base, you need two prerequisites:
Join everything, so that you have only one mesh. This mesh must cover everything that yours can potentially shrink to - if you fit the Netrunnner suit without the head mesh as part of the body, the collar will clip into the neck when you're wearing a coat
You need to activate garment support on the mesh. You do this by switching to the Data tab and setting its Value
to 1:
Import a mesh that needs garment support. In Object mode, select it by clicking on it so that it has a yellow outline like the body in the picture above, and switch to the Data
tab on the right:
The Shape Keys
dropdown should be empty. (Otherwise, hit the -
button until it is).
Click on the +
button to create a shape key with the name Basis
. This is the garment's original shape and will tell Cyberpunk how it looks when it's not squished.
Repeat this process for every submesh (submesh_01_LOD_1
and submesh_02_LOD_1
on the screenshot above)
Switch to the Modifiers
tab (the blue wrench icon, it's active in the first screenshot)
Add a shrinkwrap
modifier
Target it to the mesh from the previous step (e.g. body
):
optional: Add a small offset
(e.g. 0.001
) to make it not-clip. If the mesh you're shrinking to has garment support and you haven't enabled it, this isn't necessary.
You will now see that the garment has shrunk down to the body's dimensions — this is how the game avoids clipping.
Apply the modifier as shapekey:
You will now see that the garment un-shrinks itself: that is because the shapekey isn't active.
Switch to the Data
tab again (the green triangle). There is a new shapekey now; it's called Shrinkwrap
.
If you want to see it in action, set its Value
to 1.
Rename it to GarmentSupport
(capital G and S, no spaces — double-click on the name):
That's it, your mesh has now garment support. Rinse and repeat the process with the other submeshes, then export everything back.
Try re-doing the shrinkwrap, but with a higher offset instead. Try something like 0.002 or so, whatever works for you.
This page contains a theory part and a guide.
Open Blender and create a new General file.
Optional, but recommended: delete everything in the file. In the scene collection in the top right, right click on “Collection” and click “Delete Hierarchy,” as we don't need these.
Press File → Import → Cyberpunk GLTF and browse to your .glb file.
Import the file (default settings).
Directly after importing the mesh, Blender will be in Object Mode.
Your item should appear in the 3D viewport now. Use the camera controls to the left of the scene collection (or mouse/keyboard shortcuts if you're familiar with them) to get a better view of the item.
In the scene collection, find the newly-added collection and expand the armature
You will see the item's meshes (which correspond to Wolvenkit's submeshes as defined by name).
My jacket only has one submesh. Your item might have more.
In the scene collection, select all the submeshes of your item
click on the first, then shift-click on the last
Now, select the parts of your mesh that you want to split off (or delete). If you have never done that, read the section below before starting, as it can save you a lot of time.
Selecting with the shift
key held down will let you add to a selection. Holding the ctrl
key will let you subtract from it.
There are four select tools (hotkey to cycle them: w
), which you can select in the toolbar on the left by holding the first panel.
You can turn on x-ray mode (hotkey: alt+z
) to select things on both sides of the mesh
Keys on your numpad will set the cameera to e.g. profile or top view. Try around!
Switch to Edit Mode (keyboard shortcut: Tab
)
Click in the 3D viewport next to your mesh to deselect everything. Use the camera controls to get close to what you want to select. In my example, it's going to be the entire collar.
Start by selecting a single vertex on the part that you want to get rid of.
Press Ctrl + L (select linked)
If you're lucky, it will select what you want. If not, undo (shortcut: Ctrl+Z
) and select things by hand.
TODO: This needs a screenshot or two
Split
your selection (shortcut: P
)
You will now have (a) new mesh(es) in Blender. Those are your future new submeshes
Each will be named original_mesh_name.001
Rename each of them, following the naming schema from the original meshes:
The value for index corresponds to your submesh index in Wolvenkit, so this is how you can re-order them.
The number after LOD determines the level of detail of your mesh. By default, you will want to stick to 0.
At any point, you can press x
and select delete vertices
to remove parts of your mesh. In this example, we will delete the entire collar:
After your mesh is edited to your satisfaction:
If you're still in Edit mode: change back to object mode (shortcut: tab
)
The meshes should still be selected.
Hit File → Export → Cyberpunk GLB
Colour | RGB value | Explanation |
---|---|---|
Colour | RGB value | Explanation |
---|---|---|
Make sure that your mesh has the property checked (this should be default by now).
Check your export settings and make sure that you have the correct box checked upon export:
If the error persists, check that each of your submeshes has an UV map: If not, you have to create one (and probably UV unwrap your mesh).
Try using the Netrunner body as a base for import. You can use Wolvenkit's feature for this.
Try the import setting
Import the original object into Blender, without any of your changes. If you have to, reexport the working file from Wolvenkit.
On the .glb import setting, check the "" box.
Make sure to with garment support enabled. If that doesn't do the trick, you can try re-creating the garment support shapekeys in Blender.
Next, open and copy paste each of the entries of the bone matrix into the calculator. Then press inverse.
Created on: 29. 12. 2023 by
Wolvenkit >= 8.11.2 ( | )
Wolvenkit Blender IO Suite >=
Blender (3.6 should work as well)
You should know what , because it won't be explained here.
a
one or more
all those meshes to Blender, then join them all into a single mesh:
You still need to use for garmentSupport to become active. If that wasn't it, check your shapekey names for typos or trailing spaces.
The guide section of this page has been created in the context of : . It will show you how to split a mesh into submeshes (or how to alternatively delete these parts of the mesh).
If you run into problems, check , or consult the .
For more information about this see and the section
To learn how you can use them for appearance management, check
For more information on splitting meshes, you can .
You have the and a compatible version of Blender installed.
Once you have made your selection, decide how to proceed: either by or by .
After you have renamed all meshes, proceed to .
This will irreversibly remove the corresponding geometry from the mesh. If you don't want that, see instead.
Overwrite the .glb file that you imported, so that you can import it with Wolvenkit. If you are considering to do something else instead:
Now, you can .
h0_
t0_
s0_
l0_ ...
Any component with a 0 in its prefix will be treated like a body mesh (no deform/squishing of any meshes with x0_ prefixes across .ent files)
h1_
Head inner (mask, sunglasses)
h2_
Head outer (helmet, bandana)
t1_
Torso inner (shirts)
t2_
Torso outer (jackets, coats...)
s1_
Shoes
l1_
legs (pants that aren't leggins)
Black
0, 0, 0
heavy deform, lots of squishing (default behaviour)
Red
1, 0, 0
light deform, no squishing
Black
0, 0, 0
no garment cap
Red
1, 0, 0
limited GS influence on the meshes below (more red = less squishing). The garment itself will serve as a delimiter.
How to export and import meshes (WolvenKit <=> Blender)
Created by @manavortex Published November 05 2022
This guide will show you how to - export meshes from the game for use in other projects - import those meshes back into WolvenKit
As of November 2023, the recommended workflow is using the Wolvenkit Blender IO Suite. Check its import/export documentation under WKit Blender Plugin: Import/Export.
It will not show you anything else. For other use cases like exporting characters, please check #wait-this-isnt-what-i-want
Assumed skill level: You are able to read ;)
Would you rather…
Import/Export to fbx with Noesis?
Use the Wolvenkit Blender Plugin?
Read more about Wolvenkit's Import/Export tool?
Replace meshes without editing them?
Export a whole character or an animated character?
In the dawn of modding, Wolvenkit just plain couldn't import or export .mesh files and you had to use Noesis. In 2023, you won't need that anymore. We're keeping the documentation for the sake of completeness and downward compatibility, but in general, you don't need it anymore.
This page is archived. Please scroll to the top for links to more recent information.
Before you start editing, a warning:
It is easy to break a mesh beyond the point of repair. Make frequent back-ups, and continuously test if your altered mesh still imports and displays in WolvenKit, especially when editing vertices!
If the export fails, try unchecking the following properties in the export settings (you have to do this for each individual mesh)
Export Materials
Export Garment Support
You should now havemeshName.glb
in your WKit project's raw
directory.
Wolvenkit > 8.8 will by default export with materials for the Wolvenkit Blender IO Suite.
Assuming you are exporting t2_002_pwa_vest__puffy.mesh
, WolvenKit will do the following:
Path of mesh: <yourModDir>\source\
archive
\base\characters\garment\player_equipment\torso\t2_002_vest__puffy\t2_002_pwa_vest__puffy.mesh
Path of glb: <yourModDir>\source\
raw
\base\characters\garment\player_equipment\torso\t2_002_vest__puffy\t2_002_pwa_vest__puffy.glb
Some meshes (such as eyelashes and hair) are two-sided. See here for details on how Wolvenkit handles that.
Please follow the Wolvenkit Blender IO Suite's instructions for#exporting-from-blender.
For historical reasons, the box below holds the minimum steps to export via the vanilla Blender plugin. You shouldn't want to do that.
This page is archived. Please scroll to the top for links to more recent information.
If you are following a guide with pre-made resources and it tells you to import via Noesis, you'll want to follow the advice, as the elements in the exported structure will have different names.
Alternatively, you can run this script on your blend file, which will automatically fix that for you.
In Blender, you should have overwritten your previously exported glb. With WKit's Import/Export tool, you can now simply Import
it back in.
WolvenKit will map any *.glb file under raw
to the mesh with the same name under source
.
Example:
<yourModDir>\archive\raw\base\characters\garment\player_equipment\torso\t2_002_vest__puffy\t2_002_pwa_vest__puffy.glb
will be imported over
<yourModDir>\archive\source\base\characters\garment\player_equipment\torso\t2_002_vest__puffy\t2_002_pwa_vest__puffy.mesh
WolvenKit refuses to import if the target mesh doesn't support all bones in the glb or if your mesh's topology became corrupted. If that's the case, check the troubleshooting page.
Normally, a mesh's backfaces are invisible/transparent - you aren't supposed to see a mesh from below, so it doesn't matter. But some, like hair and eyelashes, are different, and need to be doubled.
When importing via Noesis, you need to do this by hand: duplicate all the vertices in the mesh, and flip the normals. When importing via WolvenKit, it will automagically do that for you if a mesh name ends with _doubled.
The suffix also indicates that Wolvenkit de-duplicated a mesh on export!
If your mesh won't export from Wolvenkit, try exporting it without materials by unchecking the box.
For a list of troubleshooting steps, check the corresponding wiki page.
3ds Max Workflow for Cyberpunk 2077
- Unbundle the game files with WolvenKit.CLI (aka CP77Tools) - Install Noesis and rename Noesis64.exe to Noesis.exe (The original noesis.exe is 32-bit and the Noesis Plugin "fmt_CP77mesh.py" needs 64-bit) - Place "fmt_CP77mesh.py" in "noesis\plugins\python" copy "oo2ext_7_win64.dll" from "Cyberpunk 2077\bin\x64" and place it in the same folder as "fmt_CP77mesh.py" The plugin has some customization option if you open it in a text editor. Recommended Settings are:
- Next place "CP77_NOESIS_CMD.ms" in "C:\Program Files\Autodesk\3ds Max 20XX\scripts" - Open "CP77_NOESIS_CMD.ms" in a text editor and set your Noesis.exe path.
Run the MaxScript from Scripting > Run Script...
Click on "Import to Scene" and select the .mesh file you want to edit. Your custom settings in "fmt_CP77mesh.py" will effect the imported mesh. FBX Settings for Import:
MaxScript Settings for Export:
FBX Settings for Export:
Tool | Tool version |
---|---|
Select your mesh in Wolvenkit: and click Export/Process Selected
, or simply use Export/Process All.
- 3ds Max 2014-2022 - - -
\
**When exporting your mesh the plugin will ask you to select a mesh to export it over, in most cases you should select the original mesh.
>= 8.8.0 (8.7.0 works, but has a slightly different UI)
>= 3.1 stable
>= 1.1.0
How to import/export meshes with Noesis
Noesis is an alternative to exporting with WolvenKit. There are legitimate use cases for why you would want this. If you don't know them, you probably don't.
Given that you're still reading this, you probably have a reason to use Noesis, so here we go.
Navigate the Noesis browser to your file on the disk (you can right-click on the mesh in Wolvenkit and select "Open in File Explorer
")
Right-click it in the Noesis Browser and select "Export"
Export with default settings:
Done. You can now import the fbx to Blender.
Simply export as fbx, Blender's standard settings are fine for Noesis.
Noesis is an alternative to importing with WolvenKit.
Find your fbx in the Noesis browser
Right-click it and select "Export"
Set the Main output type
to .mesh - CyberPunk 2077 mesh [PC]
A dialogue asks you for a file to overwrite. Make sure that it has your mesh!
Noesis-split meshes are essentially how Noesis copes with higher vertex counts. It will automatically divide up your submeshes into smaller parts, which is why Noesis will often display there being more meshes than intended.
This is caused by the vertex count being too high, and will often result in the applicable submeshes not converting with the rest of the mesh, resulting in those submeshes being non-existent in the .mesh file. The solution is to simply reduce the number of vertices in the given submesh with the goal being to get the count lower than 65,000 vertices on the given submesh.
The best way to tell how many vertices a given mesh has is to open the "Viewport Overlays" drop-down menu and select "Statistics". This will allow for data on the meshes within the .blend. To narrow this down to a specific submesh, open edit mode with that submesh as active and "select all" (CTRL + A) and you will see the vertex count for that submesh.
Once you know how many vertices you have, use either "Decimate Geometry" or "Merge By Distance" to simplify the topography of the mesh, or to merge two or more vertices that are a given distance apart from one another into one.
Once this has been done, export from blender and try the conversion again.
If this doesn't quite do the trick, convert the fbx to fbx (just leave the output type set to fbx) and enter "-fbxmeshmerge" in the advanced options text box before clicking export. (It is recommended that you set an output location when doing this so as to avoid accidentally overwriting the original mesh)
This often accompanies the "Noesis-split meshes" warning. A common cause for this is the use of Blender's "duplication" feature. To solve it, follow the steps above for "Noesis-split meshes" then import the resulting mesh back in to blender, and you should see that you have several blank "Objects" that came in along with your mesh. Delete those, export back out of blender, convert the fbx to fbx, then import the result into blender and repeat if needed.
Following the deletion of these Objects, you may notice deformations in the submesh/submeshes, if this is the case, replace the armature (and update the armature modifier) with a new one and export again.
There are a few differences between Noesis and WolvenKit when it comes to exporting your meshes:
Noesis is outdated. Go import/export .
5000 years ago on the slopes of Mount Doom, mods were created with nothing but pickaxes, home-spun hemp, and hex editing. Older guides will refer to Noesis as the way to go — but Wolvenkit has come a long way since then. The import/export is reliable and works, and unless you , you will probably want to .
To use Noesis, you need the .
Tool | Tool version |
---|
Autodesk (fbx) | glTF Binary (glb) |
---|
You can easily convert between the two formats by hand — or use : Switch to Blender's Scripting perspective, create a new file, paste the contents in, and run it.
Armature | Rotation W: 0 | Rotation W: 1 |
Rotation Z: -1 | Rotation Z: 0 |
Submesh names | submesh0 | submesh_00_LOD_1 |
>= 3.1 stable |
>= 4.459 >= Sep 28, 2021 |