First Person Perspective Fixes

Common Problems and How to Fix Them

Published: October 08 2023 by FronkenZeepa Last documented update: February 18 2024 by manavortex

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 are modifying someone else's mod:

For more information on this, read here.

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

  1. Open up the mesh entity (.ent) file for the item you need to fix:

  2. Expand the components array, then find any components with Mesh in their types, and check if they require fixing. In my example project, it's both the jacket and the sleeves.

  3. Scroll down and find the array renderingPlaneAnimationParam, which will most likely be grayed out.

  4. Click on it. In the right pane, change None to renderPlane.

  5. Repeat this process for any other component, as needed

  6. When finished, save the file (either Ctrl + S or the Save button top left).

  7. 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

  1. This fix starts in the .yaml file (which should live under your Wolvenkit project's resources folder in the subfolder r6/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.

  1. Open the file in any text editor (recommended: Notepad++)

  2. Helpful documentation on .yaml files resides here. Hopefully it looks something like this:

  3. Check if there is something called $instances. If yes, the mod is using ItemAdditions: Dynamic Appearances and you are done here โ€” go to Dynamic variants: Hiding FPP

  4. Find the line appearanceSuffixes. Again, If the mod is using ItemAdditions: Dynamic Appearances (there is something called $instances), you can skip this step.

  5. If the line isn't there, add it. Use the same number of leading spaces as in the surrounding lines!

  6. Add the line itemsFactoryAppearanceSuffix.Camera to the array. If you have something else in there, add a comma.

  7. Repeat this process for any other items in the .yaml that you need to fix.

  8. 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

  1. Switch back to Wolvenkit.

  2. 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!

  1. Find the array tags at the end of the list.

  2. In the panel on the right, click "add new item" (the yellow +) until you have an empt text field.

  3. In the text field, enter EmptyAppearance:FPP

Hiding FPP via appearance definition

  1. Find and expand the appearances array.

  2. For each entry in there, you need to complete the following steps (the example project has only one entry).

    1. Select each entry

    2. Duplicate it via right-click menu

    3. For the old entry: Change its name to end in &TPP (third person perspective)

    4. For the new entry:

      1. Change the name to end in &FPP (first person camera)

      2. Change the depotPath to base\characters\appearances\player\items\empty_appearance.app

      3. change the appearanceName to default

Dynamic variants: Hiding FPP

For legacy appearances (if the yaml does not have a key called $instances), go to Legacy variants: hiding FPP

  1. Switch back to Wolvenkit.

  2. Pick one of the two options below (we recommendHiding FPP in the .app)

Hiding FPP in the .app

  1. Open the .app file in Wolvenkit

  2. Open the appearances array

  3. Select each appearance and add &camera=tpp to the name.

Hiding FPP in the mesh_entity

  1. Open the components array

  2. Select 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

  1. Create an additional FPP appearance by following the steps in Hiding FPP via appearance definition. Skip 2.4.3 and 2.4.4.

  2. The depotPath should point at the same .app file as the &TPP appearance.

  3. Change the value for appearanceName. For example, add _fpp

  1. Open your .app file and expand the appearances array.

You need to repeat the following steps for every appearance in the .app.

  1. Select an appearance and duplicate it

  2. Change its name to correspond to the appearanceName 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

  1. Open up the appearance's partsValue array

  2. Open the .ent file that is linked inside

  3. In the .ent file, open the components array and check any component with Mesh in its name:

  4. Open the linked .mesh file in Wolvenkit

  5. Select Mesh Preview

  1. 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.

  1. Toggle them off until the part that is in your face turns invisible. In my example, submesh 01 hides the upper collar.

  2. Remember the number (01 in the example below)

  1. 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.

  1. Switch back to the appearance (.app) file

  2. Expand your first person appearance.

  3. Expand the partsOverrides array. If it's empty, click on the array itself, then in the right pane, click create item in array.

  4. Select componentsOverrides by clicking on it.

  5. In the right panel, click on the yellow + to create a new item in array.

  6. Open up the mesh entity (.ent) file and expand the components array.

  7. Find the component that needs its parts hidden and copy the name. In my example, the component is examplejacket1_fur.

  8. Back to the appearance (.app) file. Paste the component's name from the mesh entity into the componentName field.

  9. 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)

  1. Optional: If you need to hide more parts or affect more components/meshes, rinse and repeat.

  2. 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.

  1. Duplicate the .mesh file that's clipping in first person. For my example, I'm using the jacket mesh

  2. Duplicate the meshentity .ent file that belongs to the .mesh file.

  3. 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...)

  4. In the .app file, open your first person appearance.

  5. Add a partsOverride by following the steps under Chunk Masks (skip step 9)

  6. Change the depotPath to your new _fpp meshentity file.

  7. Save and close the .app โ€“ it is now pointing at your new _fpp meshentity.

  8. In the _fpp meshentity file, open the components array

  9. Select the component with Mesh in its name, open it and change the depotPath for the mesh to your new _fpp mesh file.

  10. 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.

  1. Optional, but recommended: If you don't have the Wolvenkit Blender IO Suite installed, do that now.

  2. 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)

  3. You now have a .glb file in your project's raw folder. You can find it like this:

    1. Switch the Project Explorer to the source or raw tab

    2. Right-click on your exported file

    3. 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.

  1. ???

  2. Profit

Last updated