Новости

Разработка универсальной системы визуализации

Работа добавлена:






Разработка универсальной системы визуализации на http://mirrorref.ru

 ОГЛАВЛЕНИЕ

  • ОБЗОР СУЩЕСТВУЮЩИХ РЕШЕНИЙ
  • 3D тур по Санкт-Петербургскому Горному Университету
  • Панорама Boeing-747. Оренбургские авиалинии
  • Интерактивная 3D презентация гостиницы «Галакт»
  • Сравнение аналогов
  • АНАЛИЗ СРЕДСТВ РАЗРАБОТКИ
  • ПОСТАНОВКА ЗАДАЧИ
  • РАЗРАБОТКА ПРИЛОЖЕНИЯ
  • Проектирование
  • Архитектура приложения
  • Разработка кода
  • Настройка подгружаемых ресурсов
  • 4.3.2 Покадровый рендеринг графики и шаблон наблюдатель
  • 4.3.3 Создание сцены, камеры и порта просмотра
  • 4.3.4 Загрузка и установка заданных ресурсов
  • 4.3.5 Выделение моделей на сцене, управление камерой
  • 4.3.6 Сохранение состояния программы
  • 4.4 Разработка пользовательского интерфейса
  • 4.4.1 Интерфейс главного экрана
  • 4.4.2 Меню настроек
  • 4.5 Тестирование
  • РАЗРАБОТКА РУКОВОДСТВА ПОЛЬЗОВАТЕЛЯ
  • ЗАКЛЮЧЕНИЕ
  • СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
  • ПРИЛОЖЕНИЕ А
  • ПРИЛОЖЕНИЕ Б

ВВЕДЕНИЕ

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

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

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

  1. Исследовать существующие системы визуализации
  2. Исследовать подходящие библиотеки для разработки 3D сцены
  3. Реализовать возможность загрузки и отображения множества объектов на сцене
  4. Реализовать и протестировать систему визуализации

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

  1. ОБЗОР СУЩЕСТВУЮЩИХ РЕШЕНИЙ

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

Существуют системы визуализации нескольких видов:

  • системы, использующие технологии панорамной сферической съёмки;
  • системы, использующие рендеринг трехмерной графики

Для сравнительного анализа были выбраны три системы-аналога. Далее рассмотрим их особенности.

  1. 3D тур по Санкт-Петербургскому Горному Университету

Данная система позволяет детально увидеть Петербургский университет изнутри при помощи технологии панорамной сферической съёмки [5]. Это камеры, снимающие видео на 360 градусов. Из полученных записей составляются виртуальные панорамы в соответствии с рисунком 1.

Виртуальные панорамы предназначены для показа на компьютере с помощью специального программного обеспечения, позволяющего зрителю «крутить головой», глядя на разные части пространства, окружающего фотографа при съёмке. В основе сферической фотографии лежит собранное из множества отдельных кадров изображение в сферической проекции. Фрагменты таких фотографий склеиваются и далее, при помощиFlash-технологий, разрабатывается виртуальный 3D тур.

Рисунок 1 – Пример панорамной системы визуализации

  1. ПанорамаBoeing-747. Оренбургские авиалинии

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

Рисунок 2 – Пример панорамной визуализации

  1. Интерактивная 3D презентация гостиницы «Галакт»

Для представления информации презентация использует рендеринг трёхмерной графики в соответствии с рисунком 3. Интерактивная связь с пользователем осуществляется при помощи мыши. Пользователь свободно перемещается по виртуальному миру, взаимодействуя с различными объектами, которые предоставляют информацию о себе при взаимодействии [7].

Рисунок 3 – Пример системы визуализации с применением рендера

  1. Сравнение аналогов

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

Различаются системы:

  • наличием интерактивной связи с пользователем
  • видом представления информации

В отличие от 3D тура, интерактивная презентация способна выполнять следующие задачи:

  • подгрузка собственных ресурсов
  • реализация интерактивной связи
  • меньшая нагрузка наCPU

Так как в проекте предусматривается интерактивная связь с пользователем и внедрение анимации, чтобы обратная связь выглядела ещё более информативно, интерактивная презентация рассматривается в качестве основного аналога.

  1. АНАЛИЗ СРЕДСТВ РАЗРАБОТКИ

Важным этапом в разработке системы визуализации является выбор средств разработки. Это может повлиять на такие свойства системы как структурность и функциональность.

Существует множество библиотек, которые отличаются своей сложностью, направленностью, архитектурой построения.Одними из самых распространённых являются Ogre 3D, UnrealEngine и OpenSceneGraph.

OGRE (Object-Oriented Graphics Rendering Engine) объектно-ориентированный графический движок с открытым исходным кодом, написанный на C++. Автором OGRE является Стив Стриитинг (англ. Steve Streeting).

Ogre 3D является графическим движком для рендеринга трехмерной графики. Большую популярность движок получил за счет своей гибкости, что позволяет интегрировать его со многими другими библиотеками (физика ODE, Newton, PhysX, Bullet; звук, сеть, графический интерфейс и т. д.).

Для реализации графического интерфейса пользователя (англ. GUI Graphical User Interface) могут применяться как стандартные функции графического интерфейса OGRE, так и импортироваться сторонние библиотеки (OpenGUI, MyGUI).

Ogre 3D обладает следующими возможностями:поддержка платформ Windows,  Linux и Mac OS X,Android,iOS; скриптовая система управления материалами (мультитекстурирование, мультипроходное смешивание); экспортеры для основных коммерческих и свободных пакетов 3D моделирования;система управления ресурсами;поддержка Direct3D, OpenGL;сложная скелетная анимация (анимация тела), анимация гибких форм, морфинг (анимация лица), анимация пути (камера, перемещение) [1].

UnrealEngineигровой движок, написанный на языке С++, разрабатываемый и поддерживаемый компанией EpicGames. Он позволяет создавать игры для большинства операционных систем и платформ, а также для различных портативных устройств. Например, для устройств Apple (iPad, iPhone), управляемых системой iOS. Впервые работа с iOS была представлена в 2009 году. В 2010 году продемонстрирована работа движка на устройстве с системой webOS.

Для упрощения портирования движок использует модульную систему зависимых компонентов, а также поддерживает различные системы рендеринга: Direct3D, OpenGL, S3, PowerVR; воспроизведения звука: EAX, OpenAL, DirectSound3D; средства голосового воспроизведения текста, распознавание речи, модули для работы с сетью и поддержки различных устройств ввода[3].

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

Инструментарий написан на C++ с использованием библиотек OpenGL. OpenSceneGraph поддерживает большинство популярных операционных систем: Windows, Mac OS X, Linux, IRIX, Solaris и FreeBSD.

В особенности библиотеки входит:  полнофункциональная поддержка промышленной графической сцены; поддержка большого количества 2D изображений и 3D форматов, благодаря 34 импортеров из таких индустриальных форматов как OpenFlight, TerraPage,OBJ, 3DS,JPEG,PNG иGeoTIFF; система частиц;поддержка кадрового буфера, пиксельного буфера и буфера рендеринга в текстуры; поддержка библиотек, позволяющих внешне воздействовать на приложение, выполнять запросы на получение и передачу данных и оперировать всеми классами в графической сцене[2].

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

  • Открытый исходный код – возможность использовать готовый исходный код движка для просмотра, редактирования, изучения.
  • Поддержка операционных систем – возможность запуска готового приложения под определённой платформой.
  • Поддержка различных 3DAPI – возможность интегрировать интерфейсы программирования приложений.
  • Распространённость – широкая область применения в разработке 3D приложений.
  • Коммерция – возможность коммерческой реализации готового продукта.
  • Community – доступность документации для изучения.

Соответствие рассматриваемых движков выбранным критериями представлено в таблице 1.

Таблица 1 – Критерии выбора 3D библиотеки для разработки

Критерии

Ogre 3D

UnrealEngine

OpenSceneGraph

Открытый исходный код

+

-

+

ПоддержкаОС Windows, Mac OS, Linux, iOS, Android

+

+

+

Поддержка различных 3DAPI (DirectX,OpenGL)

+

+

-

Распространённость

+

+

-

Коммерция

+

-

+

Community

+

+

+/-

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

Ogre 3D представляет собой объектно-ориентированный фреймворк, который включает все части процесса рендеринга в объектной модели. С объектно-ориентированным подходом к рендерингу геометрии, необходимость во взаимодействии с ней напрямую совершенно отпадает.

Используется версия библиотекиOgreSDK 1.81 – наиболее стабильная версия движка.

Исходя из того, что библиотекаOgre3D написана на языке С++, языком разработки приложения является С++.  Наиболее удобной средой разработки под С++ являетсяVisualStudio. Так как выбранная версия библиотеки успешно компилируется на компиляторе версииVisualStudio 2010, используется компилятор версии 100 под обёрткойVisualStudio 2012.

Далее необходимо выбрать стороннюю графическую библиотеку для удобства разработкиgraphical user interface (GUI). Наиболее распространённой и практичной библиотекой, которая работает с Ogre3D, является CEGUI (Crazy Eddie’s GUI). Используется версия CEGUI 0.79, так как она успешно интегрируется с выбранной версией движка.

Для разработки 3D моделей и их анимаций используется Blender 3D, так как Ogre имеет ресурс для экспорта (blender2ogre) 3D моделей с дальнейшей возможностью использования в движке. Исходя из совместимости экспортёра с версией Blender 0.79, используется данная версия.

В итоге, для разработки используются следующие средства:

  • Ogre SDK 1.81
  • VisualStudio 2012 (С++)
  • CEGUI 0.79
  • Blender 3Dversion2.66
  • Blender2ogre 0.6 (export)

  1. ПОСТАНОВКА ЗАДАЧИ

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

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

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

В целях реализации приложения используется движок для рендера трёхмерной графики Ogre3D, использующий 3D сцену в качестве интерактивной связи с пользователем.

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

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

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

  1. РАЗРАБОТКА ПРИЛОЖЕНИЯ

Процесс разработки является ключевым и включает в себя несколько взаимосвязанных этапов:

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

После отладки в процессе тестирования приложение будет готово к эксплуатации и сопровождению.

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

  1. Проектирование

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

Разработка разделена на несколько этапов:

  1. Разработка программной логики представления 3D моделей на сцене

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

Рисунок 4 – Схема базового функционала приложения

После остановки камеры, запускается анимация 3D модели, одновременно с запуском анимации рядом выводится информация о 3D модели, где информационный текст зависит от проигрывающейся анимации.

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

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

Популярными библиотеками являютсяTinyXML иRapidXML – оба являются синтаксическими анализаторами файла.  Первый минимален и легко интегрируется в различные программы, а второй наиболее быстрый и содержит большое количество функций. В итоге, для работы сxml файлом потребуется минимальное количество функций. Так как сохранять данные требуется только при выходе и при нажатии кнопки, то быстродействием можно пренебречь, поэтому выбрана библиотекаTinyXML.

  1. Разработка 3Dмоделей

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

Важным аспектом при разработке 3D модели является количество полигонов, которые она содержит. Каждый полигон требует от графического процессора время на расчёты и на рендер этого полигона, поэтому стоит моделировать таким образом, чтобы количество полигонов было минимальным. Однако модель может получиться угловатой и потребуется дополнительное сглаживание. При использовании сглаживания увеличивается количество полигонов в топологии модели, поэтому рекомендуется использовать две или три группы сглаживания.

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

  1. Разработка элементов пользовательского интерфейса.

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

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

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

Чтобы была возможность расставить подгруженные модели в комнате, нужно реализовать меню манипулирования моделями в пространстве.

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

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

  1. Тестирование

В целях отладки программного кода и выявления ошибок требуется провести тестирование на двух этапах разработки:

  • Первый этап тестирования – после реализации базового  функционала сцены
  • Второй этап тестирования состоит из нескольких тест-кейсов:
    • тестирование производительности
    • проверка эргономичности (юзабилити-тестирование)

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

Рисунок 5 – Диаграмма классов приложения

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

  1. Архитектура приложения

3D сцена в библиотекеOgre 3D имеет древовидную структуру, корневым элементом которой является главный узел сцены (RootSceneNode). Каждый узел сцены может иметь своих потомков (SceneNode). Таким образом, все сцены привязаны к главному узлу сцены.

К нескольким потомкам главного узла сцены необходимо привязать сцену в виде комнаты, в которой будут закреплены определённые 3D модели.

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

Архитектура приложения, в соответствии с рисунком 6, состоит из следующих классов:

Менеджер сцены – ключевой класс, отвечающий за рендер сцены, настройки расположения3D моделей на сцене и анимации3D моделей.

Входные данные – класс, который отвечает за считывание входных данных пользователя: обработка клика мышки для определения попадания луча (экземпляр классаRay) на 3D модель, обработка клавиатуры.