Part 1 Overview - Shaping the Head
The first part of the NPV creation process is the most important, as it satisfies the main criterion of what makes an NPV special. In this section, you will begin the process by creating a custom-shaped head and associated meshes (ie: eyes, piercings, makeup, etc.), allowing the produced NPV to look like your specific character.
Why is Manual Shaping Necessary?
There is no way to access the game files and export a ready-made mesh that is shaped like your individual V's head. In the case of the player character, rather than pre-generating a large number of pre-shaped head meshes and storing them in the game files, Cyberpunk 2077 utilizes a system where each physical frame of player character has a malleable model that, in turn, is shaped on the fly by a conjunction of data within the model and the settings chosen in the character creator (CC) interface. These malleable models come in the form of .morphtarget type files.
Other, non-player character entities do not have a system in place to shape such malleable head models, and thus must rely on pre-shaped meshes. As the end product of an NPV project is a non-player character entity, you will need to bridge the gap, to take the malleable models and use them to create the pre-shaped head and associated meshes that your NPV will use. Thankfully, doing so is rather simple at this point in time.
How to Handle Modded Head Parts
If the character serving as a basis for your NPV project normally utilizes mods to achieve their appearance, there will likely be points during the NPV creation process where you are unsure how to proceed. In the case of modded head and face parts, some mods are simple to work with, while with others it can be difficult to determine which (if any) vanilla shapeable face component was used as the canvas for a mod, or how best to shape a component from a mod.
Generally, I would suggest handling these situations based on the type of mod:
- If a mod is a texture mod (e.g.: complexions, eye color/pattern mods, cyberware recolors, etc.), shape the head/face component to which the modded texture is applied normally. You will have the chance to apply the modded textures at a later point in the NPV creation procces.
- If a mod contains a truly new .morphtarget, then you will eventually need to go through the process of exporting this file, performing some necessary changes, and finally shaping it. I would advise returning to this component later in the process. If the mod is for a crucial component, such as the head itself, shape the appropriate vanilla component to serve as a stand-in in the meantime. If the mod is for a decorative component, such as cyberware or makeup, simply skip it for the moment.
- It should be noted that, as of the time of this guide's publishing, very few mods exist that contain truly new .morphtarget files. Most mods that contain a .morphtarget in their contents are utilizing existing vanilla .morphtarget files in novel ways, and can safely be considered texture mods.
Prep Work
Before you can begin shaping the head and head-associated models, you will first need to determine what settings and components make up the look of your individual V.
Finding Your CC Settings
Determining the settings used on your individual V is rather easy, so long as you can open the game and have access to a save file for the character.
- Open Cyberpunk 2077.
- Load a save file for the character in question.
- Visit a ripperdoc in-game in order to access the full character-editing menu.
- If you are using PotatoOfDoom's Appearance Change Unlocker, you may also access the full menu through the bathroom mirror in V's apartment.
- Record all settings visible in the character-editing interface.
- You may record this information however you wish - in a text document, pencil and paper, on a note on your phone - so long as you can be sure not to lose it.
- Note the number of the option that is selected for each setting. In cases where the option is something like a color palette and thus not apparently numbered, count across the row, left to right, and then move to the next row, counting left to right again, until you reach the "number" of your selected option.
Finding the Right Parts and Materials
The player character's appearance is made up of a collection of components - there is a head model, yes, but also separate models for most different cyberware and tattoo options, for the eyes, the teeth, the various makeup and piercing options, and so on. Not every character will use the same set of components, and so not every NPV project will require you to pre-shape the same set of meshes.
Now that you have documented your character's CC settings, you can use this information in order to identify which of the many available components you will need to work with. While it is possible to do this manually by examining the shapes and file contents of the various possible components or by combing through .app files, the far simpler alternative is to use the NPV Part Picker Utility webpage:
- Open the NPV Part Picker Utility.
- In the right-hand panel, select the relevant options as they apply to the V that is the basis for your NPV project.
- In the left-hand panel, click the "Generate Parts List" button.
- To retain this information for later, copy the text that appears in the bottom panel, paste it into a text processor or similar program, and save it.
- Some of the information produced by the utility, such as the meshMeshAppearance entries, will not be used until later in the NPV creation process.
- If you use Firefox as your web browser, you may instead right click on the page and choose Save Page As..., then save the page as a .txt file. The relevant information will appear toward the bottom.
Getting the Shaped Parts
The process of actually shaping the morphable head involves applying certain transformations to it which match those that the game applies. The data for these transformations is available for application in Blender in the form of shapekeys. It is rather simple, yet somewhat monotonous, to apply the shapekeys to all of the necessary head components manually. As a sort of shortcut, this tutorial will walk you through using a script by manavortex in order to expedite the process.
Prepping for the Script
Before you can utilize the script to streamline the shapekey application process, you will need to acquire the file containing the script and prepare a structure for it to work with.
- Download the appropriate shapeable head resource files for your NPV's physical frame and your chosen mesh-handling workflow from the NPV Resources page.
- Unzip the compressed archive of shapeable head resource files.
- Download the appropriate .blend file for your chosen mesh-handling workflow from the NPV Resources page.
- Create a folder.
- It does not matter where on your computer you create this folder or what you name it. This folder will eventually be used to hold your NPV project's shaped head components, in their raw form before they are converted back to the game-ready .mesh format.
- Place the downloaded .blend file into your newly created folder.
Setting up Blender
The next portion of the process involves tailoring the .blend file for use with your particular NPV.
- Open Blender.
- Go to File > Open.. and open the downloaded .blend file that's in your newly created folder.
- Go to File > Import > glTF 2.0 (.glb/.gltf) and navigate to your downloaded shapeable head resources.
- Select and import all components that you will need for your NPV.
- Consult your saved output from the NPV Part Picker for the file names that are needed for this specific NPV.
- If a given file name appears more than once in your NPV Part Picker output, that is okay - you will still only need to shape it once.
- Save the Blender file.
Using the Script
Now that the proper structure has been created and the shapeable components have been gathered, the only remaining part of the head component-shaping process is using the script itself.
- Switch to the Scripting viewport in Blender.
- The various viewports appear as tabs across the top of the Blender window.
- Scroll to the top of the panel containing the script.
- Find the portion of the script where the character creator values (eyes, nose, mouth, ears, jaw) are recorded, lines 32-36.
- Change the number on each line to match your NPV's character creator value for that facial component.
- The number must always be two digits, so if your NPV uses the second eye shape, record the value as 02 not as 2.
- Do not alter the formatting or other text around the numbers.
- Save the Blender file.
- Run the script.
- The button to run the script appears slightly right of the script name at the top of the script panel; it resembles a triangle pointing right.
- Close Blender without saving the file again.
Checking the Parts (Presence)
The script is configured to auto-export the shaped head components to the folder in which you placed the .blend file. Check that folder. Your head components should be present, either in .fbx format if you are using the Noesis mesh-handling workflow, or in .glb format if you are using the WolvenKit mesh-handling workflow. If the components are not present, review the previous steps and see if you can locate the problem. You will need these shaped components before proceding to the next step.
Checking the Parts (Accuracy)
In the case of certain face parts (specific eyes, nose, or mouth shapes), the internal shapekey data does not correctly match the pattern used by all other parts; this means that in rare cases, entering the correct character creator values in the script may still produce a slightly incorrect head model. It is more efficient to catch and fix this early on, though it may also be corrected later in the process.
- Open Blender.
- In the outliner panel on the right side of the screen, right click the Camera and select Delete Hierarchy. Repeat this for the Cube and the Light.
- Go to File > Import > FBX (.fbx) or File > Import > glTF 2.0 (.glb/.gltf), depending on whether you are using the Noesis or WolvenKit mesh-handling workflow.
- Navigate to the folder with your saved .blend file and shaped .fbx or .glb parts.
- Select and import the .fbx or .glb with the file name starting with h0.
- In the outliner panel on the right side of the screen, you will see an orange person-shaped figure, as well as text matching the name of the part that you imported. Click the eye icon to the right of that text.
- This eye icon controls the visibility of the armature/bones. By toggling the bone visibility off, you will have an easier time viewing the model.
- View the model from a variety of angles to assess whether the features match that of your NPV subject.
- If you are unfamiliar with Blender viewport navigation, you may find it easiest to move and pan the view by clicking on and dragging the various navigation widgets that appear down the right side of the viewport.
- If a feature does not match, take note of which feature - the nose, the mouth, etc..
- It can be hard to be sure if features in Blender match those of an in-game character; use your best judgment and rest assured that any problems can be fixed even if they are only caught later in the NPV project process.
- Once you have determined if the model matches your NPV subject, close Blender.
- If you believe your model matches your NPV subject, move to the next Part of the tutorial. If the model does not match, follow the steps in the "Fixing the Parts" section below.
Fixing the Parts
Only complete the following steps if you determined that the model did not match your NPV subject in the previous section.
- Navigate to the folder where your .blend file and shaped .fbx or .glb files are saved.
- Delete just the .fbx or .glb files.
- Do not delete the .blend file.
- Open Blender.
- Go to File > Open.. and open the .blend file that you have been working with.
- Find the portion of the script where the character creator values are recorded, lines 32-36.
- For the face part(s) that did not match, adjust the character creator value to be one higher or one lower than its actual value.
- The number must always be two digits, so if your NPV uses the ninth nose shape, record the value as 09 not as 9.
- Do not alter the formatting or other text around the numbers.
- Run the script.
- The button to run the script appears slightly right of the script name at the top of the script panel; it resembles a triangle pointing right.
- Close Blender without saving the file.
- Repeat the steps in the sections "Checking the Parts (Presence)" and "Checking the Parts (Accuracy)".
- If you find that the model still does not match your NPV subject, repeat the steps in the "Fixing the Parts" section, but take care to adjust any values in the opposite direction.
- For example, if you previously adjusted the nose value up by one, instead adjust that value down by one.
- Repeat as needed. Once the model matches your NPV subject, move to the next Part of the tutorial.