Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
This page will gather knowledge and guides about animations.
This page and its subpages contain links to guides about making animations and poses (static animations) for Cyberpunk 2077 and importing them into the game. For theoretical information, please refer to the Animations part of the knowledge base.
For individual guides, please check the sub-pages in the navigation tree or use the "Next" button at the bottom of this page to browse through.
For a video on how to edit poses with Redmod, see here (official video guides).
Poses/Animations: make your own
This guide will teach you how to make your own static poses in Blender and import them into an existing .anim file.
You can use the same process to make photo mode replacers or create animations with multiple keyframes.
This walks you through the process of hooking an existing .anims
file up with AppearanceMenuMod.
ArchiveXL: adding Photo Mode Poses
How to add standalone poses to photo mode (rather than making replacers)
AMM/Photomode: Other Facial Expressions
How to replace the default set of expressions with those from an NPC
Tutorial: How to Edit Third-Person and First Person Animations for V
Published: Sep 27 2024 by @tylr Last documented edit: Sep 27 2024 by manavortex (Formatting)
This tutorial will show you how to Edit Third-Person and First Person Animations for V. Works with JB's TPP Mod which is found on Nexus Mods and for replacing first-person animations
I highly suggest using my template, which can be downloaded here: https://drive.usercontent.google.com/download?id=1_Z1cmk_r2xH0YtII7t1JbqQoMgvY2m3g&export=download&authuser=0
It includes:
A Blender template with FemV locomotion animations, rigs, and mesh
A WolvenKit project template
Pre-exported NPC animations ready for Blender
It's the same one I use in my tutorial videos.
Cyberpunk Blender Addon 1.6.0 Wolvenkit 8.14.0 BLENDER 4.2
This tutorial is mainly in video form for simplicity. Don’t worry if this looks tough—it's actually really easy once you get the hang of it.
First, open WolvenKit from the link above. In the video, I show how to open the project file from my template and install the Cyberpunk Blender Addon.
Open the Blender Template
Before exporting, remove any unedited animations. This prevents unnecessary files from being included and speeds up the export process.
Export Your Animation
For example, if you've fixed the backward jog (FPP JOG 180), export it as player_locomotionnnn.anims.glb
to:
Template Folder\WolvenKit Template Folder\Player Animation Template\source\raw\base\animations\player\female\body\player_locomotionnnn.anims.glb
Overwrite the file when prompted.
Import to WolvenKit
In WolvenKit, click Import and select the edited .glb
. This will import your modified animation into the player_locomotionnnn.anims
file.
Manual Method
Update Animation Handles: Copy the animation handle from player_locomotionnnn
and paste it over the FPP JOG 180 handle in the Player Locomotion.anim
file.
Transfer AnimAnimDataChunk: Copy the AnimAnimDataChunk from player_locomotionnnn
and paste it in the locomotion anim data chunk. Then, set the unkindex
in the animbuffer to match the data chunk.
Automatic Method (100x Faster)
Simply rename your .glb
to match the .anims
file you are replacing. In this case, you would just rename the .glb to player_locomotion.anims.glb
Import it, and the system will handle the rest automatically.
Again make sure to only include animations that you've included before importing.
Optional Fix: Frame Clamping
If the animation glitches, enable frame clamping to keep the FPS at 30.
That’s it! You can use this method to replace any animation for V, including combat animations. If you want to revert to the original animation, right-click the file and select Replace with Original.
Editing animations for Cyberpunk 2077 can be tricky due to the large number of bones in its rig. While it's possible to use animations from other games, it can require a lot of adjustments. Fortunately, NPC animations and V’s other animations tend to work well, though NPC arm bones often don’t transfer properly to V.
In this video, I demonstrate how to fix an animation for third person, specifically the backward crouch walk. The best approach I’ve found is to use keyframes from other animations and replace the problematic keyframes in the animation you want to fix.
In this case, the back looks off, so I need to replace the spine bone keyframes. The main bones to focus on (for most animations) are from Hips to Spine3, and if needed (though I rarely touch these), Left Shoulder to Right Hand.
For this fix, I found that the backward walk angled at 220 degrees is the closest match to use keyframes from. I copy keyframes from the spine bones one by one and paste them into the backward crouch walk animation, adjusting as needed.
If the animations are different lengths, press S on your keyboard to scale the keyframes to fit the animation you’re editing. This ensures that the animation will still loop perfectly even when using keyframes from other animations. In this video, I scale the keyframes around the 4:27 mark.
The animation I fixed in 9 minutes is featured in a mod I posted on Nexus Mods titled TPP Jog Animation Redone and can be downloaded there if you wish to see how this edited animation looks in game.
I also included about 10 different NPC animations exported from WolvenKit, ready for Blender in my template. This video shows how to import those animations into Blender and apply them to V, as well as how to use keyframes from them.
For example, I import Panam’s sniper combat locomotion animation. As you’ll notice, it looks awkward on V, especially the arms. To fix this, I copy the keyframes from Panam’s animation—excluding the arm keyframes—and paste them into V’s walk animation. The result looks much better.
This process took just two minutes. To import that edited animation into the game, simply follow the steps outlined earlier for replacing an animation. Once replaced, V will use this animation whenever walking fast.
How to hook up custom photo mode poses with ArchiveXL
Published: May 09 2023 by @manavortex Last documented update: December 17 2024 by @manavortex
This guide will walk you through adding poses to Cyberpunk 2077's photo mode with ArchiveXL.
Difficulty: You know how to read ;)
To make poses from scratch, check Poses/Animations: make your own
To scale poses/animations, check Scaling Poses/Animations
We will hook up an existing .anims
file to photo mode. If you don't have one, you can find a dummy file in the AMM pose guide.
Tool versions:
Cyberpunk 2077 2.2
WolvenKit >= 8.15.0
Notepad++ (you can use any text editor, but N++ is recommended)
You do not need any pose mode extender like PMU or MPAF anymore, and they are currently (Dec 17 2024) not compatible with 2.2
Check out this tool by @wolv, it will generate yaml files for you. It is currently (Dec 17 2024) not compatible with 2.2.
Download either of these files:
This tutorial assumes that your Wolvenkit project is called your_cool_new_pose_pack
, and that your legal name is your_beautiful_name
.
If that's not the case, please adjust accordingly!
At any point during this guide, you can press the green Install
button on Wolvenkit's toolbar to check the mod in Wolvenkit.
Use Wolvenkit's Rename
feature with the Update in project files
box checked
Use Notepad++ to edit photomode_poses_tutorial.xl
. Search&replace the original path (tutorial\animations\netrunner_making_poses
) with your new folder path.
Test. The. Mod.
Proceed to #step-2-hook-up-your-poses
We usually do this at the very end and I'm leaving you alone with it. However, this time we start by renaming the folders.
Here's how your project should look when you're done.
Select the highlighted tutorial
folder and press f2. This will open the rename dialogue.
Change its name, and check the Update in project files?
box
Do the same for the netrunner_making_poses
folder (you want your file structure to be as tidy as it can be - future you will thank you for it)
Switch your project browser to the resources tab and open photomode_poses_tutorial.xl
in notepad++:
Use Edit
-> Replace
(Keyboard shortcut: Ctrl+H
) to open the search and replace menu. Replace the old path with your new path:
tutorial\animations\netrunner_making_poses
-> your_beautiful_name\animations\your_cool_new_pose_pack
Hit "Replace All"
Save your file (Keyboard shortcut: Ctrl+S
)
Now, rename the files under resources
as well:
photomode_poses_tutorial.xl
-> your_cool_new_pose_pack.xl
r6\tweaks\tutorial\photomode_poses_tutorial.yaml
-> r6\tweaks\tutorial\your_cool_new_pose_pack.yaml
Rename r6\tweaks\tutorial
to r6\tweaks\your_beautiful_name
That's it for the renaming. Time to test!
Install the mod, and make sure that you still have photo mode poses.
This file tells Cyberpunk to load your custom poses and will be in the same folder as the .archive file for your mod. It looks like this:
You have to adjust the paths under set
and en-us
to your new changed folder structure.
If you want to support more body types from the Nibbles Replacer, you can switch to the Mod Browser and enter the following search query to find all the entities:
base\characters\entities\photomode_replacer > .ent
Here's what those things do:
animations:
A list of entities and animation files that you want to add to them
animations/entity:
The relative path to the photomode .ent file. There are just three of them.
animations/set:
The relative path to the .anims file in your Wolvenkit project.
localization/onscreens/en-us:
A file with translation strings. Holds the name of your photo mode pose set.
You can name this file whatever you want, just make sure that you change the path and name in the .xl file.
Change the yellow box UI-Photomode-tutorial-netrunner-making-poses
to something unique to your mod.
To do future you a favour, use names that will make sense even after a year or two - e.g. UI-Photomode-your_beautiful_name-my_cool_poses
instead of UI-Photomode-ghuawstsedr-hsarht223445
The green text is the name that will show up in photo mode.
femaleVariant
is the default key - if you don't need different pose names for the male body gender, leave it empty.
If you have created your own animations (as a replacer or for AMM), then you are already familiar with this kind of file. If not, it is time to appropriate one from the game files - pick any, since the process is just like with a replacer.
Just as a reminder, here's how they look:
You will need the green text in your .yaml file.
Optional: If you want your pose to move, you can set the duration in the .yaml as well!
Without this file (r6/tweaks/your_beautiful_name/your_cool_new_pose_pack.yaml
), the animations will be in the entity, but the photo mode won't know about them.
You can use this tool by @wolv to autogenerate your .yaml. If you do that, then you can skip this entire section and check the result.
As of Dec 17 2024, the tool is not yet up-to-date with 2.2!
The yaml file has three sections:
The first block will introduce your new category to the photo mode.
I recommend doing search and replace on netrunner_making_poses
, because it's used a bunch of times.
PhotoModePoseCategories.netrunner_making_poses
: This is the name of the category, used to assign individual pose entries to your category.
displayName:
This must match the secondaryKey
in your .json
If one of your poses is called idle_stand
, that will break a bunch of other mods. Please re-name it in both the .anims file and the .yaml before releasing.
Now comes a long list of entries. They'll look like this:
You need to add one of those for every pose from your .anim file that you want to show up in photo mode.
PhotoModePoses.sit_chair_table_keyboard__2h_on_keyboard__make_amm_addon
: This is the unique key to assign your pose to your pose set. You'll need it in the third block.
animationName
: This must match the animation name in your .anim file (the green box).
category
: This must match the category in the first block.
displayName
: What'll show up in photo mode
You register your poses for photo mode by creating the following entry categories. You can use yaml anchors to minimize copy-pasting:
Characters with *AddPoses
will use the poses defined under &AddPoses
. If you don't want a character to use certain poses, don't put *AddPoses
next to their photomode.character
entry.
An entry without YAML anchors, where poses are manually appended to each character, looks like this:
The entries in the list must match the unique keys that you've defined in the second block, and you need one entry per pose.
If you have different names for differently-gendered poses, you need to use the correct lists.
Before you can share your pose pack, you need to change the paths. If you don't and the next modder also doesn't, then only one of your mods will work.
You can find a full guide on changing the paths here.
If you rename files or folders under resources, remember to delete the old control files from your game directory.
At any point during this guide, you can press the green Install
button on Wolvenkit's toolbar to check the mod in Wolvenkit.
You can find a more detailed guide on this on xbae's website.
It is possible to have certain props spawned automatically. However, this feature works only for Player V.
In your .yaml file (r6/tweaks/your_beautiful_name/your_cool_new_pose_pack.yaml
), add the acceptedWeaponConfig
attribute.
Find a list of the potential entries under Cheat Sheet: Poses/Animations ->#acceptedweaponconfig
In the case of weapons, V spawn with whatever weapon you were holding when entering PhotoMode, or the default weapon if none was defined.
The position of the prop is defined by WeaponRight
/ WeaponLeft
bone.
You can limit the availability of poses by setting a poseStateConfig
. For example, the following entry in your yaml will cause the pose to be unavailable unless V is swimming forwards:
Find a list of the potential entries under Cheat Sheet: Poses/Animations -> #posestateconfig
Guide to change expressions for photo mode and AMM
Published: ??? by manavortex Last documented update: Mar 08 2024 by manavortex
This tutorial will teach you how to replace facial expressions for Photo Mode or AMM with those of an NPC.
Difficulty: You need to be able to read. If you run into trouble anyway, please hit us up on Discord so that we can improve this guide!
If you want to look at reference expressions, check here.
If you want to import your own facial expressions, then currently (Mar 08 2024) you're somewhat out of luck, because the toolchain doesn't fully support you yet and we don't have a guide. Reach out on Discord and help us to get this show on the road!
If you want to make custom poses for anything that is not the face, check Poses/Animations: make your own
This will be called the target file in the rest of this guide
female rig
male rig
Both body genders genders are using the same file:
base\animations\facial\male_average\interactive_scene\generic_average_male_facial_idle.anims
NPC animation files have the extension .anims
and reside in the folder base\animations\facial
. You can find the ones for facial expressions by searching in WolvenKit for
Find the file that you want to use and copy it over the original file.
Although the file names are gendered, you can pick any of them.
If you aren't sure which file you want to use, check the references.
👉 If you are missing reference screenshots, feel free to create and upload them and update the wiki.
You now need to make the expressions from your new file selectable by AMM/Photo mode. This happens via animation names in the target file.
Find the correct names here.
Important: AMM and photo mode use different keys. Just make sure to pick the right table, and everything will be fine.
Open the target file (which you replaced with the NPC of your choice) in WolvenKit.
Find the animation you want to use and change its name:
Rinse and repeat the process with all animation names
Save the file
Voila, you now have custom expressions.
Make sure that you have replaced the correct file, and that your mod has been correctly packed and installed.
The game will look for the animation by exact name. AMM is using a different list than photo mode — make sure that you are using the right keys.
Check your target file: you have used a key twice.
If the game is looking for the neutral expression, it will stop looking as soon as it finds an animation with the name of facial_neutral
. If you have multiple of those, it won't care.
Make your own pose, then import it into photo mode
Published: September 2023 by manavortex Last Documented Update: June 19 2024 by LadyLea
This guide will teach you how to create a custom pose in Blender and import it into the game via Wolvenkit.
Since this guide is about creating and imported custom poses, we will make a photo mode replacer. To convert it to a standalone pose pack, follow the guide for either Photo Mode or Appearance Menu Mod.
If you have never done this before, don't do both at once. Or... do whatever, but it might result in unnecessary frustration.
For an overview of all poses in photo mode, check Cheat Sheet: Photo Mode
For more general knowledge, check the Animationssection.
We all stand on the shoulders of giants: this process has first been documented by xbaebsae | Angy, who also provided the original animation templates. You can find a link to their version of the guide in the menu on the left.
Thank you!
This guide will include the minimum amount of fluff and will link background information rather than giving it.
For that reason, you shouldn't skip or skim unless the section tells you that it's optional.
Any links in the text will either
provide additional information which you do not need to complete this guide
lead to step-by-step instructions for any given process
Follow them if you want to learn more, or if you are unclear on how to complete the current step, then come back here.
You will need the following software (install at least this version or higher):
>= 8.13
>= 4.0
>= 1.5.3
To import your pose into Cyberpunk, you need a Wolvenkit project.
female
base\animations\ui\photomode\photomode__female__idle.anims
male
base\animations\ui\photomode\photomode__male__idle.anims
You can not move these .glb files. Wolvenkit needs them to stay where they are so it can splice your new animation into the existing .anims
file.
Download the animation template(s) for your rig(s):
for single characters: from Angy's Google Drive or check Easy IK based Posing
for multiple characters: Zwei's edit of Angy's templates
Move/copy them somewhere, then open the one you want in Blender.
This step will happen in Blender.
If the written instructions aren't clear enough for you, check the screenshots below them.
Open up the file
Select the armature by clicking on one of the bones in the viewport (the red circle on the screenshot below). They will be highlighted if you did it right.
Switch the viewport to Pose Mode
in the dropdown menu at the topleft of the viewport, immediately below the "File" and "Edit" menus. This will turn the armature red.
Now, you need to create your pose. Before you do that, check the box below:
As of today (September 2023), we can only create poses and animations by adjusting each bone by hand. This is how:
Select a bone by clicking on it (it will appear highlighted)
Rotate the bone by either
pressing R
to enter rotation mode, then moving the mouse to rotate the bone (read up on axis limitation in the expandable box above)
or
selecting the Rotate
tool from the toolbar on the left, then clicking and dragging along the coloured axes
When you're done with this bone, position the next one.
Now, draw the rest of the owl, then proceed to the next section.
You now need to create an animation that Wolvenkit can add into the existing file. For that purpose, we will create a nonlinear animation in Blender.
In the panel at the bottom, click on <No Action>
to select it.
In the Armature -> Animation Data panel, click on the New button.
Now, we need to add keyframes, one for the fallback position and one for the pose.
Make sure that the keyframe selected in the animation timeline is 0 (see "Animation Timeline" screenshot below)
Click into the main viewport next to the armature
Open the Keyframe menu (Pose -> Animation -> Insert Keyframe, Hotkey: I)
Select Whole Character
(Hotkey: W).
The menu will close now.
Press the right arrow to select the next keyframe
Repeat the steps 3 and 4
After you have done that, click on the Push Down Action
button
Now, rename both your NLA strip and your animation to idle_stand_01
. This will overwrite the "Tabula Rasa" animation. (Find a list of animations and their associated names here.)
If you aren't planning on replacing the in-game idle poses (i,e., Tabula Rasa), it is still required that your NLA strip and your animation have the same name.
This step is crucial. If you don't do this, then Wolvenkit won't import your animation.
The names must be the same, and they must match the name in your .anim file.
Go back and read the warning box under step 4.
Double-check the names. (Yes, this is that important)
Optional: To add another pose, you can go back to Step 1, then rinse and repeat.
Now that you're sure that you have the correct names, switch the viewport back to Object Mode (the same way you switched to pose mode). Your armature should still be selected. TODO: This step will be made optional when the Blender plugin update hits. Update guide when it does.
Use the Wolvenkit Blender Plugin to export your animation as a .glb file. If the instructions below don't match, check WKit Blender Plugin: Import/Export -> #animations for the up-to-date workflow.
This will open a file picker. Do the following things:
Check the Animations
box on the right
Navigate the to the path of the file you exported in the previous step and click on it to overwrite it
When you're done, hit "Export for Cyberpunk".
Now it's time to import the file back into Wolvenkit.
Click on photomode__female__idle.glb
to select it and open the import settings panel.
In the panel on the right, change Target File Format
to Anims:
Hit the Import Selected button.
Youc an now test your mod: Install your Wolvenkit project by clicking the green button on the taskbar, and launch the game.
If all went well, entering photo mode will show your new pose.
Open your .anims
file in Wolvenkit
expand the animations
array at the top of the file
For each animAnimSetEntry
, change the property animation
-> animBuffer
-> numTracks
to 2
If that doesn't work, change the numTracks to 0
If that still doesn't work, make sure that your pose has at least two keyframes by going back to #step-2-creating-the-animation and not skimming this time.
If Wolvenkit's console tells you something like this:
Use the Wolvenkit Blender IO suite 1.5.3 or greater to export as animation. If the error does not go away, update the plugin.
Import the .glb file into Wolvenkit again.
I have no idea how to tell you this, choomba, other than stressing thrice that it's important and putting a big red box, but the NLA strip and the animation must have the same name. Go back to "this is important" and double-check. The animation might have trailing numbers, e.g. be called photomode__female__idle.001
, that will already do it.
If you're really 100% sure, then you might have a broken NLA strip. That happens sometimes — simply recreate it:
If your armature isn't selected anymore, click on it to select it
Switch into Pose Mode
Press A
to select all bones
Press Ctrl+C
to copy their positions
Create a new NLA strip by repeating Step 2 — but instead of posing the armature, you can simply press Ctrl+V
to paste the bone positions from your previous animation.
Export the new NLA strip, then import it via Wolvenkit. This should work now.
We're reaching the end of the rope here. Go back and check the animation names. If that wasn't it,
create a new copy of the .blend file you downloaded (but keep yours open)
In your old Blend file, repeat 1-4 of the previous step
In your new Blend file, repeat 5+6 of the previous step
When trying to import into Wolvenkit, you get an error message like this:
That is because there is ancient data in the template, which Wolvenkit doesn't know how to handle. Delete everything called "Noesis" from the list of animations below:
I noticed Photo Mode V is huge, and sometimes, specific pose packs have different character scaling. For example, the MascV in MrsFlower’s MascV idle pose pack is smaller than the MascV in my MascV Joytoys and MascV Yorinobu pose packs. With the enabling of Holopointz, I was able to figure out why this occurs and how to “adjust” the scaling.
This guide is mainly a supplement to xBaebsae’s tutorials and resources. This guide allows you to scale armatures as desired for your VP, personal, etc., needs when you make pose packs and/or animations. This is TPP only.
NOTE: Retargeting poses and/or animations will adjust the scale. So a retargeted Fem V pose will make the Masc V pose a bit smaller and vice versa.
If anyone figures out a more efficient way to do this, please do not hesitate to contact me and improve on this knowledge.
Open up your template of choice. There is also a multiple armature template if you want to make shippy or choomy poses, and I will use it for this tutorial.
Select your desired armature and go into Object Mode. The armature bones should turn orange.
IF YOU NEED TO RESET THE SCALE, HIT ALT + S!
Go to the right-hand side of the screen while your armature of choice is selected, and go into the Items tab. It should look like this.
There are several ways to do this. Please remember that X moves side-to-side and will make the armature wide or narrow, Y moves front-to-back, and Z moves up or down, making the armature taller or shorter. You can do this via the Dimensions tab, but you can also adjust as needed in the Scale tab. I think the Scale tab gives better results.
Let’s say we want to make FemV taller than MascV at around the same “height” as Man Big. I put in some values below.
Now that you have your scale to your preference, you need to apply it. Hit Ctrl + A and select scale, or your changes will not be applied! Your armature will remain the default size when you import!
After you hit Ctrl + A and apply the scale, the armature will change appropriately. Ta-da! Import your pose, and this is what you will see in-game.
If you look closely, the armature has changed proportions from when the scale was applied.
If you did not get your desired result or created a curse, hit CTRL + Z and keep adjusting the values, and apply as needed. This may need to take some trial and error. :)
Please remember, you NEED to CTRL + S + Scale!
Have fun! I hope this inspires a lot of awesome poses, especially shippy ones. You also have the power to create some hysterical curses, as seen below.
xBae for pose templates.
Holopointz, for enabling me to screw around.
Manavortex, for being patient with my skill issues adding to the wiki.
How to add your poses to AMM
Created by @manavortex Published April 16 2023
Wolvenkit
>= 8.9.0 (or whatever works for you)
AppearanceMenuMod
>= 2.2 (earlier versions won't support this)
This guide will teach you how to add custom animations to AppearanceMenuMod's Pose
tab.
Difficulty level: You're able to read ;) You don't even need to know your way around Wolvenkit for this one!
To add poses to photo mode, check ArchiveXL: adding Photo Mode Poses.
This tutorial will use animation
and pose
interchangeably. An animation is simply a pose that moves.
You have an .anims
file, either a game file or one that you have made yourself
You have a
You have a text editor like Notepad++
The screenshots show the example project, but it's absolutely no problem if you set up everything on your own: the guide will tell you which path goes where.
If you have downloaded the example Wolvenkit project, you can start it (the "Install" button has an "Install and launch" option in the dropdown) to see everything in action:
- Spawn an NPC (generic male or female)
- Switch to the Poses
tab
- Find the Netrunner making AMM mods
category and select one of the poses
- Your NPC should now move!
Instead of following the process below, you can use the Easy AMM poses generator, which will walk you through the process.
The pose generator will generate the entire structure out of your .anim
file and your user input. You can then follow the steps under #connecting-the-files to move your files around.
Visual learners rejoice: There is a video!
Start by customizing your file structure. If you leave it as it is and publish the mod and somebody else does the same, only one of the two will work. Create a folder structure that is unique to you.
It is good practice to leave base
for the game files, and simply have a folder with your username at the root level of archive
.
Your file structure must not contain spaces, capital letters, or any funky characters, or the game might not find your files. Stick to a-z
, 0-9
, -
and _
, and you're safe.
Any lua poses for AMM must be inside Custom Poses
, but you can rename your_optional_subfolder
to whatever you want (or even delete it).
Rename amm_tutorial.lua
to something that identifies your pose pack, e.g. netrunner_coding
Open the file in your text editor. Let's look at the first half of the entries (we'll check the second half later):
Change modder
to your name so people know who made this.
Change category
to the name of your pose pack. This will be used for AMM to sort your poses into categories, which people will use to browse, so don't go overboard.
Change entity_path
: Right-click on your .ent file in WKit and select Copy relative Path
and paste it into the lua.
Replace all \
in your entity path with \\
. This is critical and your mod will not work if you don't!
Entity files tell the game what to load. You can learn more about them here if you are curious, but you don't have to.
Open the components
array, find the component with the name of amm_workspot_collab
, and set the depotPath of workspotResource to the relative path of your .workspot
file.
Do not change anything else — we're done here.
You don't need to change anything here yet, we'll be doing this in the next step.
An .anims file is targeting a specific rig and holds a list of animations. These hold the pose data; they're what you overwrite when importing from Blender.
Scroll to the bottom of the file and find the node named workspotTree
. Open it and find the list finalAnimsets
.
Each of the workWorkspotAnimsetEntries
inside finalAnimset
connects animation files and rigs.
You can delete entries if you don't have animations for that rig.
The tutorial version uses the same .anim file for V's first person animations. Looks weird, but works. You can change it later on your own.
For each of the entries you keep, make sure that the following paths point at the right animset:
animations.cinematics[0].animSet
loadingHandles[0]
If you have launched the game before, make sure to delete the file
Cyberpunk 2077\bin\x64\plugins\cyber_engine_tweaks\mods\AppearanceMenuMod\Collabs\Custom Poses\your_optional_subfolder\amm_tutorial.lua
A good time to check: make sure that everything works again and that the files are correctly connected. If not, check the troubleshooting section of this guide.
Now that we have the basic structure covered, let's talk about pose names. This time, we start at the end and make our way backwards.
Files for each type of rig are included in the example files, but you can also find them yourself by searching Wolvenkit for rigName > .anims
or character > .anims
(e.g. massive > .anims
or Smasher > .anims
)
Find and open your .anims file. Here's what you're looking at:
Open the animations array to see data for all defined animations (poses). You can make more by duplicating them, delete obsolete entries and change their names; any other changes are coming from Blender.
An animation's name must match the .lua
and the .workspot
, spelling mistakes will break it. They must not contain spaces, use _
instead. AMM will take care of that for you.
Open your .workspot file and expand the following nodes:
workspotTree
rootEntry
list
First, we're going to look at workSequences.
This data type is used for pose transitions and -definitions (e.g. an NPC standing up). For our purpose, we don't need any of the fancy stuff.
While this list in the example file contains two workSequences,
you're gonna need one per however many animations/poses you have. Duplicate to your hearts content.
You need one workSequence for each of your animations!
Open the workSequence
and expand both id
and list
.
Expand the first list entry (workAnimClip
) and its proprety id
.
Point it at the right animation: Change the workAnimClip
's property animName
to the name of your animation (green on screenshot)
Make sure the IDs in the workSequence are unique. (You can skip this for the two entries from the template - if you continue they pattern they establish, all id's will be incremented and unique.)
Find the workSequence
's property id
and increment its numeric value +1 from the previous id
(orange on screenshot)
Find the workAnimClip
's property id
and increment its numeric value +1 from the previous id
(orange on screenshot)
To clarify - our first example workSequence
had a property id
of 2 and its workAnimClip
's propery id
was 3. Our second example workSequence
had a property id
of 4 and its workAnimClip
had a property id
of 5. Therefore, your next workSequence
should have a property id
of 6 and its workAnimClip
's property id
should be 7, and so on. But good news! WolvenKit's File Validation can fill in these numbers for you. Visit this page for more information.
Optional, but recommended: Set the workSequence
's property idleAnim
to the name of your appearance (purple on screenshot). This is purely for your convenience, as you can see which is which when scrolling through the list.
The numeric values for all theid
properties - under workSequence and workAnimClip -
need to be unique within the scope of the workspotTree
. As soon as you have duplications here, things will be out of order.
As of version 2.2, AMM doesn't know anything about the file structure. For that reason, you need to tell it about the poses you added, and the anims array is how you do that.
The lists tell AMM which poses belong to which rig, allowing to hide them when they aren't supported. As you can see, it's no problem if there are duplicate names, and you can even reuse entries in the workspotTree — the game knows which animation to use because of the file structure above.
If you have launched the project in its default state before starting to customize it, delete the file
Cyberpunk 2077\bin\x64\plugins\cyber_engine_tweaks\mods\AppearanceMenuMod\Collabs\Custom Poses\your_optional_subfolder\amm_tutorial.lua
A pose gets correctly added by AMM if you see it in the list and can delete it.
The problem is in your .lua
, AMM fails to pick up the pose information you provided. You can check AppearanceMenuMod.log
, which might tell you what's wrong, but it's probably fastest to just start over from the template .lua
file.
Make sure that you don't add or delete any commas or quotation marks.
The problem is between your .lua
and your .ent
file: the poses were registered correctly with AMM, but Cyberpunk can find nothing to spawn.
Check your .workspot
file for copy-paste mistakes when hooking up your .anim files.
The error is between Blender and your .anims file. Double-check names and make sure that you actually imported.
You messed up the indices in the .workspot
file. Go back and make sure that they're all unique.
Knowledge about animations in Cyberpunk, first and third person
This page contains theoretical knowledge about animations and poses (static animations) in Cyberpunk 2077.
If you want to look up what is where, please refer to the Cheat Sheet.
An animation is a collection of static poses played as a sequence.
If you want to make poses (replacer, photo mode or AMM) instead, see the next page: Creating Animations - Poses for V & NPCs.
Also called armature
or skeleton
, a rig is a collection of "bones" attached to a mesh. The mesh is parented (connected) to these bones, so when the bones move, the mesh moves with them, deforming as needed. These bones are named accordingly (LeftArm, Spine3, etc.) and may be used not only for anatomical parts of a mesh, but also for parented objects such as clothes or necklaces. Rigs are also used for non-human meshes that have moving parts or can be deformed, such as cars.
Rigs can be controlled by physics, either partially (necklaces, earrings) or completely (ragdoll). In addition to being parented to meshes, bones can also be parented to invisible collision detection shapes (colliders) to prevent or minimize clipping through objects. In short, rigs are what animators actually interact with when they animate a mesh, down to the smallest details such as individual facial features.
For a list of rigs by path, see the cheat sheet.
You can find body animation sets with the following :
Reaction animations such as knockdowns, impacts, deaths, etc. can also be found with search queries containing those terms, such as simply:
Which animation set a character uses, as well as associated animation graphs and rigs, are defined by entAnimationSetupExtensionComponent
(s) and entAnimatedComponent
(s) in the root entity (.ent file):
You can find facial animation sets with the following Wolvenkit search query:
They are referenced from an entAnimationSetupExtensionComponent inside the .app file, and also in the .ent files, which point to the associated animation graphs:
Every individual animation in an .anims file has an Events subsection which often contains associated sound effects, visual effects, etc. The exact frame in which they play can be configured:
Currently browsable only in collapsible list form, .animgraph files contain the logic and the parameters that govern animations for various entities in the game. For instance, all human characters have the overwhelming majority of their animation logic defined in the file humanoid.animgraph, containing over four thousand nodes. It basically works by detecting what state the NPC is currently in, and defining what animation should be playing, and how that animation should be modified and manipulated to suit that state or associated sub-states. For instance, any animation can be attached to a node that alters the rotation of a specific bone, or to a node that blends that animation with a different animation, or to a node that filters that animation only to a specific bone group (bone groups are defined in .rig files). That filter is called a mask, and the term "weight" does not refer to physical weight, but to how influential a node is over other nodes.
Animation graphs are also used to determine the physics behaviors of dangling objects (usually these graphs have the word "dangle" in their filename) or of moving parts that are separated from their main object, such as the parts of a car when it explodes.
It is currently difficult to navigate the animation graphs. As of this writing, WolvenKit's graph editor is not yet available for this kind of file format. In the available list form, every node can be uncollapsed into more linked sub-nodes, all of which are duplicates of nodes on the main list. You can make navigation easier by numbering relevant nodes using the debugName field. Every duplicate of the same node will contain the text you write in that field, no matter how far down into a node tree you go:
The animation graph is extremely powerful and influential over the game, and more details regarding its functionality are being studied. It can be converted into a .json file for CTRL+F text searches, but that conversion preserves all duplicates and node trees, and is therefore over half a million lines long and 350 megabytes in size.
Learn how to play an animation on an entity through clever gimmicks in Redscript.
This is an advanced tutorial that requires you to understand the basics of wolvenkit
First of all, let's give credits to people out there:
Cyberscript and Smoke Everywhere authors donk7413 and Eli, who originally found out how to play animation through workspots. All credits to them in that regard.
psiberx for his numerous hints and advices, as always.
It started from a talk with @Eli and @donk7413 the authors of Cyberscript and Smoke Everywhere mods.
When asked details about how they managed to have V smokes a cigarette anywhere in-game, they mentioned having merged all .workspot
files in a gigantic file for convenience (namely Cyberscript Core Animation Archive), so that Cyberscript can play any animation in-game on V or any NPC.
At first it didn't ring a bell, but then @psiberx mentioned about modders "abusing" .workspot
by spawning an invisible .ent
to have the target being animated.
The trick is actually to spawn an invisible device (.ent
) right onto your entity, which then allows to trigger animation(s).
So it happens that we need a .ent
file whose components
contains a workWorkspotResourceComponent
which references a .workspot
by name
and DepotPath
.
In turn, .workspot
file contains a list of worksSequence
s containing workAnimClip
which are the animations to play with idleName
and animName
.
Of course the .ent
must be made invisible and contain a set of specific properties, and this is where all hard work was already made by Cyberscript people.
💡 Generally speaking if you need to play a ton of animations I would recommend you to use Cyberscript directly, since it already does everything for you and also comes up with a ton of useful more features to build a mod with ease.
On the other hand, if like me you only want to play 1 or 2 animations at most, then it's probably a lot of overhead and you can keep reading.
What I personally did was to reuse Cyberscript archive .ent
stripped of components
that I don't need, and .workspot
with only the animations that I'm interested into.
To do the same, you will need to download the Cyberscript Core Animation Archive, install it in your mod folder so that Wolvenkit can find it, and locate the workspot_anim.ent
file in the following directory structure:
You can then use wolvenkit and your file explorer to move the workspot_anim.ent
in the location of your choice inside your mod. Then you can strip it of every components that isn't aworkWorkspotResourceComponent
using wolvenkit.
Then you will need to locate an interesting .workspot
file inside the base/workspot
of the game and place it in the location of your choice inside the archive folder of the mod you are creating.
Redscript
Once the previous files are ready, we need something able to spawn an entity in Redscript (once again if your preference goes to Lua, I'd recommend you to use Cyberscript directly).
This is exactly what Codeware offers with DynamicEntitySystem
: see "Entities" in its wiki!
Here's a short example which will get us going:
(You will need to replace the paths to the .ent
and .workspot
files with the paths to your files )
to add this script to your mod, you will need to create the following structure in the ressources
folder of your mod:
.ent
can be anything, not just a "living entity". it can be a cigarette, the act of smoking.. it can really be "whatever".
it contains components
with e.g. workspotMapper
, entSlot
, etc
it also contains obviously a workWorkspotResourceComponent
with points out to the .workspot
.
.workspot
gets triggered throughout .ent
: you don't spawn a workspot and play it on a target, you spawn an entity which references the workspot and plays the workspot through the entity (which in turn play the animation(s), and you can "jump" from one animation to another in the same workspot).
This page describes how to remove Foot Snap IK from poses/animations in WolvenKit, such that feet don't snap / get glued to the floor in poses.
This tutorial was written by me after messing around until I got something to work the way I wanted to. But I only managed to arrive at this point thanks to the many other tutorials, and I actually have no background in animating/posing/using Blender at all. It is possible that some of the things I say are wrong / not the best solution / not perfect, but it did work for me.
Foot Snap IK (inverse kinematics) is a feature in the game that procedurally (at runtime) modifies poses to position feet on the floor. This can be good (e.g., making sure that both feet are on the ground when the character is standing on a slope or stairs), but can also be bad (makes it difficult/impossible to adjust the vertical positioning of your character in photomode, and glues feet to the floor when this is not intended for the pose). This tutorial covers how to disable this feature for individual poses in a .anims
file in WolvenKit.
In this tutorial, I assume that you have a .anims
file with some of your (photomode) poses in WolvenKit. This would probably contain some of your own new photomode poses that you have created/edited/imported in Blender, and then exported from Blender into WolvenKit, using a mix of the other tutorials.
If you know that you don't want any Foot Snap IK for any of your poses at all, the solution is simple: just start out by using the Edited Photomode containers by Zwei that Importing Animations also links to. However, sometimes we might have a single Photomode container with a mix of poses, of which we want some to use Foot Snap IK, and we want others not to. For this case, I'm assuming we start with a container that does include Foot Snap IK for all poses, and we'll try to remove it from some individual poses.
The following screenshot shows how you can see in WolvenKit whether or not your pose currently has Foot Snap IK enabled:
If you see this, and you want to get rid of Foot Snap IK for this pose, simply right-click the box with the red outline in the screenshot above, and select "Reset Object". See the screenshot below:
IMPORTANT: after doing this, the pose would in my case sometimes completely break, causing the character to explode into a huge graphical glitch of floating triangles in-game. The solution that worked for me was to, after going through the process above, simply re-import the .glb
file from Blender into WolvenKit again (exactly the same file that you have already imported once), as per the other tutorials such as Poses/Animations: make your own.
Created & Published: Summer 2021 by @Pinkydude
As with AMM 2.0, this guide is rather obsolete, but will be kept archived!
What you’ll need :
AMM (or any other mods that spawn characters)
WolvenKIT or the game files extracted [basegame_4_animation.archive]
The 010 hex editing software with the CP77 template as well as the scripts (I recommend joining the CP77 Modding server to grab those!)
The WolvenKIT console (CP77Tools)
I’ll assume you already know some basic modding (extracting the files with the console or WKit etc)
It’s important to also know that some characters have their own locomotion files (meaning unique pathing etc) Like Panam, Goro etc
I won’t go over every single ones here!
For this tutorial, I’ll make an animation for Mitch, who uses the Man Average Civilian Locomotion (MAC)
The MAC locomotion [man_average_civilian_locomotion.anims] is located here [base\animations\npc\generic_characters\male_average\locomotion]
This will be the path of your mod!
To grab an animation, you’ll have to go into the Animations folder, there you’ll see multiple other folders- the [main_quests] and [side_quests] have unique animations not used by any other characters outside of that that specific quest!
For example, q103 is Ghost Town, the start of Panam’s quest line
I’ll use the animation of Mitch hugging Panam when we meet them at the camp!
Once you find the animation you wish to use, simply copy and paste it in your last folder in your mod project, the [locomotion] folder, and rename the .anims file with the character’s locomotion file’s name, in Mitch’s case its [man_average_civilian_locomotion]
Once pasted and renamed, you can now open the .anims file in 010!
A lot of .anims file actually have multiple animation inside of it to choose from, simply open the [struct DATA] handle to expand the list. Since mine is an unique animation, there’s only one [animAnimation]
I’ll now click on the [CNAMES] handle and use the PASTE script
(I recommend setting a shortkey, you’ll use it a lot for custom poses among other things!)
A window should pop up asking for an input : Here, type [idle_stand]
(this is the name of the idle animation the NPCs use when spawned!)
This will add a new CNAME to the list. Now, go back into [struct DATA] and open up the [animAnimation] you wish to grab!
The new CNAME we added will automatically be the last one in the list, not wasting time by checking what number it has, I simply put a really large number to be sure to grab the last name in the list!
Click on the OG name and simply put 500 with the numpad to change the CNAME to [idle_stand]
Save your file and pack your mod! You’re done!
Load a save file, spawn any character using the MAC locomotion and VOILA 💛
Initial research on facial anim files and how to find them
Summary
Created by @Simarilius 3/10/24
Based on info from Loomy and JohnCO
John CO worked out how to export facial animations to blender while creating his (check it out if you havent seen it, its impressive) with help from Loomy, and the resulting script is available in the plugin resources folder.
The original could only process scenerid files but its now able to process .anim files too.
Thats all well and good but you need to be able to find them, so again with the help of Loomy I've been digging into the file structures to work out how things are related. A pictures worth a 1000 words so here you go:
Wolvenkit ( | )
. Give it a name that you can identify later.
Now, your project needs the photo mode .anims file appropriate for your pose(s). The table below shows your options. for the correct photo mode file and add it to your project:
Export the file(s) to GLB via . Default settings are fine. (We will overwrite these glb(s) with our new pose, then use Wolvenkit to merge them into the existing .anims file.)
Switch back to Wolvenkit and open the .
To make sure that the .glb
file that you want to import into is okay, do a fresh of your .anim
with a Wolvenkit version from after February 10 2024 (>8.13 should be ok)
Basically you want to find the audio on get the locStringId, then the tricky bit is finding the scene its referenced by, from that you can find the dialogLine, which lets you find the actor id, and locate the anims file. Anim for it should be in there with the locstring as its name. Am going to try scrape all the scene files to a db to make the tricky bit easier.