Global Settings

Global settings apply to every job in the queue. They are configured once in the settings panel at the top of the MHA Manager tab. Settings persist between sessions and are saved in the batch manifest.

UE Export Directory Default: Off (/Game/MHA_Batch when enabled)

When disabled, generated Performance and animation assets are saved next to the source Capture Data asset. Enable it to collect everything in one Content Browser folder instead — use a project-relative path starting with /Game/.

Flat Export (UE) Default: Enabled

Places all generated assets directly in the UE Export Directory. Disable to create a per-take subfolder named after the source Capture Data's folder.

Do Not Re-Process Solved Takes Default: Enabled

When enabled, any job whose UMetaHumanPerformance asset already exists at the output path is skipped automatically. Useful when re-running a batch after a partial failure — completed jobs are not duplicated.

Max Concurrent Jobs Default: 1

How many takes are solved simultaneously (1–8). Sequential mode (1) is the safest and lowest-memory option. Values above 1 launch separate worker processes that each solve a take side by side — real parallelism, since Epic's MetaHuman pipeline only allows one solve per editor instance.

2 is a good fit for 32 GB+ RAM and a mid-range GPU (~40–60% faster wall-clock on large queues). 3–4 needs workstation-class hardware (64 GB+, RTX 3090/4090). Stereo depth generation still runs serially before jobs enter the parallel pool.
Export AnimSequence Default: Enabled

Bakes the solved performance into a UAnimSequence asset on the MetaHuman skeleton. Disable if you only need the raw Performance asset.

Export LevelSequence Default: Disabled

Additionally bakes the animation into a ULevelSequence asset — framed, self-lit, and playable on its own. The lighting rig, face binding, and preview backdrop have their own settings; see Level Sequence Preview.

Export FBX For DCC Default: Disabled

Writes the job-appropriate FBX for Maya, Blender, and other DCC tools. One toggle, not two — the form is derived from the solve: body-tracking jobs get the baked-joint <name>_DCC.fbx, face jobs get the animator-editable Control Rig <name>_CR.fbx. See Exports.

Export Take Audio (WAV) Default: Enabled

Writes the take's audio beside the exported FBX as <AnimName>.wav, trimmed and timecode-aligned to the same range the FBX animation covers, so audio and animation line up at frame 0 in the DCC. Skipped when the take has no audio track.

DCC Export Directory Default: Saved/MHAManager/Exports

Disk folder where the FBX files are written. Open Export Folder in the toolbar opens whatever it is currently set to.

DCC Export Layout Default: Per Take

Folder structure under the export directory: Per Take (a subfolder per source take), Actor / Part (<Actor>/Face or /Body), or Flat (everything in one folder).

Overwrite Existing Default: Enabled

Overwrites assets at the output path if they already exist. Disable to protect previously exported assets from being replaced on re-runs.

Force Export Animation Default: Disabled

Re-exports a job's AnimSequence even when Overwrite Existing Assets is off and an AnimSequence already exists at the output path. Only affects AnimSequence export — other asset types (Performance, LevelSequence) still respect the overwrite setting.

Use this when you've changed export settings (curve interpolation, head movement, etc.) and want updated animation without re-running the full solve or touching other output assets.
Auto-Open After Export Default: Disabled

Opens the exported AnimSequence in its asset editor automatically when a job completes. Has no effect in headless/CI runs.

Use MetaHuman ID for Output Mesh Default: Enabled

When enabled, the exported AnimSequence targets the skeleton of the specific UMetaHumanIdentity assigned to the job. When disabled, a generic archetype skeleton is used instead — useful if the Identity is a placeholder.

Reduce Control Rig Keys Default: Disabled

Thins the Control Rig bake before FBX export. The bake writes one key per frame on every channel and Epic's own Control Rig FBX exporter has no key-reduction option, so dense bakes stay dense. This drops keys that do not meaningfully change the curve, refitting tangents to compensate, shrinking the file with minimal visual difference.

Force D3D12 Default: Disabled

Forces the Direct3D 12 graphics backend for the performance solve. Some systems see better GPU utilization with D3D12. Leave disabled unless you have a specific reason to override the project's default RHI.

Add Skeleton Compatibility Default: Enabled

Auto-registers a body export's target skeleton as compatible with the MetaHuman base skeleton, so Face and Body animation can be retargeted and played back together without a manual compatibility setup step.

Body Target Skeletal Mesh Default: Plugin default (SKM_Body)

Global default USkeletalMesh used for body-tracked jobs whose Body Export Skeleton is set to Existing Skeleton. Any per-job Body Target Mesh override takes priority over this.

Retargeter Output Path Default: /Game/CaptureManager/BodyTrackerTargets

Content Browser folder where + Create Retargeter... saves new IK Retargeter assets, named RTG_SMPL_<MeshName> automatically.

Solve Defaults — per-category templates

The Solve Defaults section — pick a category, edit its template with the same panel a real job uses
Solve Defaults section — Mono / Stereo / Audio picker at top, embedded job-settings panel below editing the Mono template with Body Tracking toggle visible

New jobs inherit their starting solve options from one of three templates, chosen by the job's solve category: Mono, Stereo, or Audio. Set your preferred options once per category instead of per job. The Solve Defaults section in the settings panel shows a 3-way picker above an embedded job-settings panel — it is the same widget used for a queued job, editing the chosen template instead of a specific job.

A new job is seeded from the template matching its category at creation time. If a queued job's category later changes (e.g. its Type changes from Mono to Stereo), its options are re-seeded from the newly matching template — frame exclusions marked on the job are preserved, everything else resets. Asset-picker fields you leave empty are pre-filled with the engine's real defaults on startup, so the UI shows the actual asset that will be used; your own choices are never overwritten. The Stereo and Audio templates default their Control Rig Class to Face_ControlBoard_CtrlRig — the only rig whose control names line up with MetaHuman's facial curve data.

Stereo Calibration settings

These settings control Stereo Calibration jobs queued from checkerboard takes. A bad calibration poisons the depth of every take built on it, so the two quality gates below sit upstream of processing.

Both gates are trust gates, not silent filters. A calibration that exceeds either threshold is set aside and its job pauses as PoorCalibrationQuality — dependent takes wait rather than consume it. You then Accept Anyway or re-solve; the pipeline never quietly ships or drops a questionable calibration.
Board Pattern W / H Default: 11 x 16

Checkerboard dimensions measured in squares, not inner corners. The defaults match Epic's shipped calibration board (11 x 16 squares). With the board override off these are learned state — the auto-detect probe writes its winning dimensions back here to seed the next run.

Square Size Default: 0.75 cm

Physical size of one board square. This cannot be measured from footage — a wrong value silently scales the stereo baseline and therefore all reconstructed depth. Measure your printed board. Only takes effect while Override Default Board is on.

Override Default Board Default: Off

Off, the plugin assumes Epic's shipped board and lets Board Pattern and Square Size auto-detect. On, your Board Pattern W/H and Square Size are pinned verbatim — the probe only tries them and their swapped orientation, and detection never writes back over them. Use this for a non-Epic board. You can save named boards as presets in this sub-section and switch between them.

Auto-Detect Board Pattern Default: Enabled

Probes a handful of frames across the take with candidate board sizes (your setting, its transpose, an inner-corner misentry, Epic's board) before committing to the full-take scan. If nothing detects, the job fails in seconds with a clear error — wrong board dimensions are the most common cause of "calibration runs forever and produces nothing".

Sharpness Threshold Default: 5.0 px (auto-tunes)

Rejects blurry frames during calibration frame selection, and auto-tunes — the last winning value is stored and reused on locked-frame retries. If fewer than 10 frames pass, one retry runs with the filter disabled; final quality is then judged by Max RMS Error.

Max RMS Error Default: 1.0 px

The primary quality gate. Calibration is ranked by out-of-sample validation RMS — error measured on frames it did not train on — because a solve's own training error overfits and hides a bad result. Above this value the job pauses as PoorCalibrationQuality.

Why 1.0. On a reference rig, downstream solve quality was flat across validation RMS 0.6–1.1 px and clearly degraded by 2.4 px (depth coverage −5%, jitter +58%), with the quality knee between the two. A tighter gate like 0.5 rejects even a rig's best achievable solve; 1.0 accepts the healthy range and rejects the degraded tail with margin. Treat 0.8–1.2 as a sensible window, not a universal constant.
Min Calibration Diagnostics Score Default: 0.5

A second, coarser gate on Epic's 0–1 diagnostics score, evaluated against the consuming take's own footage. It catches structurally broken calibrations (a wrong-route solve scores around 0.2) but cannot rank frame-set quality — a slightly worse calibration can score marginally higher. Leave it as a structural safety net; do not tighten it expecting finer quality discrimination. Below this value the job pauses.

Export calib.json Default: Off

Also writes an OpenCV-model calib.json into the take's footage folder on disk, in the format Capture Manager's stereo HMC ingest reads. An existing calib.json is never overwritten.