Дипломная работа: Автоматизированное редактирование частиц в компьютерной графике
Выходными данными являются отображаемые в окне вывода редактора, либо в заданном окне заданного приложения, графические объекты (частицы), трансформирующиеся под воздействием заданных сил, также выводимые в файл данные.
1.2 Обоснование актуальности темы ДП
Темой дипломного проекта была выбрано автоматизированное редактирование частиц в компьютерной графике. Выбор был сделан в соответствии с анализом тенденций сложившихся в последнее время в мире компьютерной графики, а также по наличию некоторых личных профессиональных стремлений.
В последнее время создание сложных графических анимационных эффектов с использованием специализированных пакетов программных средств получило широчайшее распространение, как в организациях, так и среди обычных пользователей домашних компьютеров. При этом, на фоне большого числа сложных и дорогих коммерческих решений практически отсутствуют более общие и простые бесплатные варианты редакторов, предназначенных для начинающих. Целью разработки было несколько восполнить этот пробел. Ведь часто дизайнеру графического приложения, будь то игра, или что бы то ни было ещё, требуется быстро создать относительно несложный эффект (или его набросок) и сразу же перейти к выполнению других, более приоритетных на данный момент задач. Вместо этого, он зачастую вынужден тратить много времени на изучение документации сложных программных продуктов, создавать в рамках своего обучения тестовые примеры, и т.п. Благодаря данному программному средству, однако, задача быстрого создания эффектов частиц вполне реализуема не только для профессионального дизайнера компьютерной графики, но и для обычного любителя, осуществляющего своё первое знакомство с подобными приложениями.
1.3 Обзор существующих решений
На сегодняшний день существует множество приложений для работы с системами частиц. Вот некоторые наиболее популярные из них:
a) ParticleIllusion;
б) TrapcodeParticular;
в) MagicParticles;
Продукт компании Wondertouch [10] ParticleIllusion на сегодняшний день является, пожалуй, наиболее всеохватывающим средством создания эффектов частиц. Изначально включает довольно большую библиотеку бесплатных эффектов, обновляемую каждый месяц. Обладает высокой расширяемостью (подключение дополнительных эмиттеров, к примеру).
Trapcode Particular – встраиваемый (необязательный) модуль для пакета программ AdobeAfterEffects, предназначенный для редактирования частиц, разработанный компанией Trapcode [11]. Немного менее широкий по возможностям, нежели ParticleIllusion, к тому же требующий для работы предустановленного Adobe After Effects.
Magic Particles – российский генератор частиц компании Астралакс [12]. Позволяет быстро и наглядно создавать визуальные спецэффекты на основе систем частиц. Основное достоинство Magic Particles – мгновенное отображение всех изменений без длительного процесса визуализации. Хотя то же можно сказать и о ParticleIllusion. Аналогично, в состав Magic Particles входит около сотни готовых образцов, которые можно использовать как есть или изменять по своим потребностям. Хотя по многим аспектам функциональности данный продукт уступает ParticleIllusion, к нему постоянно выходят обновления с исправлениями и дополнениями.
Все, за исключением последнего, перечисленные редакторы частиц распространяются платно.
1.4 Цели и задачи проекта
Основной задачей является разработка редактора частиц, позволяющего, в отличие от вышеперечисленных программных продуктов, не тратя большого времени на чтение документации, создавать несложные эффекты. Это должно позволить привлечь большое число пользователей непрофессионалов к использованию приложения, в том числе в целях ознакомления с основными приёмами по созданию эффектов частиц.
Для большей открытости и возможности ручного редактирования выходные файлы редактора должны иметь формат XML. В данной (начальной) версии редактора допускается также хранение в том же выходном файле иных, дополнительных параметров проекта. В будущих версиях, возможно, будет осуществлён переход на многофайловую систему хранения данных проекта, для обеспечения большей ясности при их ручной обработке.
Вывод результирующей графической информации должен осуществляться в окно редактора. Однако при этом должна быть реализована возможность подключения и использования выходных данных редактора (созданных эффектов) к внешним графическим приложениям.
Другой важной задачей является разработка приложения с возможностями последующего расширения. Нужно отметить, что разрабатываемое в рамках дипломного проектирования программное средство является прототипом, реализующим лишь основные функциональные возможности программ данного класса. Поэтому необходимо позаботиться о будущих модификациях основной функциональности, возможностях лёгкого добавления новых параметров, а также поддержке многоплатформенности (поддержка MacOSX). При этом очень важным остаётся вопрос разработки такого пользовательского графического интерфейса, чтобы в него можно было легко и без ущерба для удобства работы дизайнера интегрировать новые элементы, связанные с описанными выше новыми возможностями. Это очень важная задача, поэтому именно проработке графического пользовательского интерфейса следует уделить максимум времени при разработке программного средства. Более подробно о будущих планируемых расширениях редактора будет сказано ниже.
Таким образом, целью работы является разработка доступного, легко расширяемого и простого в использовании редактора частиц.
1.5 Описание программно-алгоритмического обеспечения решения поставленной задачи
1.5.1 Среда для проектирования и разработки программных продуктов MicrosoftVisualStudio 2005
Microsoft Visual Studio — линейка продуктов компании Microsoft, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. В их число входят редакторы и компиляторы языков VisualBasic.NET, VisualC++, VisualC# и некоторые другие. Также, что весьма важно, VisualStudio предлагает подробную информацию о библиотеках и языках, включённых в пакет, в MSDN – информационной библиотеке по продуктам Microsoft, с возможностью получения недостающей информации из Интернета. Любой программист, создающий приложения для Windows, весьма быстро убеждается в абсолютной необходимости данного средства при разработке. Также нужно отметить, что MicrosoftVisual Studio построена в архитектуре, поддерживающей возможность использования дополнений от сторонних разработчиков, что позволяет расширять возможности среды разработки. Более подробную информацию о данном пакете можно получить на официальном сайте производителя [13] и в Интернете.
Среда разработки MSVisualStudio 2005 была выбрана мною, так как создаваемое программное средство ориентировано для использования в ОС Windows. В ходе кодирования приложения, его тестирования и отладки и даже проектирования были использованы различные компоненты среды: компилятор C++, сборщик объектных C++ файлов, отладчик, средства обратного проектирования, позволяющие создавать диаграммы классов для проекта по исходному коду его компилируемых единиц, на основе средства MSVisio 2003.
1.5.2 Язык программирования C++
C++ — компилируемый строго типизированный язык программирования общего назначения. Поддерживает разные парадигмы программирования: процедурную, обобщённую, функциональную; наибольшее внимание уделено поддержке объектно-ориентированного программирования. В 1990-х годах язык стал одним из наиболее широко применяемых языков программирования общего назначения. Более полную информацию можно получить, например, прочитав книгу создателя языка Бьёрна Страуструпа [1].
Язык С++ был выбран мною по причине его высочайшей гибкости и, конечно же, высокой проработанности парадигмы объектно-ориентированного программирования. С применением именно этой парадигмы осуществлена реализация приложения. Приложение полностью построено на объектах C++ классов (в качестве исключения имеется несколько используемых C-функций), при этом широко используются концепции наследования, инкапсуляции и полиморфизма, mutable-члены данных, шаблонные классы и функции. Достаточно широко применяются шаблоны контейнеров из стандартной библиотеки шаблонов (STL), входящей в библиотеку C++. В то же время, ввиду достаточно высокой проработанности используемых в качестве базовых для приложения библиотек среды wxWidgets, отпала необходимость в создании сложных разветвлённых структур отношений родитель-потомок (наследования) на уровне кода разрабатываемого приложения. В основном, наследование свелось к созданию потомков для достаточно большого упорядоченного множества используемых стандартных компонентов wxWidgets.
1.5.3 wxWidgets
wxWidgets представляет собой набор библиотек для создания легко переносимых приложений для платформ Win32, MacOSX, GTK+ и других (X11, Motif, WinCE). Он предоставляет в распоряжение разработчика единый, простой в использовании API. wxWidgets можно использовать с С++, Python, Perl, C#. В отличие от некоторых других межплатформенных средств разработки, wxWidgets позволяет создавать естественно-выглядящие на любой из перечисленных платформ приложения, так как использует собственные графические элементы платформы, вместо их эмуляции. wxWidgets – хорошо продуманный, бесплатный, расширяемый продукт с открытым исходным кодом, что делает его весьма полезным при разработке приложений. Более подробная информация доступна на официальном сайте [14], а также в прочих источниках Интернета.
Ввиду того обстоятельства, что в будущем запланировано расширение приложения в целях реализации возможности использования его под MacOS, для разработки уже первой версии потребовалось использование межплатформенных SDK, таких как wxWidgets или Qt. Первый был выбран ввиду его простоты и доступности.