Calibrate, Refine, and Sync
This article describes Phase 2 of a calibration. Calibrate solves each camera's pose, Refine improves it using the extra scenes you captured, and Sync pushes the result to Flowbit Capture.
Before you start
Check Capture the space to confirm you have enough phone photos and a ★ calibration frame. Refine also needs two or more scenes, and Sync needs Flowbit Capture running on this PC with the cameras streaming.
Run Calibrate
Set Options if you need them: the Reference camera, skip scale, and no GPU.
With the board chosen on card A, Reference reads Board (marker) and the board wins. Advanced COLMAP tuning lives in ⚙ Settings → Calibration.

Select Calibrate, and follow the progress bar and the expandable log.
Read the per-camera table. It shows registered ✓ or ✗, position, 3D points, and scale dev.
Drag to orbit the 3D view and check that no camera sits at a wild angle.
Press ⇄ Sync to capture backend.
Read the calibration result

Column | What it tells you | Investigate when |
|---|---|---|
registered | Whether the camera was placed in the world | ✗ |
position | Where the camera ended up | It disagrees with where the camera physically is |
3D points | How much evidence the solver had for this camera | TODO(software): threshold |
scale dev | How consistent the metric scale is | TODO(software): threshold |
NOTE
If a camera did not register, or its 3D points or scale dev is flagged, add close-up phone photos from that camera's viewpoint and calibrate again.
Run Refine
Check the input summary. Refine uses the scenes you captured.
Adjust the settings if you need to.
Tick show all for the advanced parameters. Scene-grouping controls live in ⚙ Settings → Refine defaults.

Select Refine.
Read the refine result

The result gives you:
Per-pair before and after metrics.
The size and shape split, which tells you how the rig moved.
The per-camera depth table, showing how repeatable each camera's own depth is and how much of the pair residual the sensors alone account for.
How many of your scenes the answer actually rests on, when that figure appears.
NOTE
Refine never replaces a good calibration with a worse one.
If the checks do not pass, the calibration you already have is kept. The checks go beyond asking whether the numbers improved. A rig that came back resized, turned, or changed in shape is refused even when every pair got better, because those are exactly the failures that better pair numbers reward.
If Refine kept the coarse result, or the button is greyed out, see Calibration troubleshooting.
Sync to Flowbit Capture
Select ⇄ Sync to capture backend. If you ran Refine, select ⇄ Sync refined to capture backend instead.
Switch to Flowbit Capture and select Reset view, to re-frame on the space, which has just moved.
Verify that the clouds fused into one space
Check that the sync chip in Flowbit Calibration reads synced · persists after restart.
NOTE
No cameras applied means the device IDs in the result do not match what Flowbit Capture is streaming.
Check
Devicesin Install and Run Flowbit Capture - Configure Flowbit Capture.Check that the clouds in Flowbit Capture have snapped into one space, with walls meeting walls and one floor. This updates on the next frame, with no restart.

Check that the amber "no calibration file" warning is replaced by the path to the calibration file in use.
For comparison, this is what an uncalibrated rig looks like. Every camera draws from the same origin, so the space comes out as one pile:

If the space looks doubled or skewed
Switch Extrinsics off in Flowbit Capture. Every camera then draws at the origin.
Compare the two views. If the clouds look right there and wrong when fused, the calibration is at fault. If they look wrong in both, the depth is.
Add phone photos covering the offending camera's viewpoint and calibrate again.
If Sync reports success but the space stays a pile, Calibration File in config\flowbit-capture.json names a different file than the one Flowbit Calibration wrote. The result was saved but never applied.
Save and load a calibration result
To save a copy instead of syncing, select ⬇ Download result beside either Sync button.
To load one back in, rename it to exactly calibration_result.json, put it in a folder of its own, and use Calibrate's 📁 Load a result folder….
Hand off to the SDK and Unity Plugin
Your rig is now calibrated. calibration_result.json lives in Flowbit Capture's config, and the Sensor → World extrinsics it holds are the same ones your application needs.
RESOLVE(software):
State the exact mechanism. Does the SDK read
calibration_result.jsondirectly, or must each matrix be copied intoconfig/<device-id>/sensor_config.jsonunder"Sensor to World Extrinsic"? The SDK documentation currently tells developers to compute and enter these matrices by hand, with no mention of Flowbit Calibration. Seedocs-restructure-plan/PLAN.md§4, gap 4.
You are done calibrating. Now you can build your application with the Flowbit Server SDK or the Flowbit Unity Plugin.