« Предыдущая Следующая »

3. Конструкторская часть

3.1  Работа с трехмерной геометрией

Основной графической информацией в нашей системе является трехмерной. Поэтому в данном проекте было уделено особое внимание работе с трехмерной информацией.

3.1.1 Библиотека работы с трехмерной геометрией (форматом Mesh3D)

В процессе изучения существующих возможностей используемых программных средств и программных средств третьих фирм было принято решение написания собственной библиотеки работы с трехмерной геометрией. Данная библиотека представляет общий набор сущностей, с которыми работают другие части комплекса.

3.1.1.1  Дизайн и общая структура

Библиотека работы с трехмерной геометрией

Рисунок. Общая структура библиотеки.

Библиотека состоит из ядра, подсистемы сохранения/восстановления и интерфейсов доступа к ней.

3.1.1.1.1  Ядро

Ядро представляет собой наиболее общую часть библиотеки. Структура сущностей, возможные способы работы с ними реализованы именно в ядре.

Укрупненный перечень сущностей, с которыми работает библиотека:

  • Сцена;
  • Слой;
  • Группа объектов;
  • Материал;
  • Графический объект;
  • Параметры анимации объекта;
3.1.1.1.2  Подсистема сохранения/восстановления

Подсистема сохранения/восстановления служит для сохранения подготовленной в памяти по средствам библиотеки сцены объектов и последующего восстановления этой структуры.

Подсистемой на текущий момент поддерживается 2 формата данных: бинарный и текстовый на основе XML.

Бинарный формат подходит для большинства применений, однако неудобен для отладки и ручного просмотра человеком. Работа с бинарным форматом происходит намного быстрее, он занимает меньше места на диске, менее подвержен случайным изменениям.

3.1.1.1.3  Интерфейс OLE Automation

Интерфейс предназначен для доступа к библиотеке извне через инфраструктуру Microsoft ActiveX. Приложение, использующие данный интерфейс, может быть написано практически на любом языке программирования, предназначенном для написания программ под OC Microsoft Windows. Например, Microsoft Visual Basic или Microsoft Visual Basic for Applications.

Интерфейс построен на базе самых примитивных типов данных, для обеспечения совместимости с простыми языками программирования. В связи с этим, данный интерфейс является самым медленным, но, тем не менее, показал вполне неплохие скоростные характеристики при обработке больших блоков информации.

В рамках данного проекта данный интерфейс использовался для написания конвертора в/из приложения Autodesk 3ds Max.

3.1.1.1.4  Интерфейс Windows Dynamic Link Library

Интерфейс предназначен для доступа к библиотеке извне по средствам стандартного для Microsoft Windows механизма динамически подключаемых библиотек.

Интерфейс реализован только функциями с модификатором extern “C” для обеспечения совместимости с компиляторами, отличными от используемого при компиляции библиотеки.

Интерфейс имеет неплохие скоростные характеристики, прост в использовании.

Является наилучшим выбором, если это позволяет используемый язык программирования (компилятор).

В рамках данного проекта данный интерфейс использовался для написания конвертора из Bentley MacroStation.

3.1.1.1.5  Интерфейс Native

Самый низкоуровневый интерфейс. Дает доступ к иерархии классов библиотеки. Дает возможность непосредственного манипулирования данными в памяти, что не дают другие интерфейсы.

Интерфейс является наиболее быстродействующим, среди имеющихся.

Для использования этого интерфейса приложение должно компилироваться вместе со статической версией данной библиотеки. Это в свою очередь накладывает очень жесткие ограничения на язык программирования (и компилятор) и фактически означает, что приложение должно компилироваться той же версией того же компилятора, что и сама библиотека. В случае изменения библиотеки необходима перекомпиляция всех приложений, использующих данную библиотеку через данный интерфейс.

В рамках данного проекта данный интерфейс использовался для написания визуализатора.

3.1.1.2  Использование

В процессе работы над данным проектом была установлена необходимость использования некоторого количества узкоспециализированных программных продуктов.

3.1.2  Конвертер трехмерной геометрии из системы Bentley MicroStation в Mesh3D

Был разработан на базе рассмотренной ранее библиотеки экспортер из системы Bentley MicroStation во внутренний формат. Поддерживается экспорт твердотельной и поверхностной геометрии; экспорт слоев; оригинальных ссылок на базу данных; экспорт групп (cell); экспорт назначенных материалов. Реализован на базе Native интерфейса.

3.1.3 Конвертер трехмерной геометрии системы Autodesk 3ds Max из/в Mesh3D

Разработано средство экспорта/импорта трехмерной геометрии из/в Autodesk 3ds Max. Поддерживается полный спектр типов объектов и их свойств. В конвертере предусмотрено интеллектуальное поведение, когда произошло незначительное изменение объектов. Конвертер реализован с помощью средства Max Script и OLE Automation интерфейса библиотеки.

3.1.4 Конвертер трехмерной геометрии в форматы VRML и X3D из Mesh3D

Было разработано на базе библиотеки SGI Open Inventor средство экспорта в формат VRML (а далее в X3D). Написано на языке C++ и использованием Native интерфейса

3.1.5 Конвертер трехмерной геометрии в формат Adobe (Macromedia) Shockwave из Mesh3D

Разработан конвертер в формат Shockwave 3D. Используется для построения моделей для интерактивных навигаторов по комплексу зданий и отдельному зданию. Разработан с использованием оригинального SDK от Adobe на языке C++.

3.2  Использование трехмерной геометрии

3.2.1 Визуализатор формата Mesh3D

Для контроля внутреннего формата был разработан просмоторщик на базе библиотеки SGI Open Inventor. Просмоторщик обладает базовыми функциями и предназначен, в основном, для отладочных целей. В дальнейшем возможно на его базе создание автономного клиента.

3.2.2 Приложение интерактивной навигации по комплексу зданий

Приложение предназначено для навигации по комплексу зданий и выбору отдельных зданий среди всего комплекса. Далее предусмотрена возможность запуска специализированных программ для просмотра 2D/3D составляющих по выбранному объекту.

Поддерживается полный набор методов навигации (первое, третье лицо, расчет физики, изменение скорости движения и многое другое).

Приложение предназначено для использования через веб-браузер и устанавливается автоматически.

Приложение интерактивной навигации по комплексу зданий

3.2.3  Приложение интерактивной навигации по отдельному зданию

Приложение предназначено для навигации отдельному зданию и работы с отдельными его элементами. Предусмотрена возможность работы со слоями, базой данных, 2D просмоторщиками и многое другое.

Приложение предназначено для использования через веб-браузер и устанавливается автоматически.

Приложение интерактивной навигации по комплексу зданий Приложение интерактивной навигации по комплексу зданий

3.3  Работа с двумерной геометрией

3.3.1  Конвертор двумерной геометрии из Bentley MicroStation в XML2D

Реализован автоматический экспортер из Bentley MicroStation во внутренний формат. Написан на языке C++ и библиотеки MDL. Конвертер предназначен быть частью сервера приложений.

3.3.2 Конвертер двумерной геометрии из XML2D в формат SVG

Реализован автоматический конвертер из внутреннего формата в формат SVG. Написан на языке C++. Конвертер предназначен быть частью сервера приложений.

3.3.3 Конвертер двумерной геометрии из XML2D в формат Macromedia Flash

Реализован автоматический конвертер из внутреннего формата в формат SWF. Написан на языке Java. Конвертер предназначен быть частью сервера приложений.

3.4 Использование двумерной геометрии

Приводиться краткий обзор разработанного нами в ходе проекта программного обеспечения для использования двумерной геометрии конечными пользователями.

3.4.1 Приложение просмотра/редактирования двумерной геометрии в формате XML2D

Приложение редактирования двумерной геометрии в XML2D

На основе проведенного анализа была сформулирована задача разработки собственного векторного формата хранения геометрических объектов и написание программы отображения данного формата.

В качестве языка программирования выбран наиболее распространенный язык объектно-ориентированного программирования С++.

В качестве среды разработки программы выбран редактор Borland C++ Builder 6.0.

Формат хранения  объектов разработан на основе языка расширения разметки XML.

Для программирования графики была использована библиотека OpenGL.

3.4.1.1  Обзор инструментов программы

Программа предоставляет набор основных инструментов необходимых для просмотра и навигации по чертежу(находящихся в главном меню),набор инструментов для создания и редактирования базовых двумерных геометрических объектов, панель для работы с деревом документов и списком слоев, меню для взаимодействия с базой данных.

Приложение редактирования двумерной геометрии в XML2D

Главное меню

Панель навигации и менеджера слоев

Редактор базовых двумерных геометрических объектов

Состав инструментов навигации по чертежу:

  • Перемещение;
  • Уменьшение;
  • Увеличение;
  • Увеличение рамкой;
  • Исходный размер;
  • Масштаб.

Перемещение и масштабирование, кроме того осуществляется при использовании средней кнопки и ролика мыши.

Состав панели навигации:

  • Дерево документов(чертежей планов) ;
  • Список доступных документу слоев;

Состав панели редактирования:

  • Добавление полилинии;
  • Добавление произвольной кривой;
  • Добавление прямоугольника;
  • Добавление элипса;
  • Палитра цветов заливки и границ объектов;
  • Стиль объекта;
  • Удаление объекта;
  • Удаление всех объектов пользователя;

Состав средств работы с базой данных:

  • Соединение с базой данных;
  • Разрыв соединения с базой;
  • Добавление элемента в базу;
  • Удаление элемента из базы;
  • Получение данных о выбранном элементе.

3.4.2 Приложение интерактивного просмотра двумерной геометрии в формате SVG

Приложение интерактивного просмотра двумерной геометрии в формате SVG

В ходе проекта разработано Приложение интерактивного просмотра двумерной геометрии в формате SVG. Для использования данного компонента пользователю необходим компьютер под  управлением операционных систем Windows или семейства Unix и web браузеры:

  • Microsoft Internet Explorer 6.0 (необходимый плагин ставиться автоматически);
  • Opera 8.5 и старше;
  • Firefox 1.5 и старше

Система навигации между чертежами и внутри чертежа реализована в виде следующего меню:

Приложение интерактивного просмотра двумерной геометрии в формате SVG

Идея заключается в создании удобной и интуитивной системы поиска информации о конечном объекте в комплексе зданий.

Навигация осуществляется посредством выбора интересующего нас здания, далее его этажа, далее группы связных объектов на этаже и наконец интересующего нас объекта. При выборе конкретного объекта в документе, осуществляется запрос к базе данных по его идентификационному номеру и в результате вся атрибутивная информация по данному элементу выводится в виде таблицы, или же если атрибутивная информация не текстовая, а например представляет собой другой SVG документ детализирующий структуру данного объекта, то подгружается этот документ.

3.4.2.1  Связь с базой данных

Реализуется при помощи механизма URL поддерживаемого форматом SVG.

На данном этапе реализована только односторонняя связь с базой данных. Пользователь выбрав интересующий его элемент чертежа имеет возможность просмотреть атрибутивную информацию связанную с этим объектом, занесенную в базу данных. Возможность изменения и добавления информации в  базу данных по выбранному объекту будет реализована позже.

3.4.3 Приложение интерактивного просмотра двумерной геометрии в формате Adobe(Macromedia) Flash

Выбираем необходимое нам здание и этаж

Приложение интерактивного просмотра двумерной геометрии в Adobe(Macromedia) Flash

Далее можем работать с чертежом, включать/выключать необходимые слои.

Приложение интерактивного просмотра двумерной геометрии в Adobe Flash

« Предыдущая Следующая »
Информация о файле
Похожие публикации
Похожих публикаций не обнаружено.