Introduction

Open View → Animation Editor to browse everything in DATA/GLOBAL/ANIMATION.PAK — every animation clip the game ships, for characters and for props alike.

The editor lets you find a clip, watch it play on a model, export it to a DCC format, and bring new animation back in. It replaces the old raw PAK extract/repack window, which offered no way to see what a file actually contained.

This window is also what opens when you pick an animation for an entity parameter — see Using it as a Picker.

How Animations are Organised

Cathode does not keep a flat list of clips. It asks for animation the way the game needs it, and the editor mirrors that:

  • Kind — the two tabs at the top. Character animations covers anything rigged to a character skeleton; Environment animations covers props and world geometry.
  • Animation set — roughly "one rig's worth of animation". Most sets are named after the skeleton they belong to. Sets whose names begin with # are the game's own grouping entries rather than characters, so they're sorted to the bottom of the list.
  • Context — the state the character is in. A set's clips are grouped by context: one unnamed group that always applies, and then one group per state that overrides it. Around a quarter of the game's sets have more than one context, and some have dozens.
  • Clip — the animation itself. A clip is referenced by the name its set plays it by, which is not the same as its filename.

One more thing worth knowing before you export anything: nearly every clip is authored on a shared rig and moved onto the individual character's skeleton at runtime. The Authored on column tells you which rig a clip was actually built against, which matters when you come to export or preview it.

Browsing

As shown below, the window is split top and bottom: animation sets above, the clips inside the selected set below, with a Context dropdown between them. Drag the splitter to rebalance — the position is remembered, as is which tab you were last on.

The Animation Editor window with the ALIEN set selected in the top list, its always-available context chosen, and one clip highlighted in the clip list below with the summary line and the Import, Preview and Export buttons along the bottom.

The Animations window on the Character animations tab: sets above, the clips in the chosen context below, and the selection summary beside the buttons.

Both lists sort by any column: click a heading to sort by it, click again to reverse. Numeric columns sort as numbers, so you can order by length or frame count and get a sensible result.

Sets & Contexts

The set list shows the set name, the skeleton it uses, how many contexts hold clips, and how many clips it holds in total. A set with no clips left in it is greyed out.

When every set on screen is named after its own rig — which a search often leaves you with, though not the full list in the screenshot above, where the first-person sets share a rig — the Skeleton column collapses and hands its width to the names.

Pick a set and the Context dropdown fills with the contexts that actually contain animation. The unnamed one is listed as (always available), and each entry shows its clip count.

The Clip List

Each row describes one clip:

  • Animation — the name the set plays it by, which is what an animation parameter stores
  • File — the file it lives in inside the PAK
  • Authored on — the rig it was built against
  • Frames and Length — how long it runs
  • Properties — how many events it fires and how many settings are hung off it
  • Notes — flagged when the clip is unusual; additive means it layers over whatever else is playing rather than replacing it

Hover a row for its full path, plus any non-standard metadata it carries — how far a locomotion clip travels, where an aim clip points, which sound an audio event fires and from which bone.

A clip that could not be read is greyed out and says so in Notes. That is a defect in the file rather than in the clip you asked for, and the rest of the list still works.

The line beside the buttons summarises the selection — frame count and frame rate, bone count, float tracks if it has any, and the rig it was authored on with that rig's bone count. The status bar along the very bottom counts the sets and clips in the PAK, and reports when it is being written.

Previewing

Select a clip and hit Preview… (or double-click it) to open the Animation Preview window, shown below, and watch it play.

The Animation Preview window showing the alien mesh mid-animation in the 3D viewport, the parts-of-the-mesh checklist on the right, the event marker timeline underneath with a marker selected, and the play, speed, loop and display toggles along the bottom.

Animation Preview playing an ALIEN clip: the mesh above, the clip's event markers in lanes below.

Nothing in the game's data records which model goes with which animation set, so the first time you preview a set you're asked to pick one. Use Choose Mesh… to select a model and Choose Rig… to select a skeleton. Both choices are remembered per animation set, so you only do it once per character. The two lines beside those buttons say what's in use: the mesh, and the rig with its bone count — plus, when the clip was authored on a different rig, the route it was retargeted along. When something might otherwise look like a fault — a limb the clip never moves, an additive clip shown over the bind pose, a mesh that isn't skinned to the rig you picked — an amber note underneath says so.

Playback controls:

  • Play / Pause, a frame and time readout, a scrub ruler along the top of the timeline, and a Speed dropdown from 0.1x to 2x
  • Loop — repeat rather than stopping at the end
  • Root motion — let the clip carry the character across the scene instead of holding it on the spot
  • Show mesh, Show rig, Show textures — draw the model, the skeleton, and the model's materials
  • Parts of the mesh — show or hide individual pieces, grouped by LOD with each piece's vertex count; the first LOD starts on and the rest off. Show all / Hide all flip the lot

Underneath the viewport is the clip's timeline of markers — the moments the clip fires something, one lane per event name. Click a marker and the line beneath the timeline says when it fires and what it does: a footstep sound, an effect, a gameplay callback — or, as with the marker selected in the screenshot, that it's a named moment with nothing attached.

Export… in this window writes out the clip and the mesh it's playing on together.

Exporting

Export All… writes every clip currently listed. Select more than one row and the button becomes Export Selected… and writes just those. Everything goes into a single file.

Available formats are FBX, glTF (.gltf / .glb) and COLLADA — the formats that can actually carry an animation. OBJ isn't offered here for that reason.

Because a large export can be very large indeed, OpenCAGE checks the clip count, bone count and frame count against the format you chose and warns you before writing if the result is going to be big.

Clips that couldn't be read are skipped, and the summary at the end tells you how many were left out.

Choosing a Rig

An animation is only meaningful against a skeleton, so exporting opens the Choose a skeleton dialog shown below and asks which one to write it against. Each rig is listed with its bone count and how many of the clips being exported were authored on it. There's no guessing involved — the clips name the rig they were authored on, and that one sorts to the top of the list and is pre-selected. Everything else is there if you want to experiment with retargeting.

The Choose a skeleton dialog listing rigs with their bone counts, the rig the clips were authored on pre-selected at the top, and the Export as dropdown set to For viewing - held on the spot.

Export asks for a rig; the one the clips were authored on is pre-selected, and the Export as mode sits underneath.

Export Modes

The Export as dropdown at the bottom of that dialog decides what happens to bones the clip never mentions, and to the root. Viewing and re-importing want different things from the same clip:

  • For viewing - held on the spot — bones the clip doesn't touch stay at the rig's rest pose, so the character still looks like itself. Root motion is ignored and the animation plays in place.
  • For viewing - travelling as the clip carries it — as above, but the root moves, so a walk cycle walks.
  • For editing and re-importing - exactly what the clip holds — writes precisely what's stored, including the root as the engine sees it. This is the one to use if you intend to edit the animation and bring it back in.

A rig rests its root a long way from identity, so an export that looks right is not necessarily an export that can come back in. If you're round-tripping an animation, always use For editing and re-importing.

Importing

Select the animation set you want the clip to belong to, then hit Import… and pick an FBX, glTF, GLB or COLLADA file. The Import animation into … dialog opens, titled after the set you chose and pictured below, showing what OpenCAGE found in the file and everything that has to be decided before it goes in. Nothing is committed until you press Import.

The Import animation into ALIEN dialog showing the file path, the play-by name and stored-as path, the rig, root bone and frame rate dropdowns, and a summary reporting 196 frames and that the mannequin animation was converted onto the game's skeleton.

Import animation, reading a mannequin clip ("Orange justice" by Coldary on Sketchfab, CC-BY 4.0) onto the ALIEN set — the summary says it was converted rather than matched by name.

Once you do, the clip is added to the set and ANIMATION.PAK is written straight away — an import that isn't saved has done nothing, so there's no separate save step. The clip list refreshes with your new animation selected.

Import Options

  • Play it by — the name the set will use to reference the clip. Defaults to the filename, sanitised.
  • Stored as — the path the clip takes inside the PAK.
  • Rig — the skeleton the animation is built against. The rigs the chosen set can use are offered.
  • Root bone — what to do with the rig's root, which belongs to the engine rather than the rig. Automatic - carry the character only if the file moves the root is the default and is usually right; Leave the root to the game, whatever the file does forces it; Keep as authored, root motion and all writes out root motion exactly as the file has it.
  • Frame rate — As the file says, or force 24, 25, 30 or 60 fps.
  • Layer over what is already playing — makes the clip additive rather than replacing whatever else is running.

The summary panel updates every time you change something: how many frames and how long, how many of the file's animated nodes matched a bone on the rig (or, for a converted file, how many of the rig's bones it drives), what the file itself claims its frame rate is, and what will happen to the root. Use it to check the import before committing — if a file that should already be on the rig only matches a handful of nodes, something is wrong with the rig choice.

Preview… opens the animation preview on the imported result, so you can look at it rather than guess.

The root bone setting is what turns a character round. If an imported animation comes out facing the wrong way or sliding across the floor, that's the first option to revisit.

Retargeting

Import normally matches the file's nodes to the rig's bones by name, which requires the file to already be on that rig — in practice, that it came out of OpenCAGE in the first place.

Animation you find online generally isn't. Most of it is built on the Unreal Engine mannequin, which has different bone names, different proportions, and a different idea of which way is left. For those files OpenCAGE works out the corrective from the two rest poses and rebuilds the animation on the game's rig by itself — when it has, the summary reads Converted from the file's own skeleton onto …, as in the screenshot above, rather than reporting how many nodes matched by name.

There is nothing to switch on. The conversion is applied when none of the file's nodes match a bone by name, the file looks like a rig OpenCAGE recognises, and the Rig you chose is one it can build onto. A file that already matches by name is imported as-is; one that matches nothing and can't be converted is reported as This can't be imported, with the reason.

Both the humanoid rigs and the alien are supported targets. Bones the game's rig has and the mannequin doesn't — the alien's tail, spikes and jaw, a human's armour bones — keep their rest shape and ride their parent, which is normal rather than an error. In the screenshot above the mannequin drives 20 of the alien's 127 bones. The game's rig keeps its own bone lengths, too; only the angles come across. If the two rigs turn out to be mirror images of each other, the summary says so; that's also normal and is handled.

Using it as a Picker

Animation parameters used to be filled from a plain list of enum strings. They now open this window instead, so you can see what a clip is called, how long it runs and what it fires before committing to it.

The window opens titled Choose an animation (or Choose an animation set), on whatever the entity is already set to — right down to selecting the animation itself and scrolling to it — and an extra button appears at the bottom between Import… and Preview…: Use This Animation (or Use This Set for an animation set parameter), which hands the choice back to the parameter, as shown below. Double-clicking a row picks it.

The animation browser opened as a picker, titled Choose an animation, with the current clip pre-selected and a Use This Animation button added between Import and Preview.

The same window opened from an animation parameter: the clip the entity already uses is selected, and Use This Animation sits between Import… and Preview….

An animation parameter stores the name the set plays the clip by, and an animation set parameter stores the set's own name. Neither stores a path.