You can process many capture data assets into camera calibration assets in a single automated pass, from Blueprint or Python. This replaces opening each take in the Calibration Generator tool one at a time.
Calibration accumulates across a shoot. You capture calibration footage at the start and the end of every capture session. Capture it again any time the helmet is adjusted or the cameras move. A single multi-day shoot with several performers therefore produces dozens of calibration takes. Each take needs its own camera calibration asset before you can turn that session's footage into depth data.
This page describes how to batch that work. You provide your captures and board configuration, and the system handles frame selection, pattern detection, and calibration asset creation automatically - with a progress dialog and the ability to cancel at any time.
You can call everything on this page from both Blueprint and Python. Both use the same three functions. This page shows Blueprint graphs first, with the equivalent Python scripts at the end.
Batching does not improve the footage. The automated pass runs the same frame selection and stereo solve as the interactive tool. A take with a blurred, occluded, or poorly distributed checkerboard produces a poor calibration whether you process it by hand or in a batch of fifty. To learn more about capture best practices, see Calibration Takes.
Prerequisites
To batch process camera calibrations, you need:
Unreal Engine 5.6 or later.
The MetaHuman Calibration Processing plugin enabled in your project (Edit > Plugins). The plugin also ships a printable board pattern at /Engine/Plugins/MetaHuman/MetaHumanCalibrationProcessing/Content/Boards.
The Python Editor Script Plugin is enabled if you intend to use the Python examples.
At least one Footage Capture Data asset containing two or more Image Sequences — one per stereo camera — with compatible frame rates. Its image sequences must point at valid on-disk image directories (PNG or JPG).
The dimensions of the physical checkerboard used during recording: the number of squares wide, the number of squares tall, and the square size.
Calibration footage captured according to the guidelines on Calibration Takes.
The default board configuration matches the standard MetaHuman calibration board: 11 × 16 squares with a square size of 0.75 cm. If you use the standard board, you can create a default Calibration Generator Config object without changing any values.
Capture data assets come from ingest. You can produce them from script with the functions described in Download and Ingest Takes with Blueprints and Python, or through the Live Link Hub ingest path documented in Python Scripting Capture Manager. Both routes produce the same assets. This page assumes you already have assets in your project.
Where the Blueprint Nodes Live
These are editor-scripting nodes, so they only execute in an editor context. Place them in one of the following:
Editor Utility Blueprint: Right-click in the Content Browser and select Editor Utilities > Editor Utility Blueprint, then run it from its context menu.
Editor Utility Widget: Right-click in the Content Browser and select Editor Utilities > Editor Utility Widget, then use Right-click > Run Editor Utility Widget to open it as a dockable editor panel. Use this host for a tool that an artist or coordinator runs, because the batch is long-running and the widget provides a place for a start button and a results list.
A plain Blueprint class or a Level Blueprint cannot call these nodes. If a node does not appear in your graph, confirm that you are in an Editor Utility asset and that MetaHuman Calibration Processing is enabled.
While a batch runs, a progress dialog reports which asset it is processing and the overall batch progress. You can cancel at any time. The batch keeps results that are already completed and returns the remaining assets marked as canceled.
The Three Batch Functions
Three functions are available, at increasing levels of control:
| Function | Description |
|---|---|
Batch Generate Camera Calibration | provideS captures and board config, everything else is automatic. |
Batch Generate Camera Calibration With Options | Full control with per-asset options for output paths, frame selection, sharpness filtering, and areas of interest. |
Construct Default Options For Capture Data | Helper that builds a default Options object you can customize before passing to the advanced function. |
Batch Calibration with Default Options
The base workflow for batch-processing calibrations uses the Batch Generate Camera Calibration function. It takes two inputs:
Capture Data Assets: An array of Footage Capture Data assets to process.
Board Config: A Calibration Generator Config object describing your chessboard pattern.
Workflow
To run a batch:
Create or collect your capture data assets into an array.
Create a MetaHuman Calibration Generator Config object. Set Board Pattern Width, Board Pattern Height, and Board Square Size if your board differs from the defaults.
Call Batch Generate Camera Calibration, passing in the asset array and the config.
Iterate over the returned Batch Results array to check success and inspect calibration quality.
For each asset, the function automatically:
Constructs default output options.
Names the calibration asset CC_<AssetName> and saves it next to the source asset in the Content Browser.
Performs automatic frame selection by sampling footage, identifying chessboard patterns across both cameras, and applying filters based on position variance and frame coverage
Runs stereo calibration and creates a camera calibration asset.
Saves the created assets.
A progress dialog shows which asset is being processed and overall batch progress. You can cancel at any time-completed results are kept, and remaining assets are marked as canceled.
Batch Calibration with Per-Asset Options
When you need per-asset control, use Batch Generate Camera Calibration With Options. This function takes an additional Options Per Asset array where each entry is paired with the capture data asset at the same index.
The Capture Data Assets array and Options Per Asset array must be the same length.
Creating Options
Use Construct Default Options For Capture Data to build a starting-point options object for each asset. This populates defaults that you can then modify before processing.
The options correspond to the Options tab of the interactive Calibration Generator tool. To learn more, see Generate Calibration.
| Option | Default | Description |
|---|---|---|
Asset Name | CC_<CaptureDataName> | Name of the output camera calibration asset. |
Package Path | Same directory as the source asset | The location in the project to store the created assets. Defaults to the foldercontaining the source asset. |
Auto Save Assets | True | Whether to save the generated assets automatically. |
Selected Frames | Empty (auto-select) | Specific frame indices to use. When empty, automatic frame selection runs. |
Sharpness Threshold | 5.0 | Whether to save the generated assets automatically. |
Area of Interests For Cameras | Full frame bounds | Region of each camera image to search for the chessboard pattern. |
Workflow
To run the batch with per-asset options:
For each capture data asset, call Construct Default Options For Capture Data to create an Options object.
Modify any properties you want to override.
Collect the Options objects into an array in the same order as your capture data assets.
Call Batch Generate Camera Calibration With Options, passing the asset array, board config, and options array.
Whether to save the generated assets automatically as described in the Processing Results section of this page.
Specifying Frames Manually
If you already know which frames to use, set the Selected Frames array on the options object to a list of frame indices. When that array is populated, the function skips automatic frame selection and processes only the frames you named.
Narrowing the Area of Interest
When that array is populated, the function skips automatic frame selection and processes only the frames you named. By default, the area of interest spans the full frame resolution for each camera.
Processing Results
Both batch functions return an array of results — one per input asset, in input order. Each result reports whether that asset succeeded, the location of its Camera Calibration asset, the reprojection error of the solve, and the reason for any failure.
| Field | Type | Description |
|---|---|---|
Capture Data | Footage Capture Data | References back to the source asset that was processed. |
Success | Boolean | Whether calibration succeeded for this asset. |
Error Message | String | Description of what went wrong. Empty on success. |
RMS Error | Float | Root-mean-square reprojection error in pixels. Lower values indicate more accurate calibration. |
Calibration Asset Path | String | Content Browser path to the created camera calibration asset. Empty on failure. |
A typical successful calibration produces an RMS error below 1.0. Values above 1.0 may indicate problems with the footage quality or board configuration.
Python Scripting
All three batch functions are accessible from Python through the Unreal Editor scripting API. The functions are exposed on unreal.MetaHumanCalibrationBatchLibrary.
import unreal
# Load Capture Data assets
capture_assets = [
unreal.load_asset("/Game/Captures/Day1_StereoCapture"),
unreal.load_asset("/Game/Captures/Day2_StereoCapture"),
unreal.load_asset("/Game/Captures/Day3_StereoCapture"),
]
# Create board config (defaults match the standard MetaHuman board)
import unreal
batch_lib = unreal.MetaHumanCalibrationBatchLibrary
capture_assets = [
unreal.load_asset("/Game/Captures/Calibrations_A"),
unreal.load_asset("/Game/Captures/Calibrations_B"),
]
# Build and customize options for each asset