Kovati Docs

Correction

An animator's fix that survives the solve being re-run underneath it.

Documented in depthFaceForge0.2.2Open source

The usual bargain with a generated face is: accept it, or fix it and give up regenerating. FaceForge does not make you take that bargain.

The round trip

Create the correction sequence

CreateFaceCorrectionSequence — or Correct in Sequencer on the Face Bank panel — builds a Level Sequence with:

  • the character's face mesh and the clip's audio,
  • the merged solve keyed on an absolute base section, and
  • an empty additive section on top.
The Unreal editor in Animation Mode with LS_Face_GEN_Astro_Offer open. The viewport shows a MetaHuman head and shoulders selected with an orange outline, surrounded by the dotted control shapes of the face board rig. An Anim Outliner on the right lists SKM_MH_Demo_Person_2_FaceMesh, then Face_ControlBoard_CtrlRig, then controls CTRL_C_eyesAim, CTRL_L_eyeAim, CTRL_R_eyeAim, FRM_convergenceGUI, CTRL_convergenceSwitch, MH_FACIAL_BOARD and CTRL_C_jaw. At the bottom, Sequencer shows the audio track SW_GEN_Astro_Offer with its waveform, the SKM_MH_Demo_Per binding, and two stacked Face_ControlBoard sections — one dense with keys on every frame, one empty below it — above rows of CTRL channels.
An ordinary Sequencer session with an ordinary control rig. The face board is the same one a MetaHuman animator already uses; nothing here is a FaceForge-specific editor, which is the point — the animator does not have to learn a new tool to fix a mouth.

The two stacked sections are the whole mechanism:

A close view of the Sequencer panel for LS_Face_GEN_Astro_Offer at 30 fps. The track list shows an unnamed audio track, the SKM_MH_Demo_Per binding, and three nested Face_ControlBoard rows above a column of CTRL channels. In the timeline, the audio section SW_GEN_Astro_Offer carries a speech waveform across roughly 200 frames; below it sits a section whose key row is dense with keys on every single frame, and beneath that a second, green-outlined section holding none.
The keyed section is the solve, written on every frame. The empty one below it is where the animator works. A re-solve rewrites the first and never touches the second — which is the entire trick.

The animator keys the additive section only

Normal Sequencer work. The base sits underneath, read-only.

Snapshot it back

SnapshotFaceCorrection reads the additive section back as offsets into a Corrective layer on the clip.

Because the fix is stored as offsets in a layer rather than as edited curves, the base solve can be re-run underneath it without discarding the hand work.

Verified live, frame-exact.

Why this is the interesting one

Every other part of this family protects hand-authored work by stoppinggraduation means automation lets go of the asset entirely.

That is the right default, and it has a cost: a graduated asset stops benefiting from improvements to the generator.

The correction layer is the narrow case where you get both. The animator's intent is expressed as a difference, so a better base solve arrives underneath it and the difference still means what it meant.

This only works because the correction is genuinely additive. An animator who rebuilds a curve absolutely, rather than offsetting it, has authored a new solve — and that graduates, correctly.

It needs the board vocabulary

The correction round trip only works on a clip solved in the MetaHuman face-board vocabulary, because the sequence it builds is that board. The Face Bank panel greys Correct in Sequencer out otherwise and says so in its tooltip.

In practice that means an audio solve can be corrected this way and a video solve cannot — not because the character is wrong, but because its curves are in a different control set. The two clips in the same bank behave differently, which looks arbitrary until you know what the button is actually asking for.

Corrective as a layer

The Corrective layer is an ordinary layer: it participates in the merge recipe, carries a weight, and can be removed.

So a correction can be dialled back rather than only kept or discarded — which is useful when a fix made for one delivery is nearly right for another.

When a dub arrives

A dubbed line's face copies the performance's layers under the dubbed mouth, rather than solving from audio alone.

That is the same principle: the acting captured in the original performance is layered content, so it survives the mouth underneath it being replaced. See localisation.

On this page