Stereo

Stereo Workflow

Stereo (HMC) is the highest-fidelity job type — the depth-constrained solve resolves facial geometry that monocular footage cannot. In exchange each take needs two parent assets for its actor first: a camera calibration and a prepared MetaHuman Identity. The queue produces both and chains them for you.

Pipeline stages

Requires
Camera Calibration CreateCalibrateStereo
->
Identity CreateMHID_<Actor>
Then solves
Validate Input
->
Generate DepthStereo only
->
Clean DepthOptional
->
Process Performance
->
Export + Save
Depth generation is serial. Even when Max Concurrent Jobs is above 1, depth generation for all stereo jobs completes before any job enters the concurrent processing pool. Depth is skipped when the take already has a linked depth sequence.

Required assets

AssetTypeNotes
Capture Data UFootageCaptureData Must reference both camera image sequences
Identity UMetaHumanIdentity Auto-discovered under the actor folder; built by an Identity Create job
Camera Calibration UCameraCalibration Required for depth generation; auto-discovered, or built by a Calibration job

The parent chain

Stereo is a family of three job types in a strict dependency order. The first two exist only to produce the assets the third consumes:

TierJobProducesBlocks until ready
1 CalibrateStereo A CameraCalibration from a checkerboard take, linked to the take and discoverable by the actor's other takes. -
2 Identity Create A rigged, prepared MetaHumanIdentity (MHID_<Actor>), built from an identity take using the calibration. Needs the calibration (for depth). Runs in an interactive editor (cloud AutoRig login).
3 Stereo performance A Performance asset + face AnimSequence — a depth-constrained solve. Needs both the calibration and the prepared identity for its actor.
The iron rule: a stereo take never processes without both parent assets for its actor. Depth is generated from the calibration before the solve, so a bad calibration would poison every take built on it — which is why the calibration quality gates sit upstream. Mono and Audio jobs depend on neither and never wait.

Queue in any order

Execution ignores row order: the batch runs CalibrateStereo first, Identity Create second, everything else third, so prerequisites exist by the time a take preflights. The queue is strictly serial (Epic's single-performance lock), and takes classify by name — grid / calib tokens become CalibrateStereo, identity / dna become Identity Create. Drop a whole actor folder in at once and let the tiers sort themselves out.

Worked example. Queue everything under Imports/Aaron/ in any order and press Start:
  1. Aaron_Calib_Grid runs first (CalibrateStereo) -> a Camera Calibration next to the take.
  2. Aaron_Identity_DNA runs second (Identity Create): depth with that calibration -> neutral track -> conform -> AutoRig -> MHID_Aaron.
  3. Aaron_Take01..N run last (Stereo): preflight links the calibration and MHID_Aaron, and each take produces a Performance + AnimSequence.
  4. Takes queued before their prerequisites simply wait as a blocked status and resume automatically once the parent completes.

Stereo-specific options

Solve Type Selects the internal stereo solver variant. Leave at default unless directed by Epic support.
Head Movement Reference Frame Frame used as the identity reference for head-movement correction. Set to a neutral, stable, forward-facing frame.
Face Coverage / Width Thresholds Minimum proportion of the face visible in depth, and minimum face width in depth pixels, for a frame to be used. Raise to filter partial-face or too-distant frames.
Baseline / Scale Tolerance Acceptable deviation between the calibrated stereo geometry and the live footage. Increase if the rig was adjusted between calibration and capture.
Enable Depth Cleaning + Depth Clamp Min/Max Runs the hole-filling pass (below) before the solve; the clamp clips out-of-range depth before cleaning to eliminate background noise.
See Per-Job Options for the full stereo parameter reference.

Depth Clean-Up Pass

An optional Clean Depth stage between depth generation and the solve. It is not a blur or global denoise — it distinguishes background from subject by flood-filling inward from the image border, then patches only genuine interior gaps (dropouts inside the face/body silhouette) with a distance-weighted average of surrounding valid depth. Background and out-of-range pixels are left alone rather than smeared.

Non-destructive Writes a new _Cleaned copy of the depth sequence on disk and as a new asset — the original capture data is never modified.
Asynchronous EXR I/O and pixel work run on the thread pool, not the game thread — the editor stays responsive and the pass is cancellable mid-run.
Idempotent Re-running a job that already has a cleaned sequence re-cleans from the newest source rather than stacking passes.

Calibration & Identity jobs

Stereo Calibration

Right-click a checkerboard take and choose Generate Stereo Calibration (Checkerboard Take), or let name tokens (grid/calib) classify it. It drives Epic's MetaHuman Calibration Processing plugin (UE 5.7+) and produces a CC_<TakeName> asset linked to the Capture Data, plus an optional OpenCV calib.json on disk. The board is measured in squares, not inner corners (Epic's shipped board is 11 x 16 at 0.75 cm), and Auto-Detect probes candidate sizes before the full scan. Frame selection, sharpness, board override, and the quality gates live under Global Settings -> Stereo Calibration.

Identity Create

Right-click a stereo identity take and choose Create MetaHuman Identity (Stereo), or let identity/dna tokens classify it. It generates depth, tracks the neutral frame, conforms the template mesh, runs Epic's cloud AutoRig, and prepares the identity for performance (MHID_<Actor>). A finished identity is reused across the actor's takes — delete the asset to force a rebuild.

Identity Create needs an interactive editor session for the cloud AutoRig login, so it is not available in headless / CI runs. Build identities in the editor first, then batch the performance solves.

Discovery and blocked states

Discovery is scoped to the actor's folders, which is why keeping a shoot's takes under one actor folder matters:

  • Calibration lookup: already linked on the Capture Data -> capture parent folder -> take folder -> sibling take folders -> one level higher, never past /Game.
  • Identity lookup: capture parent folder -> actor folder, preferring MHID_<Actor>.
  • Rejected calibrations (set aside for poor quality) are invisible to every lookup until you accept or re-solve them.
StatusMeaning & how it clears
MissingCalibration No calibration found for the actor yet. Requeues automatically the moment one appears (a Calibration job finishes, or you link the asset).
MissingIdentity No prepared identity found for the actor yet. Requeues automatically once one exists.
PoorCalibrationQuality A calibration solved but exceeded a quality gate and was set aside. Waits for an explicit decision — Accept Anyway, or a better re-solve. See Calibration settings.