На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Функции отображения трёхмерных карт

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: Пред. 1 2 3 След.
RSS
Функции отображения трёхмерных карт
 
Добрый день!
Цитата
Олег Темеров написал:
Судя по используемым типам и кодировке CP1251, это всё-таки пример для API Windows?Как его изменить для работы с чистым API Qt5? К примеру, что использовать в качестве параметра "HDC hdc" в функции Init: указатель на виджет отрисовки (QWidget*) или контекст рисования (QPainter*)? Если последнее, придётся вызывать Init при каждой перерисовке виджета, так как QPainter является валидным только в методе-обработчике paintEvent виджета.
Данный пример служит для демонстрации порядка вызова API-функций для отображения 3D-модели. Пример с использованием Qt подготовим дополнительно.
 
Цитата
Олег Темеров написал:
Как правильно установить начальную точку обзора и угол направления "камеры"? К примеру, в центре карты на высоте 1000 метров?
В пример текстов функций инициализации и рисования 3D-модели карты добавлена функция инициализации параметров отображения:
https://disk.yandex.ru/d/_YZ-6MwLUZQE2Q
 
Большое спасибо за дополнение.
 
Цитата
Александр Савелов написал:
Добрый день!
Цитата
Олег Темеров написал:
Судя по используемым типам и кодировке CP1251, это всё-таки пример для API Windows?Как его изменить для работы с чистым API Qt5? К примеру, что использовать в качестве параметра "HDC hdc" в функции Init: указатель на виджет отрисовки (QWidget*) или контекст рисования (QPainter*)? Если последнее, придётся вызывать Init при каждой перерисовке виджета, так как QPainter является валидным только в методе-обработчике paintEvent виджета.
Данный пример служит для демонстрации порядка вызова API-функций для отображения 3D-модели. Пример с использованием Qt подготовим дополнительно.
Получится выложить пример для Qt?
 
Здравствуйте!

Прошу прощения за задержку - реализация примера в завершающей стадии, в ближайшее время обновим версию ГИС Конструктор с включенным в состав примером отображения 3D-модели. По готовности оповестим Вас отдельно в данной теме.
 

Здравствуйте!
На сайте доступна обновленная версия ГИС Конструктор, в состав которой включен пример отображения 3D-модели – map3d.

 
Большое спасибо за пример.
Судя по кодировке исходного текста (CP1251) и этот пример был написан изначально для ОС Windows, так как под Linux карта в режиме 3D не отображается (хотя в просмотрщике 2D отображение нормальное).
Вот пример открытия одной и той же карты (из состава самого ГИС Конструктор: /usr/share/gisdesigner/examples/Data/Топографические карты/N-38-18/) в примере mapview и map3d:

Какие пакеты необходимо установить для корректной работы примера для ОС Linux (например драйвера mesa или OpenGL)?
Работа примера проверялась на свежеустановленной Ubuntu 20.04. Также в ГИС Панорама задача Навигатор 3D нормально отображает эту карту в режиме полёта.
Изменено: Олег Темеров - 13.09.2022 16:43:35
 
Дополнение к предыдущему сообщению: пример заработал на уже давно установленной системе Ubuntu 22.04, но отрисовывает не все карты. Возможно, дело в поддержке 3D со стороны Qt.
 

Провели проверку в Ubuntu 20.04 – подложка из карты отрисовалась корректно.
Для работы приложения должно быть достаточно установленных библиотек Qt версии выше 5.4 и драйверов видеокарты.

Для диагностики, пожалуйста, активируйте диагностический лог (mapOpenDiagnostics) после вызова конструктора QDMapView в main.cpp примера и повторите создание модели.
Полученный лог можно прислать на почту panorama@gisinfo.ru с ссылкой на сообщение с форума.

Для отображения 3D-модели нужен подготовленный классификатор с установленными 3D-видами для объектов и файл настройки отображения объектов (.p3d).
Карта кадастра из состава инсталляции (/usr/share/gisdesigner/examples/Data/Планы городов/Cadastre) содержит необходимые настройки и может использоваться для демонстрации.

Для отображения всех объектов на данной карте можно при инициализации 3D-модели в её параметрах выставить флаг видимости всех моделей на карте (ViewRange = 1).

 
Спасибо за ответ, я отправил лог-файл на почту.
Скорее всего, дело именно в поддержке 3D и настройке видеодрайверов, так как в логе есть строки:
Цитата
>>>> 21:21:41    82427fc0 При компиляции шейдера возникли ошибки:
VERTEX_SHADER
0:1(10): error: GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.40, 1.00 ES, and 3.00 ES
При этом пример запускается и создаёт лог-файл только из среды QtCreator. При сборке и запуске в консоле вручную с помощью qmake, приложение завершается с сообщением "Segmentation fault".
Добавление проверок на успех инициализации OpenGL во внутренних функциях MAPAPI (или проверка такой возможности с помощью Qt: 'qDebug() << "OpenGL Versions Supported: " << QGLFormat::openGLVersionFlags();') и вывод диагностического предупреждения "Не удалось инициализировать OpenGL" или "Видеокарта не поддерживает 3D-ускорение" (вместо безусловной попытки построения 3D-карты) было бы очень полезно пользователям изучающим ГИС Конструктор в данной ситуации, особенно, при запуске на старых встроенных видеокартах.
Изменено: Олег Темеров - 15.09.2022 05:44:22
Страницы: Пред. 1 2 3 След.
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности