The flight comes from butterflies.
The observatory replays published motion-capture measurements of Papilio polytes. The body and two forewing markers drive the particle reconstruction. This replaces the previous mathematical-trajectory experiment.
The source recordings
Qiang Chen, Tingsong Lu, Yang Tong, Yuming Fang and Zhigang Deng published A Practical Method for Butterfly Motion Capture at ACM MIG 2022. Their public dataset contains 18 short flight segments from five butterflies. The paper reports a capture rate of 500 frames per second.
The published coordinates are already processed by the authors, including missing-marker reconstruction and smoothing. They are not raw camera frames. We preserve the finite coordinates in the downloaded files.
From recorded markers to particles
- The first three columns are the thorax position; the next two groups of three are forewing marker positions, in millimetres.
- The thorax position sets the butterfly’s path. The two marker vectors orient the wing planes.
- Body heading is estimated using thorax positions eight frames before and after the current frame. This is an inferred orientation, not an extra measured body marker.
- We linearly interpolate positions between adjacent recorded frames for display. We do not create a new flight path.
- Soft wing volumes, hindwings, antennae, legs, and body particles are original particle artwork. Their anatomy is illustrative.
Reading the controls
Follow butterfly keeps the thorax centered for a close look at flapping. Full trajectory fits the entire recorded path into the viewport; the particle anatomy is magnified to 1.2× in that view. Drag to orbit, use the zoom controls, or focus the canvas and use the arrow keys.
The default speed is 0.1×, making the recorded wingbeats easier to see. A 0.632-second capture therefore takes 6.32 seconds to replay. At the end we hold the final frame for one second, then explicitly restart that same recording. No connecting flight between the end and start is invented.
Flight speed is estimated from a centered difference of thorax positions over up to 16 frame intervals, converted from mm/s to m/s. Wing opening is the angle between the two thorax-to-wing-marker vectors. The small graph shows the mean wing-marker Z offset relative to the thorax; this is a coordinate-space readout, not an aerodynamic force.
One incomplete segment
Flight 6 contains 179 rows, with a missing forewing marker in the final 11 rows. We replay only its 168 complete frames (0.334 seconds). All 179 rows are retained in the source files and exports; JSON represents the original NaN values as null. No guessed wing positions replace the missing tail.
Reproduce and export
npm start # http://127.0.0.1:48371 python3 scripts/prepare_flights.py python3 butterfly.py --flight 11 --out output/flight.csv npm run check
Browser exports contain the original recording, capture rate, coordinate units, source repository and source commit. Python CSV exports add a frame index and time in seconds. The repository includes the source TXT files and a deterministic JSON converter.
Attribution and scope
Motion measurements belong to the cited dataset authors. The repository records the source commit and file hashes. The project’s MIT code license does not relicense third-party scientific data. See the source repository for its published terms.
The website format was inspired by flycoinrh. This project contains butterfly motion data, not fruit-fly neural data. It is independent of the researchers and original project authors.