Виртуальный полигон для дрона
Author
Визуализация полёта летательного аппарата: модель, сервер и 3D-сцена в браузере
Пример показывает способ создания среды для 3D визуализации и отправку данных из модели Engee до 3D-сцены в браузере.
Описание примера
После запуска откроется страница с 3D-сценой и панелью HUD:
- плоская модель поверхности земли, клетчатая текстура, сторона клетки — 1 м;
- аппарат в истинном масштабе: размеры берутся из файла OBJ, положение и ориентация — из модели;
- HUD: счётчик пакетов, частота, задержка, координаты, углы и скорость;
- кнопка «Camera» переключает режим слежения и свободный обзор мышью;
- кнопки «Reset UDP» и «Reset UI» перезапускают приём пакетов и всю страницу.
Как запустить пример
Используйте следующие кодовые ячейки как конструктор, чтобы подготовить окружение.
Ячейки, приведенные ниже, выполняют следующие действия:
- Первая ячейка переводит файловый браузер в рабочую папку в папку проекта, чтобы мы больше не волновались об адресации файлов.
- Вторая ячейка собирает
public/mesh.binизdrone_model.obj. Готовый файл уже есть в проекте, поэтому шаг можно пропустить. Возможно, это будет не единственный подготовительный шаг в вашем проекте. - Ячейка с
engee.genie.startзапускает сервер Genie и открывает страницу. Если запуск не удался с первой попытки, повторите ячейку (скорее всего прошлый сервер еще не закрылся). - Откройте модель
drone_flight_demo.engeeи запустите расчёт. Блок «3D сцена» начнёт отправлять пакеты на127.0.0.1:5150, и аппарат придёт в движение. - Последняя ячейка останавливает сервер.

In [ ]:
cd(@__DIR__)
In [ ]:
;julia obj2bin.jl drone_model.obj public/mesh.bin
In [ ]:
app = engee.genie.start("$(@__DIR__)/drone_graphics_app.jl", log_file="$(@__DIR__)/log.txt", open_url=true);
In [ ]:
engee.open("drone_flight_demo.engee")
engee.run()
In [ ]:
engee.genie.stop("$(@__DIR__)/drone_graphics_app.jl");
Оси исходной модели по ГОСТ
В исходном OBJ ось X проходит через нос аппарата, ось Y направлена вверх, ось Z — вдоль правого крыла. Это правая система координат; в большинстве 3D-редакторов оси направлены иначе, поэтому модель там выглядит повёрнутой.
Заключение
Пример показывает полный путь данных от модели Engee до 3D-сцены в браузере: UDP-передачу, сервер Genie и клиент на WebGL.