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

Работа с 3D отображением

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1 2 След.
RSS
Работа с 3D отображением
 
Здравствуйте

Как с помощью ГИС Конструктор или mapAPI решить следующие задачи:
1. добавить 3D вид объекту;
2. создать (редактировать) 3D вид объекта;
3. создать библиотеку 3D шаблонов.

Спасибо
 
Настройка параметров типовых 3D-моделей категорий объектов в библиотеке условных знаков - это интерактивный процесс, реализуемый в Редакторе классификатора заблаговременно.
Редактор классификатора использует MAPAPI-интерфейс, но эта часть пока не является общедоступной.
3D-модели отдельных объектов на местности могут быть импортированы из обменных форматов VRML или DAE и назначены объектам. Такой интерфейс планируется в новой версии
ГИС Панорама (Оператор) и будет доступен разработчикам.
 
В ГИС Панорама 11 при изменении метрики объекта он автоматически перемещается на 3д без перерисовки. Как сделать такое же обновление с помощью АПИ?
 
Код
//--------------------------------------------------------------------------
// Изменение объекта на 3D-модели при изменении его характеристик на
// двумерной карте (после функции надо сделать перерисовку модели)
//   Вход:
//     changeinfo - адрес структура с описанием объекта и произведенной
//                  над ним операции
//   Возвращаемое значение: 0 - при ошибке, 1 - если все хорошо
//--------------------------------------------------------------------------
long _M3DIMP _M3DAPI m3dChangeObject(HMAP3D hModel, CHANGEINFO* changeinfo);
 
Спасибо, но в m3dapi.h подключены m3dtype.h и rscfl3d.h, которых нет. Где их взять?
В какой библиотеке находится данная функция?
Изменено: Rise - 30.06.2017 13:56:43
 

Для перемещения объекта средствами API мы добавили недостающие заголовочные файлы ГИС Конструктор. Скачать его можно по следующей ссылке. Пример кода для перемещения объекта в окне 3D-Навигатора (проверяется на карте Podolsk.map):

Код
#include "m3dcom.h"
 
...
 
// Создать окно 3D-Навигатора
void MainForm1::Create3DNavigator()
{
  HMAP hMap = ui.DMapView1->GetMapHandle();
 
  CREATETASK3D parmtask3d;
  memset(&parmtask3d, 0, sizeof(CREATETASK3D));
  parmtask3d.Area = 1;
  parmtask3d.SelectFrame.X1 = 6171801.79;
  parmtask3d.SelectFrame.Y1 = 7407951.94;
  parmtask3d.SelectFrame.X2 = 6170266.08;
  parmtask3d.SelectFrame.Y2 = 7409409.57;
  parmtask3d.MoveAdjust = 1;
 
  TASKPARMEX tparmex;
  memset(&tparmex, 0, sizeof(TASKPARMEX));
 
  HTask3D = t3dOpen(hMap, &parmtask3d, &tparmex);
}
 
 
// Двигать объект при каждом вызове
void MainForm1::Move()
{
  HMAP hMap = ui.DMapView1->GetMapHandle();
 
  HOBJ info = mapCreateObject(hMap);
 
  mapSeekSiteObject(hMap, hMap, info, 16796119);
 
  if (info)
  {
      mapUpdatePointPlane(info, mapXPlane(info) + 10.0, 7408783.520, 1);
      mapCommitObject(info);
      ui.DMapView1->Repaint();
 
      CHANGEINFO chi;
      memset(&chi, 0, sizeof(CHANGEINFO));
      chi.hSite = hMap;
      chi.List = 1;
      chi.Key = 16796119;
      chi.Type = OO_UPDATE;
      t3dChangeObject(HTask3D, &chi);
  }
  mapFreeObject(info);
 
  return;
}
Изменено: Андрей Коржилов - 13.07.2017 16:19:27
 
В ходе работы появились следующие проблемы:
1. Если объект добавлять на пользовательскую карту, добавленную к основной, то после перемещения объекта и  вызова функции t3dChangeObject объект исчезает с 3D отображения. Появляется после обновления всей модели.
2. В Навигаторе 3D (Windows) есть возможность редактировать состав отображения. Возможно ли редактировать состав отображения в Астре Линукс?
3. В отображении трехмерной модели после обновления по нажатию кнопки отображается только поверхность с текстурой. Объекты появляются, если мышкой изменить положение камеры или после вызова функции t3dUpdateData.

Первая проблема возникала при нулевом идентификаторе пользовательской карты, записывающийся в структуру CHANGEINFO.
Изменено: Rise - 13.07.2017 16:04:20
 
Здравствуйте.

2. Для Astra Linux SE такая возможность на данный момент не реализована.

3. Проблема подтвердилась - исправим в следующей версии ГИС Конструктор.

 
Здравствуйте

1. При отображении площадного объекта в 3д появляются линии, которые пропадают, если выделить объект.
В метрике объекта 5 точек. Замечено в Панораме 11, 12 для Windows и в Карте 11 для Linux Astra.



2. В окне 3д остаются текстуры объектов от прошлых запусков, которых уже не существует в текущем отображении. (Astra Linux)


После обновления окна текстуры отображаются корректно


3. После обновления окна 3д в центре появляется область в которой пропадают объекты.


4. В Панораме 12 (Windows) в окне "Редактирование списков семантик" ползунок в правом столбце уходит под форму.


5. Как работать с семантикой список 3д изображений?
Добавление объекту такого списка не дает результата.

6. Обновление объекта функцией t3dChangeObject занимает 0.3 секунды. Одновременное обновление 10 объектов соответственно происходит за 3 секунды, что тормозит программу на это время.
Это нормальное время обновления или это проблемы с железом?


 
Изменено: Rise - 15.09.2017 16:22:26
 
Цитата
Rise написал:
Здравствуйте

1. При отображении площадного объекта в 3д появляются линии, которые пропадают, если выделить объект.
В метрике объекта 5 точек. Замечено в Панораме 11, 12 для Windows и в Карте 11 для Linux Astra.

2. В окне 3д остаются текстуры объектов от прошлых запусков, которых уже не существует в текущем отображении. (Astra Linux)

После обновления окна текстуры отображаются корректно


3. После обновления окна 3д в центре появляется область в которой пропадают объекты.


4. В Панораме 12 (Windows) в окне "Редактирование списков семантик" ползунок в правом столбце уходит под форму.


5. Как работать с семантикой список 3д изображений?
Добавление объекту такого списка не дает результата.

6. Обновление объекта функцией t3dChangeObject занимает 0.3 секунды. Одновременное обновление 10 объектов соответственно происходит за 3 секунды, что тормозит программу на это время.
Это нормальное время обновления или это проблемы с железом?

Ответы:

1. В трехмерном виде этого объекта необходимо поставить галочку "Отображать только целый объект".

2. Текстура подложки (карты в двухмерном виде) сохраняемая. Это сделано для ускорения загрузки 3D-модели. Поэтому при изменении вида карты необходимо делать обновление модели.

3. Если после переоткрытия задачи "Навигатора 3D" отображение объектов восстанавливается, то значит, при обновлении происходит перераспределение оперативной памяти и ее становится недостаточно для отображения.

4. Ползунок в окне поправим, спасибо!

5. Семантика типа "Список 3D изображений"  создается в указанном Вами диалоге путем занесения: имени, кода и ключа, отличных от остальных семантик, добавлением необходимых 3д видов объектов одного типа (например. разных моделей танков). Затем на закладке Редактора классификатора - Объекты выбрать нужный тип двухмерного объекта (например, Танк) и для него, во вкладке Семантика, добавить созданную семантику как возможную. Сохранить классификатор. Далее на карте, нужным объектам типа Танк в диалоге Выбор объекта закладка Семантика добавить созданную семантику и выбрать соответствующее значение (модель танка), сохранить. После этого данный объект будет отображаться своей особенной 3д моделью. Остальные Танки (без заданной семантики) будут отображаться видом по умолчанию.
Посмотреть пример работы с данной семантикой можно на карте http://gisinfo.ru/download?id=166

6. Функция t3dChangeObject предназначена для синхронизации изменений объектов карты и 3D-модели при одиночном редактировании. Конечно, время обновления зависит от железа, но в таком режиме указанное время нормально.
Страницы: 1 2 След.
Читают тему (гостей: 1)



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

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