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
| Field | Meaning |
|---|---|
port | UDP port the video arrives on. |
surface_type | plane (flat) or sphere (fisheye dome). |
aspect_ratio | Width ÷ height of the video. |
scale | Size of the surface. |
pose0 | Position + orientation as [[x,y,z],[qx,qy,qz,qw]]. |
h_fov_deg | Horizontal field of view, used for projecting overlays. |
vh_pos, vh_quat | Camera 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:
| Field | Meaning |
|---|---|
K | 3×3 camera matrix (focal lengths + principal point), as 9 numbers. |
D | 4 fisheye distortion coefficients. |
corr_ori | The image resolution the calibration was done at, e.g. [1280, 720]. |
sphere_fov_deg | Angular extent of the dome (default 180). |
sphere_radius_m | How far out the dome surface sits (default 2.0). |
sphere_res | Mesh 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]
}
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.
Recentering
Press Right stick click (or use Recenter View in the menu) to bring all camera surfaces back in front of your current gaze.