Визуализация движения 2D-объектов для мобильных приложений
Использование возможностей графической библиотеки. Создание собственной библиотеки графических спрайтов. Разработка собственного движка для позиционирования 2D-объектов анимационными методами. Управление сменой кадров и последовательностью их выдачи.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 17.04.2019 |
Размер файла | 1,9 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Визуализация движения 2D-объектов для мобильных приложений
Общеизвестно, что базовый потенциал разработок в компьютерной графике определяется накопленными знаниями в области фундаментальных наук (математики, физики, теории алгоритмов) и множества прикладных наук (электроника, программирование и др.). В этом смысле компьютерная графика (КГ) является синтезом суммы знаний общих и прикладных наук, позволяющих представить объекты реального мира в зримой форме, несущей в себе совокупность всей необходимой информации об объекте в конкретной прикладной области.
Подготовка специалистов, способных оперировать на рынке интеллектуальной продукции, невозможна без учета мирового уровня по данному направлению. В ряде наук КГ является необходимым условием для визуализации информации (математика, физика, геология и т.д.), для проведения экспертной оценки (например, медицина, метеорология). На сегодняшний день существует международный учебный стандарт в области КГ, т.к. данное направление исследований является перспективным и приоритетным.
В этой статье обсуждаются следующие задачи для визуализации двумерных (2D) объектов:
? использование возможностей графической библиотеки;
? создание собственной библиотеки графических спрайтов;
? создание собственного движка для позиционирования 2D объектов;
? формирование на экране различными анимационными методами динамического изображения;
? управление сменой кадров и последовательностью их выдачи.
На экране растрового дисплея изображение генерируется в виде матрицы пикселей, называемой растром. Каждый пиксель на растре имеет двумерный адрес, состоящий из х и у координат. Началом координат (0,0) считается верхний левый угол растра.
Для активизации (высвечивания) любого пиксельного изображения достаточно применение функции PutPixel (x, y, color) (или ее аналога), аргументами которой являются целые числа х и у, не превышающие размер элементов матрицы растра. Аргумент color задается из набора палитры цветов в числовом или символьном виде.
Пусть задано местоположение пикселя на растре (pixel x: = i; y: = j). Для того чтобы найти его местоположение в памяти, следует вычислить его адрес относительно нулевого. Хотя адрес начальной точки в линейном списке памяти не обязательно равен нулю, он известен. Принято называть его базовым адресом или базой (БАЗА = N). Тогда остается вычислить линейное смещение адреса пикселя относительно базы. Оно равно произведению максимального разрешения растровой матрицы по х на количество полных строк до заданного пикселя плюс количество пикселей в неполной строке по х.
Адрес = База + Смещение = N + x_max * j + i
Наименьшей адресуемой точкой растра является пиксель. Из пикселей генерируются любые изображения любой сложности. Форма пикселя зависит от типа оборудования графического вывода. Количество цветов, которые возможно присвоить пикселю, также ограничивается особенностями графических устройств.
Машинная графика, прежде всего, необходима для визуализации результатов исследований. Но при визуализации простейших функциональных соотношений двух переменных в виде графика возникнет проблема несоответствия между ограниченными целочисленными значениями растра и вещественными значениями исследуемых функций. Кроме того, при исследовании определяются данные в системе координат решаемой прикладной задачи (например, метры/сек, НВП в год и т.д. - вещественные числа), а при выводе изображения используется система координат устройства вывода (в нашем случае - растр 640*480), с целыми числами на ограниченном промежутке. Причем для каждого типа устройства вывода характеристики могут быть различны. Следовательно, для поступающих на устройство вывода данных, размерность будет зависеть от конкретного устройства.
Для достижения независимости программного обеспечения от устройств вывода стандартом машинной графики предусмотрена концепция, определяю-
щая 3 системы координат:
• мировые координаты;
• * нормированные координаты;
• координаты устройства.
Для преобразования в координаты устройства может применяться только декартова система координат. Другие типы систем координат должны сначала быть преобразованы прикладной программой. Для этого на бесконечном пространстве мировых (пользовательских) координат выделяется прямоугольная область, которая подлежит отображению. Эта область называется окном вывода. Запись Окно (x_min, у _min, x_max, у _max) - стандартное задание окна. Все что лежит за пределами окна - отсекается (не рассматривается). Все что лежит внутри окна должно быть отображено на экран. Такой принцип позволяет осуществлять масштабирование и прокрутку изображения.
Пользовательские координаты вводятся в систему в первоначальном представлении, затем подвергаются преобразованиям нормирования, т.е. переводятся в логическую систему координат, и только тогда могут быть отображены на системе координат устройства. Множество преобразований нормирования заключаются в выполнении операций переноса и масштабирования с положительными коэффициентами. Они позволяют определить отображение различных систем мировых координат в единое пространство координат устройства. Причем масштабирование может быть неоднородным, т.е. с различными коэффициентами по осям х и у.
Преобразования нормирования служат для пересчета данных из мировых координат в нормированные координаты. Для задания преобразований нормирования указанное окно в пределах мировых координат отображается на поле вывода (часть пространства нормированных координат, определяемых и перерассчитываемых прикладной программой). При однородном масштабировании отображение окна на поле вывода осуществляется с сохранением пропорций.
Пример. Рассчитать окно вывода: окно_ (319, 239, 639,479) для монитора с разрешением 640 на 480 (х_разр*у_разр) в нормализованных координатах.
1) Определить соотношения границ в нормализованных координатах: х_ус_лев = 0,5; х_ус_прав = 1; у_ус_ниж = 0,5; у_ус_вер = 1,0.
2) Определить масштабные коэффициенты по осям:
М_х = (1 / (х_ок_прав - х_ок_лев));
М_у = (1 / (у_ок_верх - у_ок_низ));
3) Определить коэффициенты преобразования по осям:
ПР_х_ок = (- х_ок_лев) / (х_ок_прав - х_ок_лев); ПР_у_ок = (- у_ок_низ) / (у_ок_верху_ок_низ);
4) Задать результат нормирующих преобразований задается в матричном виде:
[Нор_ок] = [М_ок] * [ПР_ок]
5) Преобразовать нормированные координаты в координаты устройства.
М_х_ус = int(х_ус_прав - х_ус_лев)*639;
М_у_ус = int(у_ус_верх - у_ус_низ )*479;
6) Определить коэффициенты преобразования:
ПР_х_ус = int(х_ус_лев) *640;
ПР_у_ус = int (у_ус_низ) *480;
7) Преобразовать результат в координаты устройства.
Результат преобразований в координаты устройства задается матрицей:
[Нор_ус] = [Мусс] * [ПР_ус].
При представлении функции в виде формулы иногда очень трудно понять, как ведет себя функция на рассматриваемом участке, что происходит в её критических точках. Для лучшего понимания поведения функции принято строить график функции.
При изображении графической зависимости переменных точку на плоскости перерассчитывают в местоположение пикселя на растре (или иной «точки» устройства графического вывода в координатах этого устройства). Обычно местоположения пикселя также представляют парой чисел (X, Y) адресной матрицы растра. X координата - по горизонтали, Y - по вертикали. Построить график функции означает, что для каждого значения X должно быть определено значение Y из области допустимых значений, и активизирован пиксель с растровыми координатами (X, Y), соответствующий функциональным значениям.
Так как разрешающая способность экрана монитора ограничена, а графики могут быть больше или меньше разрешающей способности экрана, то данные для построения графиков должны быть преобразованы таким образом, чтобы выводимые значения находились в диапазоне экрана. Данные преобразования называются преобразованиями нормализации. Каждая вычисленная координата умножается на такой нормализующий коэффициент, чтобы график функции поместился на поле вывода окна экрана. Если разрешение экрана монитора по вертикальной оси и горизонтальной неодинаково, необходимо (но необязательно) вводить два масштаба: один по оси X, другой по оси Y, т.е. проводить неоднородную нормализацию. В результате, представление о графике получается искаженным. Если же брать один и тот же коэффициент по осям, то не всегда можно получить заданный результат.
Для определения нормализующего коэффициента необходимо вычислить max и min значения функционально выводимых данных на участке отображения функции. Затем найти разность между max и min, и поделить вертикальную (горизонтальную) размерность экрана на найденную разность.
Далее необходимо выбрать графическую библиотеку и написать процедуру инициализации графического режима. Здесь следует предусмотреть случаи неуспешной инициализации графического режима и возможности автоматического определения типа адаптера.
Для отрисовки графики была выбрана библиотека SFML. SFML - простая и быстрая мультимедиа библиотека, включающая в себя такие модули как graphics - отрисовка графических изображений, audio - воспроизведение аудио файлов, window - создание окна, в котором и будет отображаться GUI.
Создаем процедуру формирования фонового изображения, используя примитивы графической библиотеки.
Прототип карты. Это прототип карты и базовый алгоритм реализации ее вывода на экран (рис.1).
Рисунок 1 Прототип карты
Размещено на http://www.allbest.ru/
Рисунок 2 Реализация прототипа карты
Схема формирования фонового изображения, используя примитивы графической библиотеки представлена на рис.3.
Процедура изображения объекта, который будет передвигаться на фоне изображения, рисуется следующим методом: выводится изображение, удаляется все, прорисовывается заново, но уже с новыми позициями (в зависимости от направления движения).
Рисунок 3 Принцип реализации прототипа карты
Напишем процедуру изображения объекта, который будет передвигаться на фоне изображения (рис.4).
Рисунок 4 Массив спрайтов
Размещено на http://www.allbest.ru/
Рисунок 5 Движение спрайтов
Далее, напишем процедуры, осуществляющие движение объекта с последующим восстановлением фона, процедуры основных анимационных циклов. Для создания корректной анимации необходимо знание методов ее осуществления.
Такой результат вывода на экран карты и персонажа в окне допустим, но это не оптимальное решение. В данном случае показана примитивная реализация построения карты и анимации персонажа. В случае если нам захочется расширить карту или добавить новый элемент, это будет весьма проблематично. Необходимо универсальное решение. В этом случае следует применить редактор уровней (Рис.6).
Рисунок 6 Открытый редактор тайловых карт
Tiled - кроссплатформенный открытый редактор тайловых (плиточных) карт для игр. Сохраняет уровни в файле основанном на XML формате .TMX, чтение которого обеспечивает ряд библиотек для различных языков программирования.
Для расставления объектов и моделирования карты применяется специальный редактор карт. В выше приведенном примере показано, как можно сделать карту при помощи (массива), т.е. текста. Этот редактор позволяет при помощи графического интерфейса расставлять предметы на карте, а в итоге мы получаем xml-файл. Это файл, содержащий xml разметку (координаты всех расставленных предметов ? рис.7).
Размещено на http://www.allbest.ru/
Рисунок 7 Интерфейс редактора XML файла
При помощи библиотеки TinyXml извлекаются данные и применяются к выводу на экран карты (Рис.8).
Рисунок 8 Библиотека TinyXml
Чтобы облегчить реализацию анимации использовалась программа SpriteDecomposer. Эта программа позволяет выделить все части одного состояния (как на скриншоте) и сгруппировать в одно из состояний, в котором будет находиться персонаж. В итоге она выдает xml файл, который используется для сложения анимации каждого состояния для дальнейшего использования в программе (Рис.9).
Размещено на http://www.allbest.ru/
Рисунок 9 Библиотека анимаций
Итоговый слайд представлен на рис.10.
Рисунок 10 Итоговый слайд
Результат работы можно увидеть на представленном видео:
https://youtu.be/90tU72_p0Eg
Литература
графический спрайт анимационный библиотека
1. Д. Роджерс «Алгоритмические основы машинной графики» /Пер. с анг. - М., МИР, 1989г. - 503 с.
2. Д. Роджерс, Дж.Адамс «Математические основы машинной графики» /Пер. с анг. - М., МИР, 2001г. - 605 с.
3. Е.В. Шикин, А.В. Боресков «Компьютерная графика. Полигональные модели» М., ДИАЛОГ - МИФИ, 2000г. - 461 с.
4. Р. Дейв Программирование игрушек. Основы. - /Пер. с анг. - Киев, ЕвроСИБ, 1997 г.
5. http://www.mapeditor.org
6. https://ru.wikipedia.org/wiki/XML
7. http://sourceforge.net/projects/spritedecompose/
Размещено на Allbest.ru
Подобные документы
Назначение и стандарты реализации OpenGL для Windows, порядок подключения графической библиотеки. Основные функции и синтаксис команд. Рисование примитивов, видовые и аффинные преобразования. Моделирование двумерных графических объектов и анимации.
лабораторная работа [35,0 K], добавлен 04.07.2009Создание Win-приложения для библиотеки, которое позволяло бы осуществлять операции выдачи и сдачи книг в соответствии со сроками. Выбор программных и технических средств реализации проекта. Разработка интерфейса системы, описание реализованных классов.
курсовая работа [3,1 M], добавлен 14.08.2015Создание простейших рисунков, закраска объектов в CorelDraw. Работа с текстом в графических объектах в программе CorelDRAW. Использование кривых линий и ломаных. Упорядочивание, выравнивание и группировка объектов. Использование графических эффектов.
практическая работа [1,5 M], добавлен 19.04.2012Основы создания мидлетов (midlet) - MIDP приложений для мобильных устройств на языке Java. Особенности устройств, для которых мидлеты предназначены. Библиотеки javax.microedition. Практические примеры создания MIDP приложений для телефона и их запуск.
методичка [25,9 K], добавлен 30.06.2009Создание библиотеки классов на основе C-строк и управляемую пользователем программу с псевдографическим интерфейсом, тестирующую её работу и отображающую результат. Упрощённая структура библиотек, взаимодействие классов и объектов, основные алгоритмы.
курсовая работа [37,5 K], добавлен 15.08.2012Запуск из одного приложения других приложений. Технология связывания и внедрения объектов. Понятие межпроцессного взаимодействия. Сценарий использования разделяемой памяти. Библиотеки динамической компоновки. Именованные и анонимные каналы, сокеты.
курсовая работа [46,5 K], добавлен 26.07.2014Компиляция программ на языке C/C++. Компиляция нескольких файлов. Библиотеки объектных файлов. Создание статической и динамической библиотеки. Функции работы. Создание динамической библиотеки для решения системы линейных уравнений.
курсовая работа [27,4 K], добавлен 07.08.2007Разработка факультативного курса по редактированию графических объектов в программе GIMP. Основные понятия растровой графики, интерфейс программы, окна, диалоги и панели. Добавление отсутствующих элементов, Создание из фотографии "карандашного рисунка".
дипломная работа [5,5 M], добавлен 17.12.2012Разработка структуры базы данных библиотеки для улучшения качества обслуживания, создания информационной базы и упрощения работы персонала. Создание объектов базы на языке sql-запросов. Создание хранимой процедуры с курсором, демонстрация процедуры.
курсовая работа [1,3 M], добавлен 28.12.2012Технология обработки графической информации с помощью ПК, применение в научных и военных исследованиях: формы, кодирование информации, ее пространственная дискретизация. Создание и хранение графических объектов, средства обработки векторной графики.
реферат [20,7 K], добавлен 28.11.2010