Как с помощью ГИС Конструктор или mapAPI решить следующие задачи: 1. добавить 3D вид объекту; 2. создать (редактировать) 3D вид объекта; 3. создать библиотеку 3D шаблонов.
Настройка параметров типовых 3D-моделей категорий объектов в библиотеке условных знаков - это интерактивный процесс, реализуемый в Редакторе классификатора заблаговременно. Редактор классификатора использует MAPAPI-интерфейс, но эта часть пока не является общедоступной. 3D-модели отдельных объектов на местности могут быть импортированы из обменных форматов VRML или DAE и назначены объектам. Такой интерфейс планируется в новой версии ГИС Панорама (Оператор) и будет доступен разработчикам.
//--------------------------------------------------------------------------
// Изменение объекта на 3D-модели при изменении его характеристик на
// двумерной карте (после функции надо сделать перерисовку модели)
// Вход:
// changeinfo - адрес структура с описанием объекта и произведенной
// над ним операции
// Возвращаемое значение: 0 - при ошибке, 1 - если все хорошо
//--------------------------------------------------------------------------
long _M3DIMP _M3DAPI m3dChangeObject(HMAP3D hModel, CHANGEINFO* changeinfo);
Для перемещения объекта средствами API мы добавили недостающие заголовочные файлы ГИС Конструктор. Скачать его можно по следующей ссылке. Пример кода для перемещения объекта в окне 3D-Навигатора (проверяется на карте Podolsk.map):
В ходе работы появились следующие проблемы: 1. Если объект добавлять на пользовательскую карту, добавленную к основной, то после перемещения объекта и вызова функции t3dChangeObject объект исчезает с 3D отображения. Появляется после обновления всей модели. 2. В Навигаторе 3D (Windows) есть возможность редактировать состав отображения. Возможно ли редактировать состав отображения в Астре Линукс? 3. В отображении трехмерной модели после обновления по нажатию кнопки отображается только поверхность с текстурой. Объекты появляются, если мышкой изменить положение камеры или после вызова функции t3dUpdateData.
Первая проблема возникала при нулевом идентификаторе пользовательской карты, записывающийся в структуру CHANGEINFO.
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. При отображении площадного объекта в 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-модели при одиночном редактировании. Конечно, время обновления зависит от железа, но в таком режиме указанное время нормально.