ЗАДАНИЕ XXI

Тема: Создание мультипликативных роликов в среде Stratum Computer и запись их в файл.
Цель: Краткое знакомство с технологией создание мультфильмов в среде Stratum Computer.

Перед началом работы необходимо:

pin2.gif (1000 bytes) владеть работой с клавиатурой и мышкой;
pin2.gif (1000 bytes) владеть основными приемами работы в системе Stratum.

 

    Поскольку создание мультфильмов непосредственно связано с мультимедиа, то кратко опишем средства мультимедиа поддерживаемые средой Stratum Computer

    Среда Stratum 2000 поддерживает работу с видеороликами в формате MS Video for Windows (avi файлы). В дальнейших версиях возможна поддержка QUICKTIME(mov файлы) и MPEG файлы.
    Всю систему по работе с видеоизображениями можно представить следующим образом:

    Видеопотоки (VideoStream). Каждый видеопоток представляет открытый avi файл. Причем каждый файл можно открыть в нескольких потоках. Видеопоток имеет текущую позицию, которую можно произвольно менять.
    Видеофреймы (VideoFrame2d) Это средство визуализации видеопотока. Каждый видеофрейм отображает какую-то часть видеопотока (любую прямоугольную часть видеокадра). VideoFrame2d существует на правах обычного двухмерного объекта. По своим свойствам напоминает Bitmap2d или DoubleBitmap2d. Причем его текущая позиция (текущий кадр) может быть синхронизирована с видеопотоком, а также может иметь самостоятельное значение. Одновременно к видеопотоку может быть подключено множество видеофреймов. Причем они могут находиться в разных окнах.

Для того чтобы записать мультипликационный ролик в файл нужно сначала создать его в среде Stratum Computer. Для этого необходимо нарисовать битовую карту, в которой представлены в виде последовательно идущих по горизонтали кадров или фаз. Битовая карта в этом случае будет представлять как бы ленту с последовательно нанесенными на нее изображениями фаз движения.(Рис.1)

Zayac2.GIF (3970 bytes)

Рис 1.

Отдельный кадр находится на ленте и показывается (становится видимым) в определенный момент времени. Остается только вычислять значение координаты x, указывающей на левую точку кадра.

В стандартную библиотеку MuMedia среды Stratum Computer входит имидж WriteAviFile, который позволяет записать произвольную область любого окна в avi файл.

Ниже приведено описание его переменных

  Имя   Тип   Назначение
hVideo HANDLE Дескриптор созданного имиджем видеопотока
hSpace HANDLE Дескриптор двухмерного пространства
WindowName STRING Имя окна
FileName STRING Имя выходного avi файла
filedialog FLOAT Диалог для компрессии
showpos FLOAT Показывать текущую позицию в строке статуса
fps FLOAT Количество кадров в секунду. Влияет на проигрывание ролика.
Count FLOAT Сколько всего делать кадров (или 0 если бесконечно)
delay_tick FLOAT Количество шагов системы между записями кадров
pos FLOAT Текущая позиция в файле
_enable   FLOAT Управление работой имиджа
start_tick FLOAT Начальный шаг записи первого кадра
OrgX FLOAT Координата верхнего левого угла записываемого прямоугольника
OrgY FLOAT Координата верхнего левого угла записываемого прямоугольника
Width FLOAT Размеры записываемого прямоугольника
Height FLOAT Размеры записываемого прямоугольника

Проигрывать записанные с помощью этого имиджа файлы можно стандартными средствами мультимедиа   Windows 95,98, например, с помощью универсального проигрывателя.

Двойные битовые карты

При созданий мультфильма в среде Stratum Computer используются двойные битовые карты 

Двойная битовая карта (инструмент) представляет собой совокупность двух битовых карт: XOR маска и AND маска. Эти битовые карты должны иметь одинаковый размер.
· XOR маска - битовая карта, которая непосредственно определяет рисунок. Может иметь любое количество цветов. Та часть, которая должна остаться прозрачной, должна быть окрашена в черный цвет.
· AND маска - битовая карта, которая определяет, какая часть XOR карты является изображением, а какая будет прозрачной. Данная битовая карта обязательно должна быть монохромной (причем черно-белой, а не красно-синей и так далее.). Те части, которые будут прозрачны, должны быть окрашены в белый цвет, а те, которые являются изображением, - черным.

Если используется загрузка из файла, то в файле должны последовательно располагаться эти две битовые карты. Сначала XOR, а затем AND маска. Такой файл получается очень просто: в обычном редакторе готовятся отдельные изображения масок и записываются в файлы. Затем в DOS окне выполняется команда:
copy /b xor.bmp + and.bmp double.dbmp
После этого необходимый файл готов.

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

bk.GIF (4599 bytes)

Рис 2.

Z-порядок графических объектов.
При добавлении объектов в графическое пространство каждый из них получает номер специального порядка (называемого Z-порядком), согласно которому происходит его отображение. Тем самым определяется правило взаимного перекрытия объектов с низким Z-
порядком, объектами с высоким порядком.(Рис 2)

z-order.GIF (736 bytes)

 

Следует заметить, что если у двойной битовой карты делается попытка установить z-порядок уже существующих изображений, то эти изображения помещаются поверх битовой карты. Тоже самое верно для любых растровых объектов в среде Stratum Computer

Задание 1.

       1. Создайте новый проект. Скопируйте здесь нужные для работы имиджи здесь .Они содержаться в zip-файле который нужно развернуть в рабочий директорий проекта.

       2. Из скопированных имиджей вставьте в главную схему проекта имидж Visual, который отвечает за отображение окна и сцены на нем.

     3. Вставьте имидж DIB2d из скопированных, который будет отображать движущийся объект на сцене в нужных координатах и фазе.

  Имя   Тип   Назначение
HSpace HANDLE Дескриптор двухмерного пространства
HObject HANDLE Дескриптор объекта
FileName STRING Имя файла содержащего битовую карту
x FLOAT координата графического объекта
y FLOAT координата графического объекта
SizeX FLOAT размер объекта по x
SizeY FLOAT размер объекта по y
VisX FLOAT Координата видимого прямоугольника битовой карты
VisY FLOAT Координата видимого прямоугольника битовой карты
VisSizeX   FLOAT Размер видимого прямоугольника битовой карты по x
VisSizeY  FLOAT Размер видимого прямоугольника битовой карты по y
Phase FLOAT номер фазы объекта
PhaseCount FLOAT количество фаз объекта
zOrder FLOAT z-порядок объекта
Show FLOAT флаг видимости объекта(1-видим, 0- невидим)
_enable FLOAT флаг, управляющий работой имиджа

Установите переменную PhaseCount в значение 8, а переменную FileName в значение "Zayac.bmp"

Скопируйте файл с битовой картой Zayac.bmp здесь.

    4. Создайте имидж который будет управлять фазой и координатами объекта со следующим текстом


GetTime(~Hour,~Minut,~Second,~SantiSec)
RealTime := ~SantiSec + ~Second*100 + ~Minut*6000 + ~Hour*360000 // Реальное время в сотых долях секунды
DeltaT := DeltaT + ~RealTime - RealTime

if (HObject)
if (~DeltaT >= ~delay) // Если шаг меньше задержки по времени
DeltaT := 0
Phase := (~Phase + 1)*ed(~PhaseCount - ~Phase - 1)
x := x + ~Step
endif

Для того, чтобы передвижения осуществлялись в реальном времени функцией GetTime получаем значение времени и в переменную DeltaT записываем рассчитанный интервал времени между перемещением. Будем менять фазу в цикле от 0 до PhaseCount-1. Переменной x будем задавать приращение Step.

Установите шаг Step в значение 10, а задержку delay в значение 20

Установите значение переменной y в значение 80

5.  Вставьте имидж WriteAviFile из стандартной библиотеки MuMedia. Установите его переменную FileName в значение "www.avi" , а переменную filedialog в значение 0.

6. Соедините связями одноименные переменные WindowName , Width, Height имиджей WriteAviFile и Visual. Соедините связями одноименные переменные HSpace имиджей DIB2d и Visual.  Соедините связями одноименные переменные x , y, Phase, PhaseCount , HObject, zOrder имиджей DIB2d и созданного вами имиджа.

В ходе работы с проектом вы можете настраивать переменные имиджа WriteAviFile: OrgX,OrgY,Count, fps.

В результате в окне, а затем и при просмотре avi файла вы можете наблюдать перемещение объекта "зайца" по сцене по прямой  x=80 .

Задание 2.

1. Усложните имидж .Вставьте в текст имиджа следующие строки, управляющие координатой y и z-порядком объекта

y:=-30*arctan(~x/20-10)+80
if (~x==200)
zOrder:=3
endif

Теперь заяц будет забегать за елку, потому что z-порядок его изображения устанавливается ниже z-порядка изображения елки.

2. Создайте имидж управления другим объектом "Сова" файл с двойной битовой картой, изображения которой вы можете взять здесь.

Пусть по аналогии с зайцем имидж управляет   координатой x : x=~x+Step  и z -порядком

if (~x=205)

zOrder:=6

endif

установите переменную z-order вновь созданного имиджа в значение 3

Теперь вы увидите, как будет перемещаться два объекта.

 

mult1.GIF (30720 bytes)

Дополнительное задание.

pin2.gif (1000 bytes) Попробуйте отредактировать сцену. Для этого зайдите в схему имиджа Image через библиотеки или схему имиджа Visual.
pin2.gif (1000 bytes) Попробуйте вставить еще несколько объектов в сцену.