ЗАДАНИЕ XXI
Тема: Создание
мультипликативных роликов в среде Stratum Computer и
запись их в файл. Цель: Краткое знакомство с технологией создание мультфильмов в среде Stratum Computer. |
Перед началом работы необходимо:
владеть работой с клавиатурой и мышкой; | |
владеть основными приемами работы в системе Stratum. |
Поскольку создание мультфильмов
непосредственно связано с мультимедиа, то кратко
опишем средства мультимедиа поддерживаемые
средой Stratum Computer Среда Stratum 2000
поддерживает работу с видеороликами в формате MS
Video for Windows (avi файлы). В дальнейших версиях
возможна поддержка QUICKTIME(mov файлы) и MPEG файлы. Видеопотоки (VideoStream). Каждый
видеопоток представляет открытый avi файл. Причем
каждый файл можно открыть в нескольких потоках.
Видеопоток имеет текущую позицию, которую можно
произвольно менять. Для того чтобы записать мультипликационный ролик в файл нужно сначала создать его в среде Stratum Computer. Для этого необходимо нарисовать битовую карту, в которой представлены в виде последовательно идущих по горизонтали кадров или фаз. Битовая карта в этом случае будет представлять как бы ленту с последовательно нанесенными на нее изображениями фаз движения.(Рис.1) Рис 1. Отдельный кадр находится на ленте и показывается (становится видимым) в определенный момент времени. Остается только вычислять значение координаты x, указывающей на левую точку кадра. В стандартную библиотеку MuMedia среды Stratum Computer входит имидж WriteAviFile, который позволяет записать произвольную область любого окна в avi файл. Ниже приведено описание его переменных
Проигрывать записанные с помощью этого имиджа файлы можно стандартными средствами мультимедиа Windows 95,98, например, с помощью универсального проигрывателя. Двойные битовые карты При созданий мультфильма в среде Stratum Computer используются двойные битовые карты Двойная битовая карта (инструмент)
представляет собой совокупность двух битовых
карт: XOR маска и AND маска. Эти битовые карты должны
иметь одинаковый размер. Приведем пример двойной битовой карты на рисунке 2 Рис 2. Z-порядок графических объектов.
Следует заметить, что если у двойной битовой карты делается попытка установить 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
Теперь вы увидите, как будет перемещаться два объекта.
Попробуйте отредактировать сцену. Для этого зайдите в схему имиджа Image через библиотеки или схему имиджа Visual. | |
Попробуйте вставить еще несколько объектов в сцену. |