Fixing Eye Clipping in NPVs by Replacing Facial Rigs
(Adapted from xBaebsae’s skeleton transfer method)
Created: August 11, 2025 by @saltypigloaf Adapted from xBaebsae’s skeleton transfer method Last documented update: N/A
Overview
In vanilla Cyberpunk 2077, V’s face only ever uses Rig 000 and it's associated bone structure, no matter what facial sliders you pick in Character Creation. This is a known bug and it causes serious visual problems.
❗ Why it matters:
There are 22 facial rigs in the game.
Each rig corresponds to a set of morph slider values: for example, Rig 000 = “all sliders at 1,” Rig 001 = “all sliders at 2,” etc.
These rigs exist so that every facial feature aligns correctly to your custom CC choices.
Using the wrong rig leads to eyeballs clipping through eyelids or cheeks when looking sideways in Photo Mode.
For V, this can be corrected using mods like Facial Customisation[sic] Rig Fix & Facial Customization Fix - ArchiveXL but does not apply to NPVs.
Before You Start
This guide assumes you already know how to:
Import/export meshes with WolvenKit
Work with JSON files in a text editor without breaking syntax
💡 If you’ve built NPVs before, you already meet these requirements. This guide focuses on the rig replacement process, not general WolvenKit navigation.
The Fix
We replace the head skeleton in your mesh with one from the correct donor rig that matches your NPV’s eye shape.
✅ Result: Restores correct bone positions for eyes and facial features. Eye tracking works again; no more “eyeballs escaping through your face.”
The Trade-Off
⚠ Heads up: This changes the entire head skeleton, not just the eyes.
Pro: Eyes track correctly; no clipping.
Con: The rest of the head inherits slight positional changes from the donor rig.
For most NPVs this is worth it.
Tools Needed
💡 Tip: Use a text editor with JSON syntax highlighting (VS Code recommended); it makes spotting bracket mismatches much easier.
Workflow Overview
Identify donor rig for your NPV’s face/eye shape.
Export both donor and target meshes.
Copy skeleton data from donor JSON to target JSON.
Copy linked renderChunk data for bone positions.
Re-import edited JSON into WolvenKit.
Update your face_rig.
Step-by-Step Guide
1. Prepare Files
Identify your donor mesh, based on the Character Creation chosen for the Eye
Navigate to
base\characters\head\player_base_heads\player_{body}_average\
Find the subfolder with the numeric value of your Eye choice. The number will be offset by 1 because the rig 000 is associated with Character Creation choice of 01.
📄 Example:
If your eye selection was 12, your rig/bones will be found in the 011 folder, either:
h0_
011
_pwa_c__young_714
h0_
011
_pma_c__middle_763
Import the necessary files into WolvenKit:
Source mesh (donor head with correct rig, identified aboveve)
New facialsetup and rig files
Target mesh (NPV head you want to fix)
Duplicate the target mesh to keep an untouched backup.
⚠ Warning: Never work directly on your final NPV mesh! Always duplicate for edits.
2. Export to JSON
Right-click both meshes → Export to JSON.
Using the Export Tool, export the target mesh to GLB.
3. Copy Skeleton Data
Open both JSONs in your text editor.
In source JSON:
Search for
"bound"
.Scroll up to
"Bone Names"
.Select everything from
"Bone Names"
down to just before"boundingBox"
.Copy this block.
In target JSON:
Make the same selection.
Paste to replace it.


💡 Tip: Keep both files open side-by-side so you can verify matching selection points.
4. Copy RenderChunk Data (same procedure as before)
In source JSON:
Search for
"customData": []
.Select from the line above it down to
"bonePositions"
.Copy.
In target JSON:
Select the same section.
Paste to replace it.
5. Save & Re-Import
Save your changes.
In WolvenKit, right-click the target mesh JSON → Import from JSON.
Using the Import Tool, import your target mesh from GLB.
⚠ Important: If you see errors on JSON import, check for missing commas or extra brackets from the copy-paste step.
6. Update the face_rig
Component
face_rig
ComponentAfter replacing the skeleton in the mesh, you need to update the face_rig
component so the game points to the correct donor rig and facial setup.
In WolvenKit, open the
.app
or.ent
file that contains your NPV’s head setup.Locate the
face_rig
component.Update:
rig
→ point this to the donor.rig
file you imported in Step 1.facialSetup
→ point this to the donor.facialsetup
file you imported in Step 1.
Leave the
animGraph
value unchanged — this stays as it is.

⚠ Important: If you don’t update both
.rig
and.facialsetup
to match the donor, the facial bones will not behave correctly in-game.
Credits
Original Method & Screenshots: xBaebsae
@eagull, @manavortex, and @scorpiontank for their invaluable input
Last updated