Want to create Skyrim's paired animations in Cascadeur? Let's do it.
Animation creation
Import the rig a second time by going to Import -> Scene, so you’ll have two characters. Before repositioning both characters, locate Rig(0) – Character: root_constraints in the outliner menu and enable the root constraints for both characters. This will ensure their NPC_Root bones move with them, positioning your characters correctly in the game.

--- part where you draw the rest of the @#$! owl happens here ---
To prevent sudden snaps and ensure the actors don’t clip into each other, switch to Joint mode after finishing your animation. Locate the NPC bone (the first one in the skeleton) and adjust its position to match the NPC_Root bone at both the first and last frames.
If you’re on a non-free tier, export as usual. However, if you’re using the 2023 free tier, you’ll hit the joint limit and need to export the characters one by one (e.g., character 1 as A1.fbx and character 2 as A2.fbx). I can’t recall if the 2023 version has an "Export selected objects" option; if it doesn't, you can temporarily delete one of the actors before exporting.
Import the fbx(s) into Blender. The order of actors in the paired animation will be dictated by the order in which you select the skeletons in the object mode.
If you were animating different types of characters (i.e. I did a paired human/horse dismount, or you’re doing a killmove between the player and a creature or something like that), you need to give the export plugin correct skeleton.hkx for both.

Annotations
After you get the hkx, there’s one more step left before you can test it in-game: annotations. These depend on the type of the animation you’re doing. I did quite a few non-combat paired animations, so my only choice for these was to override pa_HugA with OAR (because Nemesis fails to add new PA-type ones, and hell will freeze over first before I'll create a FNIS-exclusive mod in 2024 - so here's to hoping that Monitor can fix this with Pandora) - so I needed to copy the annotations from HugA to mine.
If you’re doing killmoves, you can look up annotations for them in Fore’s modders docs or in Nick’s paired animation resources (there’s also a killmove tutorial by Nick that can prove useful)
For whatever reasons, I couldn’t get hkanno to annotate the paired ones, so we’re doing it the hard way - download hkxconv drag and drop the hkx onto the exe. That'll get you an xml with your animation. Locate the line that says
<hkparam name="trackName">NPC Root [Root]</hkparam>
and under it, add<hkparam name="annotations" numelements="4">
<hkobject>
<hkparamname="time">0.000000</hkparam>
<hkparamname="text">NPCKillMoveStart</hkparam>
</hkobject>
<hkobject>
<hkparamname="time">9.400000</hkparam>
<hkparamname="text">NPCpairedStop</hkparam>
</hkobject>
<hkobject>
<hkparamname="time">9.400000</hkparam>
<hkparamname="text">NPCKillMoveEnd</hkparam>
</hkobject>
<hkobject>
<hkparamname="time">9.400000</hkparam>
<hkparamname="text">PairEnd</hkparam>
</hkobject>
</hkparam>
Match the time parameter to your duration (you can look it up somewhere at the top of the file where it says <hkparam name="duration">x.xxxxxx</hkparam>)
Next, locate
<hkparam name="trackName">2_NPC Root [Root]</hkparam>
and under this add: <hkparam name="annotations" numelements="4">
<hkobject>
<hkparamname="time">0.010000</hkparam>
<hkparam name="text">2_KillMoveStart</hkparam>
</hkobject>
<hkobject>
<hkparamname="time">9.400000</hkparam>
<hkparamname="text">2_pairedStop</hkparam>
</hkobject>
<hkobject>
<hkparamname="time">9.400000</hkparam>
<hkparamname="text">2_KillMoveEnd</hkparam>
</hkobject>
<hkobject>
<hkparamname="time">9.400000</hkparam>
<hkparamname="text">PairEnd</hkparam>
</hkobject>
</hkparam>
(again, don’t forget to match the time parameter to your duration)
Save, drag the xml onto hkxconv.exe and you’ll finally get an annotated paired animation. Create an OAR submod. For my non-combat animations, I’ve put them at
Meshes\actors\character\animations\OpenAnimationReplacer\***\***\paired_huga.hkx
In the conditions, use
"ignoreDontConvertAnnotationsToTriggersFlag":true, "triggersFromAnnotationsOnly": true
Install Paired animation improvements for OAR, create your conditions and try it out!

Code
To actually get it to play, you’re going to need to call it with:
Game.GetPlayer().playIdleWithTarget(pa_HugA, akTarget)
(swapping actors places here will swap their positions in the animation if you’ll need that)
If you need to do something right after it finishes, you can use:
Game.GetPlayer().WaitForAnimationEvent("PairEnd")
I usually like to add
Game.GetPlayer().SetHeadTracking(false)
akTarget.SetHeadTracking(false)
before, and then set it to true after it finishes – so headtracking doesn’t affect the animations.
For simplified paired animation testing purposes, you can use the amazingly wholesome Free hugs mod, as it calls HugA from the dialogue menu. ^_^
Supplementary reading
FNIS for modders documentation:
https://www.nexusmods.com/skyrim/mods/11811?tab=files&file_id=1000186909
NickaNak’s tutorials
https://www.nexusmods.com/skyrimspecialedition/mods/99621?tab=files&file_id=422344
https://drive.google.com/drive/folders/1o-U_jIcMwX1wL1PUWw-dSd6JkM432COb
ProfJack’s tutorial (completely different workflow, but some useful info in there too)
https://www.nexusmods.com/skyrimspecialedition/mods/65528
1 comment
my only problem is making paired animation