Суббота, 26.05.2012, 18:44


Приветствую Вас Гость

Меню сайта
Категории каталога
Создание игр [170]
Статьи об общих понятиях связанных с созданием игр
Движки и Гейммейкеры [85]
Статьи о программах для создания игр
Игры [39]
Статьи об играх, в том числе и сделанных на гейммейкерах
Софт [25]
Различные программы, в том числе в помощь игроделам
Разное [61]
Статьи, которые не вошли в определённые разделы
Наш опрос
Игры какого типа вы предпочитаете делать?
Всего ответов: 10757
Главная » Статьи » Создание игр

Теория анимации...
Теория анимации.

Добрый день, вечер, ночь, утро... В общем, добрые сутки, дорогие игроделы. Сегодня мы займёмся очень интересным занятием – рассмотрим платформу для анимационного воспроизведения, или просто – анимацию. Я вам поведаю, из чего состоит красивая, движущаяся картинка и как её проиграть. И так, начнём...

У нас нет киноплёнки! Или из чего состоит анимация.
Анимация, как и киноплёнка, состоит из кадров (frame). Эти кадры располагаются в памяти компьютера и определяются по идентификационным номерам (ID). Каждый кадр имеет последовательный номер (см-те Рис. 1.).


Рис. 1. Расположение кадров в памяти.

Что бы получить движение в кино, киноплёнка прокручивается со скоростью 24 кадр/секунда. В анимации движение происходит немного по-другому: кадры заменяются с определённым интервалом (interval). Интервал измеряется в миллисекундах (1000 мс. = 1 сек.). Замена кадра происходит по возрастанию ID. Если ID кадра = 0, то следующий 1 кадр; если ID кадра = 1, то следующий 2 кадр; и так далее. С таким же успехом можно создать движение в обратную сторону, уменьшая порядковый номер.
На рисунке сбоку приведена GIF анимация, которая демонстрирует принцип замены кадров, увеличивая порядковый номер на один с интервалом в 200 мс.

Теория кода.
Я не буду приводить конкретный код программы, а рассмотрю его в виде псевдокода, либо расскажу. И первое, что попадает мне под «микроскоп» – это система загрузки изображения. В примере, который приложен к статье, рассматривается динамичная система загрузки. Суть её заключается в том, что бы создавать объекты в памяти, а указатели хранить в некотором массиве. В примере, в качестве массива, я использую обычный STL класс vector. Так же, для упрощения, можно использовать фиксированный массив картинок. Но это уже зависит от фантазии, нужды и способностей программиста.
В самом начале создаётся по средствам оператора new объект TBitmap. Так же, с таким же успехом, можно создать объект BitMap, используя WinApi. Но это не главное. В результате создания объекта, оператор new возвращает адрес памяти, где расположился объект. Этот адрес есть тридцатидвухразрядное число. Используя метод приведения типа (cast), превращаем указатель в число. А получившееся число можно запихнуть в вектор. Для получения указателя проводим действия в обратном порядке.
Хочу сделать одно замечание: в конце функции, где загружаются объекты в память, не надо вписывать оператор удаления объекта с созданным объектом. Минимум к чему приведёт эта ошибка – к вылету программы.

И так, мы загрузили картинки, и теперь пришло время проиграть анимацию. Я в этой статье, и в примере, привожу упрощённый алгоритм управления воспроизведением. Головное управление производится увеличением некоего счётчика на единицу, пока значение счётчика не сравняется со значением интервала. В случае если интервал и счётчик сравнялись, счётчик устанавливается в нуль, а значение порядкового номера кадра, либо увеличивается, либо уменьшается на один. Когда порядковый номер кадра доходит до последнего кадра, либо до нуля, то он устанавливается в нуль, или в номер последнего кадра соответственно. Это всё, на псевдокоде, будет выглядеть так:

Если счётчик == интервалу, то:
Счётчику присваивается нуль.
Если реверс == истине, то:
Уменьшить ПосКадр на один;
Если ПосКадр меньше нуля, то:
ПосКадру присваивается ID_Последнего_кадра.
В противном случае:
Увеличить ПосКадр на один;
Если ПосКадр больше ID_Последнего_кадра, то:
ПосКадру присваивается нуль.
В противном случае:
Увеличить счётчик на один.

В заключение.
Я упомянул выше, что к статье приложен работоспособный пример. В заключении я его немного опишу. Пример платформы анимации написан на C++ Builder 6. В архиве примера представлен исходный код, 5 картинок в формате BMP, и бинарный, независимый от C++ Builder код (приложение).

Скриншот:
Надеюсь, что эта статья кому ни будь, поможет. С уважением BOOM...
Скачать пример...

Категория: Создание игр | Добавил: BOOM (23.10.2010)
Просмотров: 3146 | Рейтинг: 5.0/8
Теги: Кадры анимации, анимация, frame, кадры, Урок, C++ Builder, графика, Теория анимации, Мультипликация, GIF
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Теория анимации...», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями. Для этого воспользуйтесь предлагаемой ниже кнопкой:
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Ссылки по теме
Поиск
10 случайных движков
Raydium Engine
Ren'Py
Raycasting Game Maker
Proton
M.U.G.E.N
Devana
Mezona
Cafu
Mortal Szombat
Realm Crafter
Друзья сайта
Игровой форум GFAQ.ru Перевод консольных игр Разработка игр в СНГ Loadka.ru – загрузка файлов Игорный бизнес в России Реклама и заработок
Все права сохранены. GcUp.ru © 2008-2012 Рейтинг