Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Т7_Представление анимационной, видео- и звуково...doc
Скачиваний:
7
Добавлен:
17.08.2019
Размер:
362.5 Кб
Скачать

3 Анимационные файловые форматы fli, flc, cel

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

В качестве примера рассмотрим анимационные файловые форматы FLI, FLC и CEL, которые используются в анимационной программе Autodesk Animator Pro.

Эти форматы обеспечивают хранение анимационной графики и позволяют проигрывать на экране компьютера анимационные ролики. В них не предусмотрена возможность хранения аудиоинформации и обеспечивается лишь 256 градаций цветов. Но простота и быстрота воспроизведения анимаций сделали данный формат популярным среди художников-аниматоров и разработчиков компьютерных игр. Файловые форматы FLI использовались первоначально в программе Animator. Формат FLC затем стал использоваться в программе Animator Pro.

Формат файлов анимационных фильмов (flic) был опубликован в 1993 г. в журнале «The Doctor Dobb's Journal».

Данные в этих файловых форматах группируются в виде фреймов. Фрейм - это один кадр анимационного фильма.

Фреймы состоят из так называемых кусков (chunk) или блоков. Блоки анимационого файла содержат всю информацию, необходимую для воспроизведения анимационного ролика.

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

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

Данные самого изображения кадра сжимаются по схеме RLE (групповое кодирование). Причем первый фрейм рассматривается как базовый и содержит изображение целиком. Относительно этого фрейма затем строятся отличия других фреймов. Последний фрейм анимационного фильма кольцевой и служит для плавного циклического воспроизведения фильма.

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

На рис. 5.8 представлена обобщенная схема анимационного файлового формата FLI.

Заголовок файла имеет длину 128 байт. Его структура представлена в табл. 5.4.

Таблица 5.4

Смещение от начала, байт   

Размер, байт       

Название

Описание

0

4

Size

Размер файла в байтах

4

2

Type

Идентификатор файла. Всегда 0xAF11 для FLI и 0xAF12 для FLC и CEL

6

2

Frames

Число фреймов, максимум 4000. Не включая кольцевой фрейм

8

2

Width

Ширина экрана для воспроизведения

10

2

Height

Высота экрана для воспроизведения

12

2

Depth

Бит на пиксел (всегда 8, для CEL равно 0)

14

2

Flags

Флажки, всегда 3. Если первый бит не установлен, то нет кольцевого фрейма

16

4

Speed

Задержка между фреймами. Для FLI в единицах 1/70 с, для FLC в единицах 1/1000 с

20

2

Reserv

Резерв, всегда 0

Для формата FLC структура заголовка представлена в табл. 5.5.

Таблица 5.5

Смещение от начала, байт   

Размер, байт       

Название

Описание

22

4

Created

Дата создания файла в формате MsDOS

26

4

Creator

Серийный номер программы Animator Pro, создавшей файл

30

4

Updated

Дата последнего изменения файла

34

4

Updater

Серийный номер программы, изменившей файл

38

2

Aspectx

Kоэффициент пропорциональности по оси X

40

2

Aspecty

Kоэффициент пропорциональности по оси Y

42

38

Reserved

Резерв, всегда 0

80

4

Oframe1

Смещение от начала файла на первый фрейм

84

4

Oframe2

Смещение от начала файла на второй фрейм. Это значение можно использовать при циклическом проигрывании фильма

88

40

Reserved

Резерв, всегда 0

Для форматов FLI и FLC используются различные единицы задержки между кадрами. Для FLI задержка исчисляется относительно частоты регенерации изображения на экране монитора (в данном случае - 70). Для FLC задержка исчисляется в единицах миллисекунд (1/1000 с).

Для FLI максимальный размер экрана 320×200, для FLC - 1280×1024.

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

Затем идут фреймы. Каждый фрейм ( в том числе и префиксный блок ) имеет заголовок длиной 16 байт.

Заголовок фрейма. Ниже представлена табл. 5.6, иллюстрирующая структуру заголовка фрейма.

Таблица 5.6

Смещение от начала, байт   

Размер, байт       

Название

Описание

0

4

Size

Размер фрейма, включая заголовок, в байтах

4

2

Type

Тип фрейма

6

2

Chunks

Число блоков в данном фрейме. Максимум 4000 блоков

8

8

Reserv

Резерв, всегда 0

В табл. 5.6 представлено лишь два типа фрейма. Для префиксного блока тип равен 0xF100, для фреймов, в которых содержатся данные по анимации, тип равен 0xF1FA. Возможны другие типы фреймов, которые влияют на анимацию, но здесь они не описаны.

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

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

Блок фрейма имеет свой заголовок размером 6 байт, за которым идут данные (табл. 5.7).

Таблица 5.7

Смещение от начала, байт   

Размер, байт       

Название

Описание

0

4

Size

Размер блока, включая этот заголовок, в байтах

4

2

Type

Тип блока

Размер блока для FLI никогда не превышает 64007 байт. Размер фрейма для FLC может быть вычислен по следующей формуле:

Размер_фрейма = (Ширина_экрана) × (Высота_экрана )+82 байт

Основные типы блоков представлены в табл. 5.8.

Таблица 5.8

Значение        

Имя

Описание

4

COLOR_256

Настройка палитры, значения цветов от 0 до 255 (только FLC)

7

DELTA_FLC

Блок дельта-сжатия по словам (только FLC)

11

COLOR_64

Настройка палитры, значения цветов от 0 до 64 (только FLI)

12

DELTA_FLI

Блок дельта-сжатия по байтам (только FLI)

13

BLACK

Заполнение всего экрана нулевым цветом

15

BYTE_RUN

Побайтное сжатие данных групповым кодированием

16

FLI_COPY

Несжатое изображение

18

PSTAMP

Небольшое изображение для предвари-тельного просмотра, содержится только в первом фрейме и первом блоке. Оно может быть пропущено

Остановимся кратко на описании указанных в табл. 5.8 типов блоков.

Блок типа 16 - несжатое изображение (FLI_COPY). Содержит несжатые данные, которые задают изображение от левого верхнего до правого нижнего угла. Данный блок создается тогда, когда применение метода сжатия неэффективно и дает больший объем данных, чем несжатое изображение. Это имеет место в том случае, когда вероятность появления пиксела в строке с отличными от предыдущего атрибутами стремится к единице.

Блок типа 15 - сжатие RLE ( BYTE_RUN ). Данный блок содержит все изображение кадра. В основном применяется в первом фрейме или внутри блока изображения для предварительного просмотра.

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

Таблица 5.9

Смещение, байт   

Размер, байт       

Название

Описание

0

1

Size_count

Число байтов для копирования и тип копирования данных (либо повтор одного байта, либо копирование строки байтов)

1

128

Data

Данные

Если значение size_count больше нуля, то данные состоят из одного байта, который необходимо size_count раз вывести на экран. Если size_count меньше нуля, то необходимо вычислить абсолютное значение size_count. И столько байтов должно быть скопировано на экран из закодированных данных (data). Таким образом, число байтов для копирования не может быть больше 128.

Данный блок имеет размер не более 64000 байт (только для FLI). Для FLC размер данного блока не больше, чем ширина экрана, умноженная на высоту экрана.

Блок типа 13 - заполнение экрана нулевым цветом (BLACK). Не содержит никаких данных, кроме заголовка. При воспроизведении кадра экран заполняется нулевым цветом.

Блок типа 12 - блок дельта-сжатия по байтам ( DELTA_FLI ). Наиболее часто встречающийся блок во FLI-файлах. Содержит различия между текущим и предыдущим кадром. Этот тип блока встречается и в формате FLC. Каждая строка кодируется отдельно. Первый байт в строке - число серий пикселов в этой строке. Если строка не изменялась относительно последнего фрейма, то этот байт равен нулю. В этом байте размещается положительное число, так как данный блок используется только для FLI-файлов.

Пропуск столбцов пикселов (табл. 5.10) обозначает, сколько столбцов пикселов необходимо пропустить относительно текущего пиксела. Если необходимо пропустить больше чем 255 пикселов, то они будут разбиты на две серии. Число байтов для вывода знаковое. При этом отрицательные и положительные значения имеют обратный смысл по сравнению с значениями в блоке типа 15. Если данный байт больше нуля, то далее следуют байты для копирования на экран. Если данный байт меньше нуля, то следующий байт должен быть повторен в соответствии со значением size_count.

Таблица 5.10

Смещение, байт  

Размер, байт   

Название   

Описание

0

1

Skip_count

Пропуск столбцов

1

1

Size_count

Число байтов для копирования и тип копирования

2

128

Data

Данные

Блок типа 11 - настройки палитры (COLOR_64). Данные в этом блоке организованы в серии. Применяется только в FLI-файлах.

Первое слово после заголовка - число серий в этом блоке. Далее следуют серии. Первый байт серии указывает, сколько цветов палитры необходимо пропустить без изменения. Следующий байт - сколько цветов палитры надо изменить. Если данное число равно 0, то необходимо изменить все 256 цветов. Затем идут значения красной, зеленой и синей составляющей цвета - триады RGB (три байта ). Это значения цветов для настройки палитры, они изменяются от 0 до 63.

Блок типа 7 - блок дельта-сжатия по словам (DELTA_FLC). Это наиболее часто встречающийся блок в FLC-файлах. Используется только в Animator Pro. Содержит различия между последовательными фреймами. В отличие от блока DELTA_FLI здесь осуществляется сжатие по словам. Данные организованы в строки, в каждой строке серии пикселов. Первое слово (16 бит) - число сжатых строк, выводящихся на экран. Затем данные для каждой строки отдельно, всегда начинающиеся с первой строки. Каждая строка сжимается индивидуально.

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

Блок типа 4 - настройки палитры (COLOR_256). Данные в этом блоке организованы в серии. Применяется только в FLC-файлах.

Первое слово после заголовка - число серий в этом блоке. Далее следуют атрибуты серий. Первый байт серии - сколько цветов палитры пропустить без изменения. Следующий байт - сколько цветов палитры надо изменить. Если данное число равно 0, то необходимо изменить все 256 цветов. Затем идут значения красной, зеленой и синей составляющей цвета - триады цветовой модели RGB (три байта). Это значения цветов для настройки палитры, они изменяются от 0 до 255.

Блок типа 18 - миниатюрное изображение (PSTAMP). Данные используются в режиме предварительного просмотра. Этот блок не влияет на воспроизведение анимационного ролика.

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

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