Skip to content

Repository files navigation

SkydiveTrack3D

Портативная утилита: открываешь видео GoPro (.MP4) → из встроенного GPS-потока (GPMF) извлекается трек со всего видео → рисуется интерактивная 3D-траектория прыжка, которую можно крутить мышью, с автоматически размеченными фазами полёта и спутниковой подложкой. Подходит для вингсьюта, фрифола и полёта под куполом.

Запуск

pip install -r requirements.txt
python app.py [файл.MP4]

Либо собрать портативный exe (см. «Сборка») и перетаскивать .MP4 прямо в окно.

Что в окне

Трек красится по фазам (детектор по высоте и вертикальной скорости):

  • серый — предполётное в самолёте / стояние на земле (тонкая полупрозрачная линия там, где GPS не писался — набор высоты в самолёте);
  • 🟧 оранжевый — свободное падение / вингсьют;
  • 🟦 голубой — под куполом.

Плюс: секундные засечки (белые точки, подписи каждые 5 с), метки EXIT (выход), OPEN (раскрытие), LAND (приземление), «тень» трека на земле, и спутниковая подложка (Esri World Imagery) на плоскости земли. Панель слева — статистика по каждой фазе (время, скорость снижения, glide ratio, макс. горизонтальная скорость).

Секунды считаются от выхода (0 с в верхней точке) вниз до приземления (максимум у земли). Управление: ЛКМ — вращать · колесо — зум · Shift+ЛКМ — сдвиг.

Кнопки вверху:

  • «🛰 Satellite ground» — вкл/выкл спутниковую карту;
  • «⬇ Top view» — вид строго сверху (2D-план полёта над картой);
  • «💾 Export GPX/KML» — сохранить трек (GPX для Google Earth/анализаторов, KML с реальной высотой);
  • «Max DOP» — порог отбраковки неточных GPS-точек.

Важно про GPS вингсьюта/скайдайва

GoPro часто теряет GPS-фикс в самолёте и в скоростном свободном падении (металл фюзеляжа, вращение, высокая скорость), а заново ловит уже под куполом. Поэтому в части файлов сам фрифол в GPS отсутствует — он показан серой «предполагаемой» линией от последней точки до места, где фикс восстановился. Где GPS во время вингсьют-полёта держался — фаза будет оранжевой с реальной траекторией. Если фрифол не показывается, попробуй поднять «Max DOP».

Как это работает

  • gpstrack.py — самодостаточный парсер: читает MP4 напрямую (mmap, без ffmpeg), находит дорожку gpmd, парсит GPMF (KLV): GPS9 (HERO11/12/13) и GPS5.
  • app.py — GUI (PyQt5 + pyqtgraph/OpenGL), очистка трека, детектор фаз, 3D-сцена.
  • tiles.py — загрузка и стыковка спутниковых тайлов Esri (с кэшем в %TEMP%).
  • shot.py — офскрин-рендер в PNG (для проверки/скриншотов).
  • geotag_potplayer.py — проставляет кадрам-скриншотам из PotPlayer время съёмки исходного видео и медианную GPS-точку полёта (нужен exiftool в PATH; пути к видео и фото задаются константами в начале файла).

Сборка

python -m PyInstaller --noconfirm SkydiveTrack3D.spec

или одной строкой без .spec:

python -m PyInstaller --noconfirm --onefile --windowed --name SkydiveTrack3D ^
  --collect-submodules pyqtgraph ^
  --hidden-import OpenGL.platform.win32 --hidden-import OpenGL.arrays.numpymodule ^
  --hidden-import PyQt5.QtOpenGL app.py

About

Трёхмерная визуализация трека прыжка с парашютом по данным GPS

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages