Движок визуализации 3D-карт
telegram-канал →Kartoid — движок визуализации карт с трёхмерным рельефом. Разрабатывается в рамках туристического приложения для планирования походов.
Тайловое ядро написано на чистом C# без привязки к 3D-движкам. Unity, MonoGame, Godot — ядро работает где угодно.
Никаких упрощений визуализации — вместо этого оптимизированы алгоритмы, чтобы рисовать рельеф как есть, в полном разрешении.
Движок свободен от сторонних платформ, базовые текстуры [1 ТБ] и высоты [5 ТБ] хранятся в РФ.
г. Эльбрус — 43.3499°N, 42.4453°E
р. Чижапка — 59.1842°N, 77.0635°E
Любая система визуализации 3D-карт строится на трёх со-зависимых системах: построение рельефа, драпировка геометрии и прикрепление маркерных точек.
При проектировании в движок были заложены высокие требования к производительности. Каждая система — результат анализа последних научно-инженерных изысканий.
Бюджетированные инкрементальные деревья обновляют ровно столько тайлов, сколько позволяет кадр. Пул объектов и вертексный шейдер — сотни тайлов на экране без просадок.
Вдохновившись работами Мартина Шнайдера и Юргена Дёлльнера, разработан метод драпировки, независимый от характера геометрии и рельефа — для сотен тысяч линий.
Система отслеживает тысячи маркеров одновременно, проецируя каждый на рельеф в реальном времени. Динамическое чтение высоты без спайков — за счёт гибкой работы с памятью.
Тайловая сетка рельефа
Картографические приложения фризят при резком изменении позиции или масштаба — дерево перестраивается целиком за кадр. Для решения этой задачи был разработан специальный механизм инкрементации деревьев — дерево перестраивается не целиком, а порционно, обеспечивая плавную работу даже при резких манёврах. В отличие от SSE, разбиение по дистанции с гистерезисом исключает мерцание на границах LOD.
Тайловый конвейер, рельеф через вертексные шейдеры, драпировка геометрии, система маркеров. Ядро движка готово.
Поиск по координатам и названиям, построение маршрутов с учётом рельефа, расчёт перепада высот и времени в пути.
Синхронизация маршрутов между устройствами, общие библиотеки маршрутов, совместное планирование походов.
Каталоги стоянок, источников воды, перевалов и достопримечательностей. Всё для полноценного планирования походов.
Мидл-разработчик C#/.NET в крупном энтерпрайзе, профессионально занимаюсь спортивным туризмом, люблю карты и красивые визуализации. Пишу магистерскую диссертацию в МАИ на тему драпировки геометрии к рельефу.
Пишите если хотите поболтать про карты, визуализацию или предложить идеи. Готов делиться данными и знаниями. Сейчас доступны снимок Planet OSM и Terrain Tiles AWS.
Больше примеров и прогресс разработки
Telegram-канал