First Person Perspective Fixes
Common Problems and How to Fix Them
In this guide, I will do my best to address the most common first person issues I've seen, and how to fix them.
Prerequisite and other relevant Guides
This guide assumes that you have an already working in-game item, and at least a basic understanding of WolvenKit.
Index
If you're creating a fix for someone else's asset, why not drop them the final files - or a link to this guide?
Problem #1: Your sleeves render behind your arms
This is probably the most common problem I've seen, and is also thankfully the easiest to fix.
Solution
Open up the mesh entity (
.ent
) file for the item you need to fix:Expand the
components
array, then find anycomponent
s withMesh
in their types, and check if they require fixing. In my example project, it's both the jacket and the sleeves.Scroll down and find the array
renderingPlaneAnimationParam
, which will most likely be grayed out.Click on it. In the right pane, change
None
to renderPlane.Repeat this process for any other component, as needed
When finished, save the file (either Ctrl + S or the Save button top left).
Install and test the mod in-game. If you did it correctly, your sleeves should now render properly.
Problem #2: It's in your face (#justStormtrooperThings)
To fix this problem, you need to hide your item in first person perspective.
This part of the guide will show you how to turn the entire item invisible. If you don't want that, check Problem #3: Partial hiding (#justDraculaThings)
Solution
This fix starts in the
.yaml
file (which should live under your Wolvenkit project'sresources
folder in the subfolderr6/tweaks
, perhaps in a subfolder).If you are editing someone else's mod, you need to copy their
.yaml
to your project. If you don't know which file that is, check their Nexus mod files, as it will be part of the original .zip file.
If you don't have a yaml because you're changing an in-game item for some reason, you need to start at #fixing-the-root-entity. If you convert it to a dynamic appearance, you can stick to these parts in the rest of the guide.
Open the file in any text editor (recommended: Notepad++)
Helpful documentation on .yaml files resides here. Hopefully it looks something like this:
Check if there is something called
$instances
. If yes, the mod is using ItemAdditions: Dynamic Appearances and you are done here — go to either #fixingFind the line
appearanceSuffixes
. If the mod is using ItemAdditions: Dynamic Appearances (there is something called $instances), you can skip this step.If the line isn't there, add it. Use the same number of leading spaces as in the surrounding lines!
Add the line
itemsFactoryAppearanceSuffix.Camera
to the array. If you have something else in there, add a comma.Repeat this process for any other items in the
.yaml
that you need to fix.Save and close the file.
Legacy variants: hiding FPP
For dynamic appearances (if the yaml has a key called $instances
), go to Dynamic variants: Hiding FPP
Switch back to Wolvenkit.
Open the root entity (.ent) file (it should have an array called
appearances
)
You now have two ways of hiding the item in first person:
Hiding FPP via tag
This will not work with ItemAdditions: Dynamic Appearances!
Find the array
tags
at the end of the list.In the panel on the right, click "add new item" (the yellow +) until you have an empt text field.
Unless you are using In the text field, enter
EmptyAppearance:FPP
Hiding FPP via appearance definition
Find and expand the
appearances
array.For each entry in there, you need to complete the following steps (the example project has only one entry).
Select each entry
Duplicate it via right-click menu
For the old entry: Change its
name
to end in&TPP
(third person perspective)For the new entry:
Change the
name
to end in&FPP
(first person camera)Change the depotPath to
base\characters\appearances\player\items\empty_appearance.app
change the
appearanceName
todefault
Dynamic variants: Hiding FPP
For legacy appearances (if the yaml does not have a key called $instances
), go to Legacy variants: hiding FPP
Switch back to Wolvenkit.
Pick one of the two options below (we recommendHiding FPP in the .app)
Hiding FPP in the .app
Open the .app file in Wolvenkit
Open the
appearances
arraySelect each appearance and add
&camera=tpp
to the name.
Hiding FPP in the mesh_entity
Open the
components
arraySelect each component with
Mesh
in its type and add&camera=tpp
to the name
Alternatively, you can duplicate the component and have two for different meshes. This will be covered in Problem #3: Partial hiding (#justDraculaThings)
Testing
Save and close the file. Repeat the whole process for any other items that need to be obliterated in first person. Install and test. If all went well, no more obstructed vision!
Problem #3: Partial hiding (#justDraculaThings)
Fixing this is very similar to Problem #2, just with a few extra steps.
Solution
Create an additional FPP appearance by following the steps in Hiding FPP via appearance definition. Skip 2.4.3 and 2.4.4.
The
depotPath
should point at the same .app file as the &TPP appearance.Change the value for appearanceName. For example, add _fpp
Open your .app file and expand the
appearances
array.
You need to repeat the following steps for every appearance in the .app.
Select an appearance and duplicate it
Change its
name
to correspond to theappearanceName
that you used in your root entity (Step 3)
At this point, it can be done in a few ways, depending on some factors:
Finding the right submesh
Open up the appearance's
partsValue
arrayOpen the .ent file that is linked inside
In the .ent file, open the
components
array and check any component with Mesh in its name:Open the linked .mesh file in Wolvenkit
Select
Mesh Preview
In the right-hand panel, you will see a list of checkboxes.
If there is only one submesh, you need to edit it in Blender to split off or delete the offending parts - complete the section #creating-a-second-.mesh before proceeding. I'll wait.
Toggle them off until the part that is in your face turns invisible. In my example, submesh 01 hides the upper collar.
Remember the number (01 in the example below)
Proceed to the section for Chunk Masks.
Chunk Masks
You can learn more about chunk masks under 3d objects: .mesh files -> Submeshes, Materials and Chunks. This is not necessary for the purpose of this guide.
Switch back to the appearance (.app) file
Expand your first person appearance.
Expand the
partsOverrides
array. If it's empty, click on the array itself, then in the right pane, click create item in array.Select
componentsOverrides
by clicking on it.In the right panel, click on the yellow + to create a new item in array.
Open up the mesh entity (.ent) file and expand the
components
array.Find the component that needs its parts hidden and copy the name. In my example, the component is
examplejacket1_fur
.Back to the appearance (.app) file. Paste the component's name from the mesh entity into the
componentName
field.Click on
chunkMask
and uncheck the submeshes that you want to hide. (You found out which ones that were in Finding the right submesh - In my example it was submesh 01)
Optional: If you need to hide more parts or affect more components/meshes, rinse and repeat.
Save the appearance (.app) file and install the mod to test. If all went well, there should no longer be parts clipping into view.
Creating a second mesh
The clean way to do this is to split the original mesh into submeshes, which you can then hide via chunkmasks. If you want to do that, skip straight to Editing the .mesh
To show a different item (one with the clipping bits removed) in first person perspective, we need to create a second .mesh file and a corresponding meshentity .ent that we can display. This guide will show you how.
Duplicate the
.mesh
file that's clipping in first person. For my example, I'm using the jacket meshDuplicate the meshentity
.ent
file that belongs to the.mesh
file.Change their names to end in _fpp to indicate that this is a mesh for the first person perspective (or do whatever you want, but this guide assumes...)
In the
.app
file, open your first person appearance.Add a
partsOverride
by following the steps under Chunk Masks (skip step 9)Change the depotPath to your new _fpp meshentity file.
Save and close the .app – it is now pointing at your new _fpp meshentity.
In the _fpp meshentity file, open the components array
Select the component with Mesh in its name, open it and change the depotPath for the mesh to your new _fpp mesh file.
Save and close the .ent - it is now pointing at your _fpp mesh.
Editing the .mesh
For the next step, we need to export our .mesh file and edit it. You can use any 3d editing program, but this guide will use Blender 3.6 and the Wolvenkit Blender IO Suite.
Optional, but recommended: If you don't have the Wolvenkit Blender IO Suite installed, do that now.
Export your _fpp .mesh file.
If the export throws an error, uncheck the Export Materials option in the settings panel (you don't need it)
You now have a
.glb
file in your project'sraw
folder. You can find it like this:Switch the Project Explorer to the
source
orraw
tabRight-click on your exported file
Select the option to show it in Windows Explorer
Now, hit up the 3d editing: Submeshes page and edit your mesh.
If you stuck to the guide, you shouldn't run into any errors. If you do, check the Troubleshooting your mesh edits page, or reach out to us on Discord in #mod-dev-chat.
???
Profit
Last updated