3. Постановка задачи
Аудитории зачастую нужно получить информацию в понятном и структурированном виде. Для достижения этих целей разрабатываются различные виды презентаций, виртуальных туров или иных систем визуализаций.
Информация, поданная в виде электронных компьютерных презентаций, легко усваивается конечным потребителем. Такие презентации незаменимы на конференциях и всевозможных защитах проектов, это отличный способ анонсировать новую информацию, продукт, товар, услугу. Интерактивная презентация – самый быстрый и современный способ донести любую информацию.
Презентацию можно представить с элементами видео или картинок, но больше информации можно донести при помощи 3D сцены. Информация, донесенная 3D сценой, будет более полной и детальной, что позволит в трёхмерном представлении обратить внимание аудитории на ключевые моменты в презентации.
В целях реализации приложения используется движок для рендера трёхмерной графики Ogre3D, использующий 3D сцену в качестве интерактивной связи с пользователем.
Нужно подробно предоставить информацию аудитории о каких-либо объектах, и наша задача состоит во внедрении интерактивной связи с элементами сцены в 3D презентацию. Под интерактивностью понимается способность системы к взаимодействию с пользователем, в нашем случае требуется добавить в функциональность сцены обратную связь с объектами сцены.
Рендеринг трёхмерной графики нагружает графический и центральный процессор, это нужно учесть и реализовать альтернативные настройки в интерфейсе сцены, позволяющие ослабить нагрузку на процессор. Среди настроек могут оказаться: отключение теней у объектов, а также настройка глобального освещения сцены, переключение на точечные источники света.
Таким образом, при разработке приложения нужно учитывать производительность слабых процессоров. В этих целях после завершения разработки, необходимо провести тестирование приложения на предмет производительности на различных операционных системах и различных видах процессоров.
4. Разработка приложения
Процесс разработки является ключевым и включает в себя несколько взаимосвязанных этапов:
Проектирование – на данном этапе анализируются и подробно описываются задачи для дальнейшей разработки, удовлетворяющие целям проекта.
Разработка – написание кода, удовлетворяющего требованиям проектной документации, реализованной на этапе проектирования.
Тестирование – процесс исследования приложения на предмет обнаружения ошибок и их своевременное исправление.
После отладки в процессе тестирования приложение будет готово к эксплуатации и сопровождению.
Также требуется реализовать руководство пользователя для обеспечения возможности самостоятельного освоения и применения программы.
4.1 Проектирование
Важным этапом разработки является проектирование программной логики приложения. Проектирование требуется для определения этапов разработки и дальнейшего видения проекта.
Разработка разделена на несколько этапов:
Разработка программной логики представления 3D моделей на сцене
В первую очередь необходимо настроить сцену, как ключевой элемент для дальнейшей разработки. После чего требуется запрограммировать базовый функционал, включающий в себя выделение любой из загруженных 3D моделей, находящейся на сцене. После настройки выделения 3D модели, нужно реализовать движение камеры таким образом, чтобы при выделении объекта, она приближалась к нему на заданное расстояние в соответствии с рисунком 4.
Рисунок 4 – Схема базового функционала приложения
После остановки камеры, запускается анимация 3D модели, одновременно с запуском анимации рядом выводится информация о 3D модели, где информационный текст зависит от проигрывающейся анимации.
Так как требуется реализовать возможность подгрузки и рендера множества объектов на сцене, нужно подгружать требуемые ресурсы из директории в виде zip архива с моделью, затем задать расположение всех этих моделей на сцене.
Также необходимо заранее продумать сохранение данных программы после её закрытия, так как планируется предоставить пользователю возможность манипулирования моделями на сцене. Для сохранения данных программы можно использовать текстовый xml файл. Так как движок не поддерживает работу с xml файлами, требуется выбрать стороннюю библиотеку для работы с ними.
Популярными библиотеками являются TinyXML и RapidXML – оба являются синтаксическими анализаторами файла. Первый минимален и легко интегрируется в различные программы, а второй наиболее быстрый и содержит большое количество функций. В итоге, для работы с xml файлом потребуется минимальное количество функций. Так как сохранять данные требуется только при выходе и при нажатии кнопки, то быстродействием можно пренебречь, поэтому выбрана библиотека TinyXML.
Разработка 3D моделей
При создании трехмерных моделей в целях использования в движке для рендера, требуются знания особенностей их моделирования. Движки используют различную топологию в 3D моделях: многоугольные полигоны, треугольные полигоны и другие. Ogre3D использует треугольные полигоны.
Важным аспектом при разработке 3D модели является количество полигонов, которые она содержит. Каждый полигон требует от графического процессора время на расчёты и на рендер этого полигона, поэтому стоит моделировать таким образом, чтобы количество полигонов было минимальным. Однако модель может получиться угловатой и потребуется дополнительное сглаживание. При использовании сглаживания увеличивается количество полигонов в топологии модели, поэтому рекомендуется использовать две или три группы сглаживания.
Для нашего проекта требуется реализовать интерьер в виде комнаты, в котором будут располагаться будущие 3D модели. Интерьер не требует большого количества полигонов, поэтому стоит реализовать его с цельной сеткой, так как цельный меш, имеющий большое количество полигонов, меньше нагружает сцену, чем раздельные меши.
Разработка элементов пользовательского интерфейса.
Интерфейс – важная часть любой программы, так как именно он является границей между программным функционалом и конечным пользователем, с помощью которого происходит взаимодействие и манипулирование программой.
Интерфейс разрабатывается при помощи сторонней графической библиотеки CEGUI и отвечает за связь с пользователем, а также за меню настроек, которое отвечает за настройку сцены и моделей.
Меню настроек должно включать в себя альтернативные настройки сцены в целях повышения производительности приложения, в качестве таких настроек могут быть: настройка теней и глобального освещения. Учитывая то, что система реализуется по принципу масштабируемости (неограниченное количество подгружаемых моделей), нужно также предусмотреть масштабируемость комнаты, в которой располагаются модели, то есть требуется регулировать масштаб осей с помощью интерфейса.
Чтобы была возможность расставить подгруженные модели в комнате, нужно реализовать меню манипулирования моделями в пространстве.
Так как выбранная графическая библиотека не поддерживает кириллическую кодировку по умолчанию, требуется реализовать декодер для русского алфавита.
Требуется выводить информацию в виде текста при выборе модели, поэтому нужно реализовать загрузку текста из файла, чтобы пользователь смог отредактировать или создать новый информационный текст для модели.
Тестирование
В целях отладки программного кода и выявления ошибок требуется провести тестирование на двух этапах разработки:
Первый этап тестирования – после реализации базового функционала сцены
-
Второй этап тестирования состоит из нескольких тест-кейсов:
тестирование производительности
проверка эргономичности (юзабилити-тестирование)
Исходя из описанных этапов проектирования, разработана диаграмма классов в соответствии с рисунком 5, по которой требуется реализовать программную часть приложения. Диаграмма направлена на представление статической структуры модели разрабатываемой системы, а также на определение типов классов и связей между ними, которые планируется использовать в программном коде.
Рисунок 5 – Диаграмма классов приложения
Из диаграммы видно, что реализовано несколько классов, ключевым из которых является менеджер сцены, в котором происходит настройка всех параметров сцены. Также в отдельные классы вынесен графический интерфейс, загрузка текстов и прочие настройки.
|