SkyRender accepts four formats. Pick whichever your tooling exports β they all produce the same .bin under the hood.
π©οΈ .skyc β Skybrush show file recommended
The default export from Skybrush Studio. No conversion needed β just drag the file Skybrush produces straight into the uploader. Trajectories (cubic-Bezier waypoints) and LED programs are both read directly from the archive.
Coordinate convention is whatever you set in Skybrush; altitude maps to the vertical axis in the player. Source rate is sampled at 30 fps internally; output runtime is 6 fps to match the iOS app.
π¦ .zip β one CSV per drone
Bundle every per-drone CSV into a single zip. Naming examples: Drone 1.csv, drone_42.csv, 1.csv (any name with a digit before .csv works). Drones in nested folders are fine.
Each CSV must have this header and one row per frame at 30 fps (33 ms intervals):
Time [msec],x [m],y [m],z [m],Red,Green,Blue
0,14.34,-13.40,84.85,152,149,141
33,14.34,-13.40,84.85,152,149,141
66,14.36,-13.40,84.88,160,149,141
99,...
x/y/z in meters. RGB columns are 0β255 and optional β if missing, drones default to black (0, 0, 0).
π .mat β MATLAB show file
Required variables: x, y, z β each a num_drones Γ num_frames matrix of floats. Optional: r, g, b (same shape, 0β255). Source sample rate: 30 fps.
% MATLAB example β 500 drones, 9000 frames (5 min @ 30 fps)
x = randn(500, 9000); % size: [num_drones Γ num_frames]
y = randn(500, 9000);
z = abs(randn(500, 9000));
r = uint8(255 * ones(500, 9000));
g = uint8( 0 * ones(500, 9000));
b = uint8( 0 * ones(500, 9000));
save('show.mat', 'x', 'y', 'z', 'r', 'g', 'b');
NaN positions are allowed for "not yet active" drones β we forward-fill from the first real frame.
π― .jsdm β JSON show file
A JSON-based drone show description. Export directly from your design tool β no edits needed. We parse planeCount + frameCount and walk pointFrames / channelFrames in time order.
{
"planeCount": 1200,
"frameCount": 6600,
"pointFrames": [
{ "time": 0, "points": [
{ "no": 1, "x": 0, "y": 0, "z": 0 },
{ "no": 2, "x": 1.5, "y": 0, "z": 0 }
]},
{ "time": 30, "points": [ ... ] }
],
"channelFrames": [
{ "time": 0, "channels": [
{ "no": 1, "c1": 255, "c2": 0, "c3": 0 },
{ "no": 2, "c1": 0, "c2": 255, "c3": 0 }
]}
]
}
no is 1-indexed drone number. c1/c2/c3 are R/G/B (0β255).
Have a different file format? Email it to support@skyrender.io and we'll add it to the system.
Before you upload
- Max file size: 500 MB.
- Source rate: 30 fps (33 ms / frame). The runtime
.bin is downsampled to 6 fps, matching the iOS app.
- Axes: x = horizontal, y = depth, z = vertical (up). The 2D player shows x Γ z (audience view).
- The 2D preview lets you trim takeoff / landing before generating the QR.
- Drones not yet active (NaN or zero) are skipped until their first valid frame.