фото
Магдалина Сергей Николаевич

Факультет
Компьютерных наук и технологий
Кафедра
Прикладной математики и информатики
Специальность
Программное обеспечение автоматизированных систем
Тема выпускной работы
Исследование средств разработки систем текстурного моделирования
Научный руководитель
Доцент, к.т.н. Карабчевский Виталий Владиславович
Реферат по теме выпускной работы
Введение
С самого своего появления компьютеры прочно вошли в жизнь человека, став инструментом решения самых разнообразных задач — от хранения и обработки информации в базах данных до моделирования и изучения самых разнообразных процессов и явлений. Однако, если на заре своего существования ученым приходилось работать с голыми цифрами, то с развитием мощности аппаратной части компьютеров стало возможным визуализировать задачи, решаемые компьютером. Это значительно повысило наглядность и управляемость проистекаемых процессов, сделало возможным использование графических интерфейсов для работы с системами.

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

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

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

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

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

С учетом этих проблем, можно говорить, что задача разработки новых, более эффективных и совершенных методов и средств обработки графической информации является на сегодняшний день достаточно актуальной.
Предполагаемая научная новизна
Существующие подходы к работе с графической информацией (наиболее распространенные — растровый и векторный) имеют как свои достоинства, так и недостатки. В данной работе планируется разработка метода, который объединял бы в себе достоинства существующих подходов, тем самым расширяя возможности по работе с графической информацией.
Предполагаемые практические результаты
В качестве практического результата работы планируется получить работоспособный графический редактор, который был бы программной реализацией разработанного подхода к работе с графической информацией. Также планируется сделать детальный анализ эффективности работы редактора в сравнении с существующими аналогами.
Обзор основных методов обработки графики на примере существующих пакетов
Наиболее популярными и универсальными графическими редакторами на данный момент являются Adobe Photoshop и Corel Draw. В зависимости от версий, они имеют различный состав инструментов, поддержки форматов и оптимизацию, однако общая их ориентированность не меняется. В связи с этим, принято решение об исследовании именно этих двух редакторов, как самых популярных на данный момент, а также имеющих самые широкие возможности по работе с графикой.

Кроме того, пакеты Adobe Photoshop и Corel Draw являются представителями различных форм представления и обработки графической информации. В то время, как Adobe Photoshop является растровым редактором и больше ориентирован на обработку пикселей изображения, то Corel Draw — редактор векторной графики, предоставляющий возможность формирования изображения при помощи различных объектов.

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


Растровая модель. Adobe Photoshop

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

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

Кроме различных художественных приемов, которые позволяет реализовать PhotoShop, он имеет множество встроенных инструментов и эффектов. Рассмотрим их подробнее на примере программы PhotoShop 7.0 [2].

Как уже было сказано, большинство операций выполняются не над изображением в целом, а над его отдельными слоями. Слои создаются различными способами — непосредственным созданием нового слоя, новым слоем через копирование существующего, слоем через вставку изображения из файла и др. Окно работы со слоями показано на рисунке 1.

Рисунок 1
Рисунок 1 — Панель работы со слоями в Adobe Photoshop.

Прежде, чем начать обработку изображения или его фрагмента в PhotoShop, сперва необходимо осуществить выделение нужной его части. Для этого предусмотрены различные как инструменты простого выделения пикселей, так и более сложные. К простым инструментам выделения относят: Эти инструменты позволяют выделить группу пикселей, которая составляет простую геометрическую фигуру — эллипс, прямоугольник, одну строку или столбец. Панель выбора инструмента простого выделения показана на рисунке 2.

Рисунок 2
Рисунок 2 — Панель выбора инструментов простого выделения.

Кроме инструментов простого выделения в PhotoShop предусмотрены и более сложные инструменты для выделения.
На рисунке 3 представлена панель выбора инструмента «Лассо».

Рисунок 3
Рисунок 3 — Панель выбора инструмента «Лассо».

Кроме простых инструментов выделения в Photoshop используются также более сложные, позволяющие выполнять выделение областей произвольной формы.
Пример работы инструментом «Полигональное лассо» показан на рисунке 4. Выделение обозначено пунктирной линией.

Рисунок 4
Рисунок 4 — Пример работы инструмента «Полигональное лассо».

Для прямого рисования используются инструменты «Кисть» и «Карандаш», который по сути является частным случаем «Кисти».
Инструмент «Кисть» предназначен для рисования на выделенном фрагменте изображения мышью. В зависимости от вида рисования над пикселями производятся те или иные арифметические операции — стандартная замена цвета, выбор самого темного или светлого и т.п.
Пример работы «Кистью» показан на рисунке 5.

Рисунок 5
Рисунок 5 — Пример работы инструментом «Кисть».

Для работы с текстом предусмотрены как простые инструменты создания текста, так и инструменты создания маски из текста.
Для нанесения текста на изображение предусмотрен инструмент «Текст» и инструмент «Вертикально ориентированный текст».
Инструмент «Текст» предназначен для нанесения текста произвольного размера и шрифта на изображение. Текст выводится в прямоугольном выделении, которое может быть растянуто и повернуто, при этом текст внутри выделения также поворачивается.
Пример нанесения простого (слева) и вертикально ориентированного (справа) текста, показаны на рисунке 6.

Рисунок 6
Рисунок 6 — Панель свойств и пример работы инструмента «Текст».

Основная ориентация PhotoShop — анализ цветового тона изображения, обработка целых групп пикселей, цветовая и гамма коррекция, воздействие различными эффектами на выделенные участки изображения. Для этого в программе предусмотрен широкий набор функций, регулировок и эффектов.
Первой функцией, позволяющей организовать работу с изображением в целом, является возможность выбора цветовой модели, используемой при редактировании. Основными цветовыми моделями являются: Adobe PhotoShop оснащен мощнейшим инструментом, позволяющим влиять на цветовые характеристики изображения в целом и его частей в частности — управление уровнями цветовых компонент, яркости, контраста, оттенков. Инструменты изменения уровней основаны на спектральном анализе пикселей изображения и дальнейшем воздействии на него. Покажем действие инструментов «Оттенок» и «Уровни» на изображение на примере.

Пусть дано исходное изображение, представленное на рисунке 7.

Рисунок 7
Рисунок 7 — Исходное изображение.

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

Рисунок 8
Рисунок 8 — Применение операции «Оттенок».

Более тонким инструментом воздействия на изображение является инструмент «Уровни». Он предназначен для регулировки цветов пикселей в зависимости от их исходного цвета. Окно работы с инструментом «Уровни» представлено на рисунке 9.

Рисунок 9
Рисунок 9 — Окно работы с инструментов «Уровни».

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

Рисунок 10
Рисунок 10 — Результат применения инструмента «Уровни».

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


Векторная модель. Corel Draw

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

Corel Draw [3] является векторным графическим редактором, что подразумевает основную ориентированность его инструментов и возможностей на работу с объектами сцены. Для простого выбора и просмотра всех имеющихся объектов проекта предусмотрен специальный менеджер объектов, вид которого показан на рисунке 11.

Рисунок 11
Рисунок 11 — Менеджер объектов Corel Draw.

Изображение разбито на слои, в каждый из слоев может входить произвольное количество объектов. Каждый объект обладает своими уникальными свойствами, присущими объектам его типа. Кроме того, объекты могут быть сложными и состоять из ряда более простых объектов. К каждому объекту может быть применен набор эффектов, видоизменяющих его внешний вид.
Каждый объект, как правило, имеет два основных элемента — заливка и контур. Для некоторых типов объектов какой-то из элементов может быть незаметен из-за особенностей отображения объекта. На рисунке 12 показан эллипс со светло-серой заливкой и черным контуром.

Рисунок 12
Рисунок 12 — Эллипс со светло-серой заливкой и черным контуром.

Так как Corel Draw графический редактор, ориентированный на работу с объектами, он имеет множество инструментов для их создания и преобразования.
Выделение объектов осуществляется специальным инструментом «Выделение», который выделяет объект, на котором был произведен щелчок мышью. Другим способом выделения является менеджер объектов, упомянутый выше. Он обеспечивает легкое выделение объектов, в том числе составных частей, из которых состоят сложные объекты. Благодаря краткой сводке о свойствах и имени объекта, можно легко найти искомый объект.

Для создания объектов в Corel Draw предусмотрены несколько инструментов. Каждый инструмент предназначен для создания объектов своего типа.
Объекты разных типов имеют разные свойства, следовательно, каждый инструмент по созданию объектов имеет свои собственные настройки и способ использования.
На рисунке 13 представлен прямоугольник со степенью скругления углов — 50 градусов, а также панель свойств инструмента «Прямоугольник», которая отображает параметры выделенного прямоугольника.

Рисунок 13
Рисунок 13 — Объект класса «Прямоугольник» и панель свойств инструмента «Прямоугольник».

Кроме объектов класса «Прямоугольник» Corel Draw позволяет создавать и другие объекты. Их примеры показаны на рисунке 14.

Рисунок 14
Рисунок 14 — Объекты различных классов, созданные в среде Corel Draw.

Наравне с инструментами создания объектов используются и инструменты наложения разнообразных эффектов на них. Эти инструменты не создают новых объектов и для применения требуют наличия уже созданных объектов. При применении инструмента к объекту, в его свойствах появляется список модификаторов и наложенных эффектов. Эффекты служат для изменения внешнего вида объектов.
На рисунке 15 представлены три объекта.
Первый (слева) — пятиугольник, к которому применен инструмент «Интерактивное выдавливание», который позволяет создать иллюзию объемности двумерного объекта путем построения его проекции.
Второй (сверху) — пятиугольник, к которому применен инструмент «Интерактивная тень». С помощью этого инструмента можно создать эффект падающей от объекта тени.
Третий объект (снизу) — прямоугольник, к которому применен инструмент «Интерактивный контур». Этот инструмент добавляет к объекту указанное количество контуров «наружу» или «вовнутрь». Контуры могут иметь изменяющийся с каждым контуром цвет, а также размер.

Рисунок 15
Рисунок 15 — Демонстрация инструментов наложения эффектов.

Corel Draw имеет замечательно приспособлен для создания текста с самым различным оформлением. В программе есть два вида текста : простой и художественный.
Благодаря векторному подходу, Corel Draw может работать с текстом как с объектом — это позволяет легко изменить не только внешний вид текста, но и сам текст.
Пример художественного текста с примененным к нему инструментов «Интерактивное выдавливание» представлен на рисунке 16 (сверху). На том же рисунке представлен пример простого текста (снизу).

Рисунок 16
Рисунок 16 — Пример художественного текста (сверху) и простого текста (снизу).

Corel Draw — векторный графический редактор, предназначенный для создания коллажей, плакатов и рекламных щитов самого разного уровня сложности. Для этого он имеет в своем арсенале множество мощных инструментов для создания объектов разных типов, а также изменения внешнего вида этих объектов при помощи различных эффектов.
Конечное изображение создается при помощи компоновки объектов, поэтому Corel Draw имеет удобный менеджер объектов, который позволяет осуществлять быстрый и легкий доступ к каждому из них. Редактор не имеет инструментов прямого изменения растра изображения — он формируется из векторных объектов как конечный продукт работы программы.


Сравнение редакторов и подходов

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

К таким операциям относится и прямое рисование на изображении. В Photoshop оно выполнятся путем выделения отдельных групп пикселей с последующим применением к ним инструментов рисования — «Кисть», «Карандаш», «Заливка». Они бывают очень полезны, когда требуется ручная коррекция мелких деталей изображения. Corel Draw оперирует понятием «Заливка», однако применительно к объектам, что накладывает на нее ряд ограничений.

В то же время, векторная графика имеет один неоспоримый плюс по сравнению с растровой — это возможность масштабирования без потери качества [4]. Это возможно потому, что в векторном редакторе объекты хранятся в математическом виде, что позволяет строить их сколь угодно точно. Corel Draw — векторный редактор, поэтому точность и четкость отображения объектов зависит только от аппаратных возможностей. На большом экране объект Corel Draw будет выглядеть более четко, чем на маленьком, в то время как в Photoshop мелкое изображение, растянутое до больших размеров, будет иметь размытые очертания.

Если говорить об удобстве выделения, то в Corel Draw такая проблема практически отсутствует. Благодаря менеджеру объектов, для выделения объекта или его части, если он составной, достаточно одного щелчка мышью. Однако, в Corel Draw нет возможности выделить часть цельного объекта (к примеру, часть круга). Каждый объект может состоять из нескольких частей, однако и они не могут быть разбиты до уровня, ниже базовых объектов редактора. Photoshop — растровый редактор и его документ состоит из пикселей. Photoshop не различает объектов на изображении — для него все пиксели одинаковы и только человек может различить объекты на изображении по смысловому значению, как правило, по резко отличающемуся от фона цвету. На этом принципе основаны некоторые инструменты выделения Photoshop. Несмотря на то, что выделать нужную область пикселей бывает не так просто, компания Adobe постаралась максимально упростить эту задачу, введя интеллектуальные инструменты выделения — «Магнитное лассо», «Волшебная палочка». При этом, если область выделения не сложна, ее можно выделить и более простыми инструментами, вручную. Однако, в любом случае, делается это не так просто, как в Corel Draw.

Благодаря тому, что в Corel Draw художественный текст — такой же объект, как и все прочие, к нему можно применить те же эффекты и преобразования, что и к остальным объектам. Благодаря этому, в Corel Draw можно создавать целые узорные шрифты. Но все же ему не хватает возможности прямого редактирования растра для нанесения мелких деталей на текст для придания более естественного вида. Photoshop имеет весьма скудные возможности для работы с текстом. Он позволяет наносить на изображение относительно простой в оформлении текст, которому без специальных ухищрений и художественных эффектов не так просто придать оригинальный красочный вид.


Итоги

Оба подхода к работе с графикой имеют свои преимущества и свои недостатки. Растровому редактору зачастую не хватает универсальности и легкости в обращении векторного, а векторному — вниманию к деталям растрового. В то же время, ни один, ни другой, не позволяют в достаточной степени автоматизировать создание изображения. Многие изображения было бы проще построить, задав программе какие-то известные параметры и алгоритм построения, чем вручную строить это изображение. К примеру, текстура дождя может состоять из капель различного цвета, размера, формы. Чтобы создать такую вручную, дизайнеру пришлось бы долго вручную располагать объекты на изображении. Photoshop имеет различные узорные кисти, однако, они все же не дают той свободы, которой обладает, по сути, программа, генерирующая изображение по параметрам.

В связи с этим, логичным было бы создание редактора, который сочетал бы в себе основные достоинства растрового и векторного подхода к работе с графикой [5].
Разработка редактора смешанного типа
Суть объединения растрового и векторного подходов заключается в том, что векторные объекты, изначально представленные в виде математических формул, в конечном итоге для вывода на устройство вывода все равно приводятся к растровому виду. В связи с этим можно утверждать, что растровый образ объектов это отображение математически описанных объектов на конкретное устройство вывода. Поэтому, можно выделить две составные части в устройстве системы — растровую и векторную.


Растровая часть

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

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

В область вывода должен выводиться итоговый вид сцены, поэтому доступ к прямому ее редактированию будет закрыт — область вывода служит лишь для вывода промежуточной и конечной графической информации. Сама же эта информация хранится в слоях. Каждый слой состоит из собственной растровой области, размер которой равен размеру области вывода, а также набора объектов, находящихся на этом слое. На рисунке 17 продемонстрирована слоистая модель документа.

Рисунок 17
Рисунок 17 — Слоистая модель документа.

Здесь : Как можно увидеть из рисунка 17, конечное изображение на области вывода формируется путем наложения образов слоев друг на друга. Образ слоя получается путем наложения образов объектов, расположенных на этом слое, друг на друга, и затем — на растровую поверхность слоя. Сама растровая поверхность слоя представляет собой массив пикселей, доступный для прямого редактирования.
Это значит, что для растровой области каждого слоя доступны такие операции, как выделение, прямое рисование на поверхности, цветовые и тоновые коррекции. То есть такая модель в полной мере реализует все основные возможности растрового подхода.


Векторная часть

Кроме растровой области в каждом слое также может находиться некоторое количество объектов.
Объекты обладают как общими для всех объектов свойствами, так и свойствами, присущими отдельным видам объектов [6].

Общими для всех объектов свойствами являются : Рисунок 18 иллюстрирует смысл каждого из свойств объекта.

Рисунок 18
Рисунок 18 — Общие свойства объекта.

Здесь : Кроме общих свойств объекты каждого вида имеют и свои собственные, присущие только им. Таковым, например, является радиус для круга. При этом эти специфические свойства являются формообразующими — по ним определяется форма объекта, его размеры и битовый образ. Так, зная радиус круга, можно определить его ширину и высоту [7].

Объекты могут быть вложенными друг в друга. В один объект-контейнер может быть вложено несколько других объектов, которые, в свою очередь, также могут быть контейнерами для других объектов. Это необходимо для повышения удобства работы, логической группировки, а также более легкого управления объектами.

В случае, если объект является вложенным, то интерпретация его общих свойств меняется. В этом случае положение объекта задается не в пространстве слоя, а в пространстве объекта-контейнера. Иными словами, координаты центральной точки задаются не относительно левого-верхнего края растровой области слоя, а от центральной точки объекта-контейнера. Как и поворот — не в глобальной системе координат, а в СК объекта контейнера. Таким образом, если у объекта-контейнера значение поворота равно a, а вложенного объекта : b, то в глобальной системе координат вложенный объект будет повернут на угол a + b. Однако, битовый образ вложенных объектов формируется в соответствии с глобальной позицией, чтобы избежать лишних пространственных операций при выводе объектов на экран.

На рисунке 19 проиллюстрирован способ интерпретации общих параметров объектов в зависимости от группировки.

Рисунок 19
Рисунок 19 — Интерпретация свойств объектов в зависимости от группировки.

Мы видим два объекта, координаты которых (x1,y1) и (x2,y2). Затем каждый из объектов был повернут вокруг своей центральной точки на углы a1 и a2 соответственно. При этом координаты центральных точек объектов не изменились.
Третий кадр анимации иллюстрирует группировку этих объектов в один. При этом у вновь сформированного объекта имеется его собственная центральная точка, которая имеет координаты (x3,y3). Также можно заметить, что координаты исходных объектов, (x1',y1') и (x2',y2') теперь задаются в пространстве координат вновь созданного объекта с центром в его центральной точке.
В четвертом кадре анимации полученный объект-контейнер поворачивается вокруг своей центральной точки на угол a3. При этом можно заметить, что в пространстве документа положение и поворот объектов 1 и 2 меняются. Так, угол поворота первого объекта стал равен a1 + a3, второго : a2 + a3 [8].
В то же время, положение объектов внутри объекта-контейнера осталось неизменным, что видно на пятом кадре анимации.

Каждый объект в системе имеет контур и, в случае если контур замкнутый, заливку. Контур описывается математическими уравнениями, вид которых зависит от вида объекта. Это может быть одна или совокупность функций вида y = f(x). В случае если графики функций (контур объекта) образуют замкнутую область, объект может иметь заливку. Примером объекта с замкнутым контуром является прямоугольник, объекта с не замкнутым контуром — линия или кривая, не пересекающая саму себя [9].

Заливка объектов может быть нескольких типов:

Динамическое формирование сцены

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

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

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

Решить эту проблему поможет концепция данных и команд, широко применяемая в программировании. Ее суть заключается в том, что программа (в нашем случае — метод построения сцены) и данные (в нашем случае — параметры объектов) неотделимы друг от друга и взаимозаменяемы. То есть данные для программы могут интерпретироваться как команды, и команды — как данные.

Применительно к графическому редактору, это означает, что в зависимости от значения тех или иных данных документа, построение сцены будет идти тем или иным образом. Простым примером этого является связывание двух объектов по некоторому принципу. Таковым, в частности, является фигура — равносторонний треугольник, вписанный в круг (рис. 20). Здесь размер треугольника однозначно связан с размером круга, в который он вписан. Конечно, можно просто создать два объекта — треугольник и круг, сгруппировать их и масштабировать как один. Однако, такой подход позволяет решить лишь узкий круг задач, оказываясь бессильным в случае более сложной связи между объектами [10].

Рисунок 20
Рисунок 20 — Треугольник, вписанный в круг.

Итак, мы определили, что свойства объектов (данные) должны быть некоторым образом связаны между собой. Эту связь может обеспечить событийная модель, также применяемая в программировании. Ее суть заключается в том, что при наступлении некоторого события, программа должна выполнить определенные действия. Наиболее распространенными событиями в графическом редакторе являются такие события, как создание объекта, формирование его битового образа (отрисовка), изменение размеров и свойств, перемещение.

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

Для реализации подобного поведения каждый объект имеет набор стандартных событий, к каждому из которых можно написать свой обработчик. Обработчики событий состоят из набора команд, выполняемых в случае возникновения соответствующего события. Такими командами могут быть: Кроме конкретных свойств, используемых редактором по умолчанию (таких, как цвет, радиус круга и т.п.), объекты также могут иметь набор абстрактных свойств разных типов, предназначенных специально для использования в обработчиках. Эти данные хранятся в глобальной базе данных документа и при необходимости копируются в поля данных объектов. Рисунок 21 иллюстрирует распределение данных в системе.

Рисунок 21
Рисунок 21 — Распределение данных в системе.

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

Чтобы хранить данные о разрабатываемой сцене, графический редактор предусматривает сохранение файлов в специальном формате, который бы позволял вернуться к работе над сценой без потери рабочих данных. Такой формат файлов сцены выходит за рамки стандартных форматов для хранения изображений (таких, как bmp, jpeg...) так как хранит в себе не конечное двумерное отображение сцены, а все слои, объекты и данные, из которых сцена и состоит. Содержимое файла такого формата может быть таким :
Выводы и перспективы развития
Разрабатываемый графический редактор является попыткой совместить в себе два базовых подхода работы с графикой — векторный и растровый. В то время, как растровый подход отличается низким уровнем абстракции и позволяет вести обработку изображения на уровне отдельных пикселей, тем самым давая возможность производить очень точную коррекцию изображения, векторный подход предоставляет более высокоуровневые инструменты для создания и обработки графических объектов, во многом автоматизируя процесс создания и обработки графической информации [12].

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

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

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

Суммируя изложенное, можно сказать, что данная работа имеет большие перспективы в сфере практического применения и важным является проведение разработок в этом направлении. Однако, на момент написания этого сайта работа над системой еще не завершена. Полные результаты разработки могут быть получены у ее авторов после января 2012 года.
Литература
  1. Магдалина С.Н., Карабчевский В.В. Визуальное создание двумерных текстур средствами DirectX 9.0C // Комп'ютерний моніторинг та інформаційні технології — Матеріали V науково-технічної конференції студентів, аспірантів та молодих науковців. — Донецьк : ДонНТУ — 2009. — 368 с.: іл.
  2. Александр Тайц, Александра Тайц. Самоучитель Adobe Photoshop 7. — СПб.: БХВ-Петербург, 2005. — 688 с.: ил.
  3. Миронов Д. Corel Draw 11. Учебный курс. СПб.: Питер, 2002. — 448 с.: ил.
  4. Магдалина С.Н., Карабчевский В.В. Создание графического редактора для обработки текстур средствами DirectX 9.0C — Матеріали третьої міжнародної науково-технічної конференції "Моделювання та компьютерна графіка". — Донецьк : ДонНТУ — 2009.
  5. Магдалина С.Н., Карабчевский В.В. Визуальное создание двумерных текстур средствами DirectX 9.0c — Наукові праці Донецького національного технічного університету. Серія "Інформатика, кібернетика і обчислювальна техніка" (ІКОТ-2009). Випуск 10(153) — Донецьк : ДонНТУ. — 2009. — 368с.
  6. Магдалина С.Н., Карабчевский В.В. Визуальное создание изображений средствами Direct2D с использованием растрово-векторного подхода
  7. Станислав Горнаков. DirectX 9: Уроки программирования на С++. СПб.: БХВ — Петербург, 2005. — 400 с.: ил.
  8. Михаил Фленов. DirectX и С++. Искусство программирования. СПб.: БХВ — Петербург, 2006. — 384 с.: ил.
  9. Френк Д. Луна. Введение в программирование трехмерных игр с DirectX 9.0. Wordware Publishing, 2006. — 424 с.: ил.
  10. Тодд Бэррон. Программирование стратегических игр с DirectX 9.0. Wordware Publishing, 2003. — 700 с.: ил.
  11. Том Миллер. Managed DirectX 9.0 с управляемым кодом. Программирование графики и игр. SAMS, 2003. — 432 с.: ил.
  12. Документация по DirectX Direct2D [Электронный ресурс] / Интернет-ресурс. — Режим доступа: www/ URL: http://msdn.microsoft.com.
  13. Секунов Н.Ю. Самоучитель Visual C++. СПб.: БХВ-Петербург, 2002. — 250 с.: ил.