Website powered by

Invincible Presents: Atom Eve - The Anatomy of the Rigs

One of my roles on Invincible Presents: Atom Eve, was to take our existing proprietary rig system (made by the wonderfully talented Chris Zuko) and setup the pipeline to bring all the character art made by our art team into engine for the animation team to use. I was also tasked with being able to understand how to expand the existing system, whether it's for one-off cases or new features desired.
https://store.steampowered.com/app/2060870/Invincible_Presents_Atom_Eve/

Before diving too much into how each rig is created, it's important to understand that we opted for a "Pose-to-Pose" animation style.
This means we keyframe individual parts of the rig based on the overall expression we want to convey.

Here's an example of what that pose-to-pose style animation looks in-game.

Using Unreal Sequencer with this rigging methodology makes it easy for animators to quickly set scenes up and iterate, especially if there are changes to the dialogue or the rig.

The reasoning behind how a lot of these textures are broken up is to create a robust set of advanced rig controls that control the position of layered sprites on a single material to create accurate masks and allow a wide array of expressions.

Each character is comprised of multiple atlasses. We build up from the base face layer to add in the sclera and eyelashes, then eyebrows (separately so that we have independent eyebrow controls).

Here's a bit of an exploded view of what all the atlasses pieces look like together and layered.

Here's a bit of an exploded view of what all the atlasses pieces look like together and layered.

Similar to how atlassing is done for faces, we create an atlas for the body so that we can split everything up into individual sprites.

Similar to how atlassing is done for faces, we create an atlas for the body so that we can split everything up into individual sprites.

I'll be covering how the shader works more in-depthly in a separate post. The general synopsis though is that we simply use alpha channels of atlasses that we crop based on the selected facial expression that we can access via Custom Primitive Data.

I'll be covering how the shader works more in-depthly in a separate post. The general synopsis though is that we simply use alpha channels of atlasses that we crop based on the selected facial expression that we can access via Custom Primitive Data.

One of the coolest parts of everything deriving from Atlasses, is that we can easily change a huge variety of parameters while maintaining consistency.

This also includes creating custom per-rig controls for any rig-specific effects we might want!