Автоматизированное редактирование частиц в компьютерной графике

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование

ение Г).

 

2.3 Функциональная модель приложения

 

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

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

Функция отображения реализует вывод на экран создаваемых эффектов.

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

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

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

 

2.4 Информационная модель приложения

 

Информационная модель приложения отражает потоки информации, проходящие между его модулями и внешними сущностями.

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

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

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

После ввода данные направляются в первую основную сущность приложения - очередь эмиттеров. Там они хранятся, используясь при выводе (некоторые поля модифицируются при этом).

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

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

Обобщая вышесказанное, к основным потокам данных приложения можно отнести:

а) ввод пользователем в систему параметров эмиттеров:

1) координаты в двумерной декартовой системе;

2) скорость;

3) размеры эмиттера;

4) значения разброса частиц;

5) стартовая задержка и длительность генерации;

б) ввод пользователем в систему параметров частиц эмиттера:

1) текстура;

2) время жизни;

3) скорость по осям;

4) гравитация по осям;

5) значения начальных и конечных растяжений;

6) значения начального и конечного цветов (32bit), по каналам;

в) вывод графической информации системы эмиттеров в буфер изображения;

Графически информационная модель приложения представлена в Приложении В, на диаграмме потоков данных.

 

2.5 Объектная модель приложения

 

Так как приложение было разработано с использованием возможностей объектно-ориентированного языка С++, следует раскрыть его объектную структуру. Подробно объектная структура программного средства описана в Приложении Г, здесь же можно привести общий обзор системы классов.

а) класс MyApp, отвечает за инициализацию приложения, создаётся и управляется полностью из среды wxWidgets. Это корневой класс всей проектируемой части приложения.

б) модуль очереди эмиттеров. Включает в себя:

1) класс ParticleSystemChain, то есть непосредственно саму очередь; в системе существует singleton-объект данного класса;

2) содержащиеся в очереди эмиттеры - объекты класса ParticleSystem;

3) для формирования и использования корректных OpenGL текстур на основании битовых изображений используются объекты класса MyTexture.

в) класс MainFrame - корневой класс оконного пользовательского интерфейса; в системе существует singleton-объект данного класса;

г) класс PSChainFrame представляет собой окно управления очередью систем;

д) объекты PSLabel применяются в PSChainFrame для представления эмиттеров, представляют собой пиктограммы;

е) PSInputFrame используется для ввода пользовательских данных активной системы;

ж) объекты классов MySpinCtrld и MySpinEditCtrld - пользовательские элементы управления, используемые для ввода чисел с плавающей точкой из указанного диапазона, применяются в PSInputFrame;

з)