Cameras & video

Each camera is a video stream painted onto a surface in front of you — a flat plane, or a wraparound dome for ultra-wide fisheye lenses.

How cameras are defined

cameras.json is keyed by camera id (cam0, cam1, …). Each entry binds to a UDP port and is positioned by pose0 relative to your cockpit. The order they're defined sets their draw order: the first camera draws furthest back, later ones layer on top.

Common fields

FieldMeaning
portUDP port the video arrives on.
surface_typeplane (flat) or sphere (fisheye dome).
aspect_ratioWidth ÷ height of the video.
scaleSize of the surface.
pose0Position + orientation as [[x,y,z],[qx,qy,qz,qw]].
h_fov_degHorizontal field of view, used for projecting overlays.
vh_pos, vh_quatCamera mounting offset and rotation on the aircraft.

Flat plane cameras

The default. The stream is shown on a rectangular surface. Good for standard FPV cameras and zoomed/narrow lenses. Example:

"cam2": {
    "port": 5602,
    "surface_type": "plane",
    "aspect_ratio": 1.333333,
    "scale": 1.4,
    "pose0": [[-1.1, -1.3, -2.5], [-0.258819, 0, 0, 0.9659258]],
    "h_fov_deg": 50,
    "vh_pos": [5, 0, -20],
    "vh_quat": [0, 0.7071068, 0, 0.7071068]
}

Fisheye dome cameras

Ultra-wide lenses (180° and beyond) can't be flattened onto a plane without huge distortion. Setting surface_type to sphere wraps the raw fisheye image onto a spherical cap centered on your head, so turning to look around reveals the full wide field naturally.

A fisheye camera needs lens calibration so the image maps correctly:

FieldMeaning
K3×3 camera matrix (focal lengths + principal point), as 9 numbers.
D4 fisheye distortion coefficients.
corr_oriThe image resolution the calibration was done at, e.g. [1280, 720].
sphere_fov_degAngular extent of the dome (default 180).
sphere_radius_mHow far out the dome surface sits (default 2.0).
sphere_resMesh detail (default 64 — an N×N grid).
"cam0": {
    "port": 5600,
    "surface_type": "sphere",
    "aspect_ratio": 1.777777,
    "scale": 5,
    "pose0": [[0, 0, 0], [0, 0, 0, 1]],
    "h_fov_deg": 180,
    "K": [472.2468, 0, 641.8489, 0, 474.2150, 364.6162, 0, 0, 1],
    "D": [-0.0408, 0.0367, -0.0230, 0.0043],
    "corr_ori": [1280, 720]
}
Calibration must match The K/D values are only valid at the resolution they were calibrated at. corr_ori must equal that resolution, or the image will appear off-center or wrongly stretched.
Centered viewing A dome camera is drawn centered on your head, so its position offset is ignored — only its orientation aims the field of view. This is why head rotation reveals more of the scene rather than sliding the image.

Recentering

Press Right stick click (or use Recenter View in the menu) to bring all camera surfaces back in front of your current gaze.