на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Автоматизированное редактирование частиц в компьютерной графике
p align="left">Все вышеописанные действия представляют собой одну итерацию цикла быстрого прототипирования. Этот цикл продолжается до тех пор, пока пользователь не будет удовлетворен тем, каким образом система отображает поставленные к ней требования. Команда разработчиков проекта продолжает выполнять этот процесс до тех пор, пока пользователь не согласится, что быстрый прототип в точности отображает системные требования.

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

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

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

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

- при разработке образовывались постоянные, видимые признаки прогресса в выполнении проекта, благодаря чему заказчики чувствовали себя уверенно;

- благодаря меньшему объему доработок были уменьшены затраты на разработку;

- благодаря тому, что проблемы, как правило, выявлялись до привлечения дополнительных ресурсов, сократились общие затраты;

- было обеспечено управление рисками;

2.2 Структурная модель приложения

Приложение состоит из двух основных сущностей:

а) очередь эмиттеров;

б) оконно-интерфейсная часть;

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

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

Отдельно взятый набор частиц представлен внутренними структурами данных эмиттера. Здесь хранятся все параметры эмиттера и каждой его частицы:

а) для эмиттера:

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

2) скорость;

3) размеры;

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

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

б) для частицы:

1) текстура;

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

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

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

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

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

Для реализации интерфейсной части были использованы графические объекты вышеописанного межплатформенного движка wxWidgets.

Корневым элементом интерфейсной части является основной фрейм. Основной фрейм служит для расположения фрейма ввода данных, фрейма управления очередью эмиттеров, фрейма вывода. Также основному фрейму принадлежат системное меню, панели инструментов и статуса.

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

Фрейм управления очередью эмиттеров представляет собой панель со схематическим отображением отдельных эмиттеров в виде пиктограмм. К функциям фрейма относятся добавление и удаление эмиттеров, копирование эмиттера со всеми его параметрами, изменение текущего эмиттера, а также порядка прорисовки эмиттеров. Для копирования и удаления эмиттеров при активном фрейме управления очередью можно использовать горячие клавиши (Ctrl+V, Ctrl+X, соответственно).

Фрейм вывода объединяет в себе всю функциональность вывода графических данных приложения. Для максимально быстрого вывода используется низкоуровневая работа с аппаратным обеспечением видеосистемы, осуществляемая посредством драйвера OpenGL. Доступ к платформенно-независимому конвейеру OpenGL осуществляется, в свою очередь, через интерфейс wxWidgets. Именно на уровне фрейма вывода осуществлено связывание оконной системы и функциональности рисования очереди эмиттеров, не зависящей от конкретного окна и работающая с буферами OpenGL. Средства wxWidgets используют для этого те или иные системные библиотеки, в зависимости от целевой платформы. Для Windows это WGL, для Mac OS X - AGL, а также стандартные Carbon (для С++) и Cocoa (Objective С).

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

Системное меню имеет следующую структуру:

- меню “Файл”, отвечающее за общий сброс, сохранение и загрузку, выход из приложения;

- меню “Очередь”, отвечающее за установку режима отображения эмиттеров (Playback, Loop playback, Static), добавление и удаление текущего эмиттера, копирование эмиттера и набора его параметров, сброс всех эмиттеров;

- меню “Информация”, позволяющее получить информацию о способах использования редактора, а также о разработчике;

Панель инструментов содержит следующие компоненты:

а) функции установки режима отображения эмиттеров:

1) Playback;

2) Loop playback;

2) Static;

б) функции сохранения и загрузки:

1) Save;

2) Load;

в) функции настройки отображения:

1) Back color;

2) Back image;

3) режим смешивания;

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

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

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;

з) PSOutputFrame используется для отображения результатов работы приложения (вывода вычисленных графических примитивов - частиц); объект MyCanvas - предоставляется OpenGL в качестве контекста визуализации;

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

2.6 Требования к программным, аппаратным ресурсам и ОС

Для сборки приложения необходимо наличие набора встраиваемых (статических) библиотек среды wxWidgets, установленных в системный каталог (или в один из каталогов поиска статических библиотек, указанных в настройках среды разработки Microsoft Visual Studio 2005 и в свойствах проекта). Для корректной работы приложения необходимо наличие в системе динамической библиотеки OpenGL (любой версии, по умолчанию с OS Windows поставляется версия 1.0). Драйвер OpenGL используется для растеризации графических данных, генерируемых редактором.

Страницы: 1, 2, 3, 4



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.