MICROSTUDIO 2.5D

Раритетные продукты под операционную систему MS DOS

ЧАСТЬ 1. КУКОЛЬНОЕ ШОУ

1.1. Введение

Несмотря на годы, глубина проработки концепции студии под MS DOS поражает

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

Микростудия 2.5D позволяет иллюстрировать математические примеры

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

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

В микростудии 2.5D задействован принцип создания кукольного кино. Только роль разыгрывающих пантомиму и сменяемых по желанию постановщика спектакля марионеток выполняют не картонные, а нарисованные персонажи. Студия сообщает марионеткам большой простор действий. Нарисованные персонажи не связаны плоскостью экрана. Они могут поворачиваться к "стеклу" ... боком. Могут разворачиваться и шагать назад.

Язык сценария микростудии отдаленно напоминает язык управления роботами - взять нужный персонаж, склеить его части и продвинуть, сжать, расжать, повернуть; расклеить части и повернуть только руку, ногу, голову (если у персонажа есть рука, нога, голова, что в фантастическом кино необязательно).

Наиболее популярные марионетки поступают в библиотеку готовых "кукол". Студия при помощи встроенного средства - редактора марионеток - создает новые персонажи, в том числе, комбинируя их из старых, что всегда легче, дополняя или заменяя в них части. Стоит начать работать, как быстро накапливаются пласты "киногероев" - и ни один образ не пропадает, все может использоваться вновь и вновь.

Не менее продуктивно и то, что сценарии движения нежестко связаны с образами. Даже если фильм готов, любой персонаж в нем может быть заменен новой "куклой" - и она станет двигаться наподобие предыдущей. Точно также, как образы, накапливаются схемы движения, например, ходьбы, полета и т.д. По аналогии с солнечным спектром, дающим три ярких цвета, язык делится на уpовни сложности, которые называются КРАСНОЙ, ЗЕЛЕНОЙ, СИНЕЙ сферами или линиями языка. Более подробно о сферах языка речь пойдет далее.

1.2. О шоу-режимах

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

Normal Mode. Первый наиболее простой способ связан с тем, что при каждом новом положении рисунков электронная память стирается и заново рисуется весь фон и все подвижные объекты. Первый режим назовем НОРМАЛЬНЫМ РЕЖИМОМ (Normal Mode) показа изображения. Даже очень хороший компьютер может не справиться с этой работой. Подвижные персонажи на сложном фоне ползут как черепахи.

Dynamic Mode. Второй способ, заключающий в себе некоторую вынужденную хитрость, состоит в том, чтобы хранить и восстанавливать не весь экран, а только фрагменты фона "из-под" подвижных рисунков. Второй режим назовем ДИНАМИЧЕСКИМ РЕЖИМОМ (Dynamic Mode) показа изображения. В данном случае возможен выигрыш в скорости мультипликации, но только для малых по площади фигур и сложного фона.

Static Mode и Running Mode. Третий и четвертый способы сводятся к тому, чтобы не восстанавливать фон изображения и назоваются СТАТИЧЕСКИМ (Static Mode) и БЕГУЩИМ (Running Mode) режимами показа изображения. Статический режим назывется так, потому что в воображаемом "слайдоскопе", который мы описывали ранее, слайды не меняются, поэтому изображение "стоит". В бегущем режиме на экран поочередно показываются то один, то другой слайд, поэтому возникает эффект "бегущих" трасс за перемещаемыми фигурами (как в елочной гирлянде). Эффекты наложения кадров используется в обычном синематографе. Понятно, что последний режим охотно применяется для создания специальных шоу-эффектов.

В сценарии вам предстоит избрать один из указанных здесь режимов. Совет: не стремитесь мультиплицировать громоздкие, но мало подвижные рисунки. В компьютеpных играх герой, как правило, мал, но удал. Проверьте свою наблюдательность - обратили ли вы ранее на это внимание.

1.3. О шоу-времени

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

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

Этот наглядный пример пригодится вам во многих сходных ситуациях. Качаются не только качели. Покачивается кораблик на волнах. Покачивается человек при ходьбе. Налево-направо ходят его глаза.

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

Научившись правильно пользоваться компьютерным временем и временными зависимостями, вы сэкономите свое реальное рабочее время работы над мультфильмом.

1.4. Адреса кукол

Правильно продуманная система обозначений облегчает объединение рисунков и написание сценариев. Рисунки группируются в КОМПЛЕКСЫ (куклы), как ключи в связку.

Все рисунки получают порядковые номера от рождения. Слабая сторона порядковых номеров состоит в том, что они отражают историю создания изображений, а не логику их появления в сценарии.

Box Number. Номер БОКСА - первый важный логический идентификатор. Запомните простое правило: на экране видны в наложении одновременно рисунки только одного какого-либо бокса. Все остальные логические номера называются МЕТКАМИ рисунков.

Complex Label. ПЕРВАЯ метка является номером КОМПЛЕКСА (куклы), которому рисунок (часть куклы) принадлежит. Договоримся считать ФОН нулевым комплексом - ведь фон тоже надо нумеровать.

Part Label. ВТОРАЯ метка является номером РИСУНКА в комплексе (номером детали куклы).

Mobility Label. ТРЕТЬЯ метка служит для выделения подвижности частей - если она равна 0, то объект считается СТАТИЧЕСКИМ (неподвижным). ПОДВИЖНЫМ фигурам присваивается 1.

Нарисовав некоторый персонаж, состоящий из нескольких частей, полезно первой меткой обозначить номер этого комплекса (куклы), вторыми метками пронумеровать рисунки туловища, рук, ног, головы, глаз и т.п. Фон может состоять из нескольких рисунков, пронумерованных вторыми метками, третья метка фона также, как и первая, равна 0.

Констатируем: каждый рисунок при помощи редактора рисунков снабжается следующим адресом: индивидуальным порядковым номером и четырьмя логическими номерами - номером бокса, меткой комплекса, порядковой меткой в комплексе, меткой подвижности.

1.5. Ориентация кукол

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

Центр вращения каждой фигуры помечается редактором небольшой точкой, заметной в режиме редактирования. Клавишами управления его можно смещать в любую сторону. Рисунки часто объединяются между собой так, как скрепляются части кукол.

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

Вектор ориентации выводится из центра вращения (свой вектор для каждого рисунка). Этот вектор используется для отсчета угла поворота рисунка по отношению к оси экрана, направленной вертикально вниз.

Размер изображения: длина вектора ориентации передает размер изображения: ее {\it следует выбирать} такой, чтобы весь рисунок попадал в площадь, образуемую при вращении вектора. На экране редактора эта площадь выделяется пунктирной окружностью.

При мультипликации в динамическом режиме восстанавливается квадрат фона, в который вписана упомянутая окружность. Это может быть вами учтено и с толком использовано. Например, если среди подвижных рисунков есть такие, которые попадают в "тень" восстановления квадрата фона под некоторым одним (более большим из них), можно отказаться от дублирования функций восстановления фона для экономии времени: проставить "теневым" подвижным рисункам нулевые третьи метки (хотя это и не совсем по правилам).

Констатируем: полноценный управляемый рисунок, это графический объект, у которого заданы центр вращения, край (точка крепления), вектор ориентации и размер (рисунка через размер вектора ориентации).

1.6. Элементы рисунков

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

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

Пластичный элемент растягиваются на одном или нескольких векторах так, как костюм висит на вешалке (этот способ рисования в компьютерной графике называется векторным). Например, пластичный круг растянут на своем диаметре. Квадрат или прямоугольник - на диагонали. И так далее. Для того, чтобы деформировать пластичный элемент, достаточно изменить размер или положение его основания - вектора. Пластичные элементы подразделяются на жесткие и мягкие.

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

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

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

Компьютер, пусть не настойчиво, но приучает к компромиссам. Поэтому в арсенале графической системы есть набор мягких "игрушек".

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

1.7. Заключение

Анимационная графика - широкое поле для опробования различных способов "оживления" нарисованных персонажей. Принцип создания кукольного кино удобен тем, что герои (куклы) рисуются только один раз. Принцип не идеален, но практичен.

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

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

ЧАСТЬ 2. НАПИСАНИЕ СЦЕНАРИЕВ

2.1. Введение

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

_____ 1 _________________________________________________________

В языке предусмотрен выбор между двумя равноценными СИСТЕМАМИ КООРДИНАТ.

Начало АБСОЛЮТНОЙ графической системы координат помещается в левый верхний угол экрана. Вертикальная ось ориентирована вдоль левого края экрана вниз, а горизонтальная - вдоль верхнего края вправо. Угол поворота отсчитывается от вертикальной оси против часовой стрелки.

Начало ОТНОСИТЕЛЬНОЙ графической системы координат совпадает с центром запоминаемого начального положения рисунка. Направление осей этой смещенной системы координат совпадает с направлением осей абсолютной системы координат. Однако угол поворота отсчитывается от запоминаемого начального угла поворота рисунка.

Абсолютная система координат одна. Существует команда вывода на экран ее координатной сетки с шагом в десять условных единиц. Она проста и удобна для большинства сценариев.

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

_____ 2 _________________________________________________________

ПОЗИЦИЯ ТЕКСТА на экране измеряется в строках и в столбцах. Эта позиция называется базовой и никак не связана с указанными системами координат рисунков. Для того, чтобы сместить строку текста на заданное число пикселов (под пикселом понимается точка графического экрана) относительно ее базовой позиции, вводятся дополнительные операции сдвига.

_____ 3 _________________________________________________________

В компьютерной графике ЦВЕТА, УЗОРЫ и ШРИФТЫ пронумерованы, отсчет всех номеров начинается с нуля. Так, например, распространенный компьютер с цветным дисплеем имеет 16 цветов (пронумерованных от 0 до 15), способен поддерживать 12 узоров фигур (номера от 0 до 11), среди которых есть крапинки, сеточки и прочие. Текст можно писать при помощи 4 видов шрифтов (номера от 0 до 3).

_____ 4 _________________________________________________________

КЛАВИШИ также пронумерованы, но их коды трудно запомнить. Допускается замена числовых кодов формальными обозначениями букв, взятыми в кавычки: 'A','B','C' и так далее. Функциональные клавиши и клавиши управления также получают обозначения: 'F1', ... ,'F10','Alt F1', ... ,'Ctrl F1', ... ,'Enter' и тому подобное.

_____ 5 _________________________________________________________

МЕЛОДИИ и ЗВУКИ обозначаются заглавными буквами латинского алфавита: A,B,C и так далее (но уже без кавычек). Разрешается расширять названия звуков. Так, например, звуки B и Bird в сценарии обозначают одно и тоже, только второй носит смысловой оттенок извлекаемого звучания, напоминающего щебет птицы. Целыми числами обозначается частота звука немодулированного сигнала.

_____ 6 _________________________________________________________

Для обозначения компьютерного времени, координат объекта на экране и других полезных переменных введены стандартные аббревиатуры, указанные ниже в таблице.



  Обозначение     Пояснение
  =========================================
  Time            Время
  Function        Функция времени

  Y               Вертикальная координата
  X               Горизонтальная координата
  Angle           Угловая координата

  Variable        Числовая переменная
  Note            Текстовая переменная

  Center          Центр рисунка
  Border          Край рисунка

  Cold Key        Синхронный режим ввода
  Hot Key         Асинхронный режим ввода
  =========================================

ПОЯСНЕНИЕ

Cold Key - обозначение кода клавиши для события, которое тормозит сценарий до тех пор, пока клавиша не будет нажата: холодная клавиша (синхронный режим ввода).

Hot Key - обозначение кода клавиши для события, которое не вызывает остановку сценария; этот код будет равен нулю, если клавиша не будет нажата вовремя: горячая клавиша (асинхронный режим ввода)

Также, как перед числом, перед любой переменной разрешено ставить алгебраический знак "-". Другой распространенный в математике символ "/" означает анализ обратного значения числа или переменной (попытка инверсии нуля приводит, конечно, к остановке выполнения сценария).

В логических условиях перед любым числом или переменной допускается употребление знаков "<" - меньше, ">" - больше; знак равенства "=" опускается!; составных знаков: "<>"- не равно, "<=" - меньше или равно, ">=" - больше или равно.

_____ 7 _________________________________________________________

Язык компьютерного синематографа служит для выражения действий над нарисованными персонажами, поэтому его операторы называются событиями (events). События часто сопровождаются условиями (conditions). Совокупность событий и условий образуют сценарий (script).

События для удобства разделены на три большие группы: красную, зеленую и синюю линии, содержащие, в свою очередь, подгруппы. Красная линия содержит события основные, математические, логические. Зеленая линия содержит события времени, пространства, визуализации. Синяя линия содержит события аннотации, музыкальные, библиотечные.

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

В рамках краткого обзора ниже рассмотрим некоторые основные события, составляющие костяк любого сценария.

2.2. Ветви сценария

Рассмотрим средства выделения частей сценария: ВСПОМОГАТЕЛЬНЫХ и ОСНОВНОЙ. Начало и конец основного сценария помечаются при помощи двух событий, начального и конечного:



     Begin Script (наименование фильма)
     ...
     <события>
     ...
     End.

В данном случае употребляется "End." с точкой!

Начало и завершение любой вспомогательной части выглядят иначе:



     Begin Story  (наименование части)
     ...
     <фрагмент событий>
     ...
     End

В данном случае употребляется "End" без точки!

Развитие вспомогательных частей начинается только тогда, когда на них делается ссылка вида: Call Story (наименование части). Сила подобной конструкции состоит в том, что ссылки на вспомогательные части сюжета можно делать неоднократно. Профессиональные программисты называют такие части подпрограммами и очень охотно пользуются ими, подпрограмма - один из самых популярных терминов в программировании. Подпрограммы можно вкладывать в подпрограммы, тогда доступ к ним ограничен пределами подпрограмм.

Существуют стандартные логические операторы, позволяющие разделять русло сюжета на рукава. Первая логическая конструкция, например, имеет вид:



     If Time............... <1
     ...
     <Путь, если время меньше единицы>
     ...
     Else
     ...
     <Путь, если время больше единицы>
     ...
     End If

причем первый или последний блоки событий могут отсутствовать.

Более детальный анализ универсальной переменной осуществляется в рамках конструкции вида:



     Do_Case
     Case Variable......... <1
     ...
     <Путь, если 1-е условие соблюдается>
     ...
     Case Variable......... >1
     ...
     <Путь, если 2-е условие соблюдается>
     ...
     и так далее до завершения
     ...
     End_Case

В логических цепочках справа от операторов допускается употребление стандартных логических символов: "<" - меньше, ">" - больше, "<>" - не равно и т.д.

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

Размер сценария ограничен объемом памяти компьютера и может достигать до пяти сот событий. Совокупность сценариев хранится в виде файлов. Существует средство, позволяющее сшивать разрозненные куски большого фильма из разных файлов в одно единое целое. Этой цели служит оператор, внешне похожий на предыдущий, но отличающийся по существу: Call Script (наименование файла сценария)

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

Мелкий инструмент в руках рассеянного хирурга - неприятная находка, после операции, для его пациента. Не меньше хлопот доставляет плохо скомпонованный сценарий. Есть масса вполне естественных, на первый взгляд, действий, которые совсем нетрудно забыть сделать. Так, например, можно забыть задать начальное значение времени.

Компьютер забывчивостью не страдает и исправляет неточности, без которых трудно написать по настоящему эффективный лаконичный сценарий, руководствуясь мудрым правилом: "по умолчанию". Устанавливаемые компьютером значения параметров называются стартовыми (стартовое значение времени, раз уж мы заговорили о нем, равно нулю). Стартовые значения всех измененных ранее переменных можно вернуть одним действием: Preparation.

2.3. Фон и передний план

Фон и передний план мультфильма выводятся на экран операторами Show BackGround и Show ForeGround.

Обычно вывод переднего плана повторяется циклически, каждый раз после изменения положения фигур. Конструкция цикла на заданное количество повторений проста:



     Show BackGround
     Do Cycle.............. 10
     ...
     <СДВИГ КУКОЛ>
     ...
     Show ForeGround
     End_Do

Завершение цикла повторений довольно часто связывается со сторожевой клавишей 'ESC', используемой с более гибким оператором например:



     Begin Script.......... ПРИМЕР
     Show Mode............. Normal
     Break Key............. 'ESC'
     ...
     [УКАЗАТЬ АДРЕС РИСУНКОВ]
     ...
     Show BackGround
     Repeat
     ...
     <СДВИГ КУКОЛ>
     ...
     Show ForeGround
     Variable Key.......... Hot Key
     Until Variable........ 'ESC'
     End.

2.4. Движение кукол

Простейшее поступательное движение рисунка, после указания его адреса, осуществляется операторами смещения по вертикали Move Y и горизонтали Move X.

Позиция рисунка задается при помощи Let Y (по вертикали) и Let X (по горизонтали).

Еще лучше мы поступим, если определим компьютерное время, зададим его шаг и приравняем измеряемую координату времени или функции от времени.

Переменная времени и ее шаг определяются операторами Time и Time Step.

Новое значение времени со сдвигом на стандартный шаг, указанный выше, определяется оператором Next Time.

Тип функции выбирается по Function Type (тип), часто это гармоническая функция (Harmonic). Cреднее значение функции можно задать по Function Mean и желаемую амплитуду по Function Amplitude.

Специфический оператор Glue позволяет переносить действие над одним рисунком (указанным при помощи адреса) на группу рисунков, состав которой зависит от уровня склеивания (уровни по возрастанию: Part/Complex/Box/All). Это средство усиления мощности управляющих команд, на которое надо сразу обратить внимание.

Если комплекс рисунков склеен, то при помощи Position (Memorize) запоминаются положения всех его рисунков.

Восстановить запомненное положение персонажей можно по Position (Restore).

Если комплекс рисунков склеен, то восстанавливаются положения всех рисунков комплекса.

Адресные операторы пронизывают сценарий и направляют действия команд управления движением (которые были бы без них бессмысленными, ни к чему не приложенными). Пример употребления указанных операторов рассмотрен ниже.



     Begin Script (наименование фильма)
     Show Mode............. Normal
     Break Key............. 'ESC'
     УКАЗАТЬ АДРЕС РИСУНКОВ
     Cartoon Box File...... <File Name>.pcr
     Cartoon Box........... (номер бокса)
     Complex............... (первая метка)
     Part.................. (вторая метка)
     СКЛЕИТЬ РИСУНКИ
     Glue.................. (уровень склеивания)
     ЗАДАТЬ НАЧАЛЬНОЕ ПОЛОЖЕНИЕ
     Let Y................. (задать Y)
     Let X................. (задать X)
     Let Angle............. (задать Угол)
     ЗАПОМНИТЬ ПОЛОЖЕНИЕ
     Position ............. Memorize
     Show BackGround
     Show ForeGround
     Time.................. 0
     Time Step............. 0.1
     Function Type......... Harmonic
     Function Mean......... 0
     Function Amplitude.... 100
     Repeat
     КОЛЕБАНИЕ ПО ВЕРТИКАЛИ
     Let Y................. Function
     и/или
     КОЛЕБАНИЕ ПО ГОРИЗОНТАЛИ
     Let X................. Function
     Show ForeGround
     Next Time
     Variable Key.......... Hot Key
     Until Variable........ 'ESC'
     End.

2.5. Флип-эффекты

Флип связан с поворотом рисунка по вертикали (как подстреленная мишень в тире) или с поворотом его по горизонтали. Оба флипа реализуются отрицательным масштабированием по Scale Y или Scale X. Два столь простых в употреблении оператора не стоили бы внимания, не будь у них красивых продолжений. Представьте себе растянутый во времени флип-эффект, в котором масштаб задан гармонической функцией от времени:



     Begin Script (наименование фильма)
     Show Mode............. Normal
     Cartoon Box File...... <File Name>.pcr
     Cartoon Box........... 1
     Complex............... 1
     Part.................. 0
     Glue.................. Complex
     Time.................. 0
     Time Step............. 0.1
     Function Type......... Harmonic
     Function Mean......... 0
     Function Amplitude.... 1
     Show BackGround
     Repeat
     ЗАМЕДЛЕННЫЙ ФЛИП ПО Y
     Scale Y............... Function
     или/и
     ЗАМЕДЛЕННЫЙ ФЛИП ПО X
     Scale X............... Function
     Show ForeGround
     Next Time
     Variable Key.......... Hot Key
     Until Variable........ 'ESC'
     End.

В одной из фаз замедленного движения плоский объект сливается в линию. Еще более занятные вещи происходят, если флип-эффект сочетать с вращением фигуры в плоскости экрана по Move Angle. Одновременный флип по двум координатам приводит к сжатию фигуры в точку - коллапс.

ПРИМЕЧАНИЕ. Значение частоты функции задается по Harmonic Frequence (величина частоты обратно пропорциональна периоду колебаний), затухание - по Hаrmonic Fading (коэффициент затухания обратно пропорционален времени затухания), и фаза - по Harmonic Phase (фаза измеряется в градусах от 0 до 360 и определяет сдвиг колебаний в пределах периода).

2.6. Шоу-эффекты

ФИЛЬТРАЦИЯ рисунков производится по Filter ... On, тогда как восстановление - по Filter ... Off:



     Begin Script (наименование фильма)
     Show Mode............. Normal
     Cartoon Box File...... <File Name>.pcr
     Cartoon Box........... 1
     Complex............... 1
     Part.................. 0
     Show BackGround
     repeat
     ВКЛЮЧИТЬ ФИЛЬТР
     Filter................ On
     Show ForeGround
     ВЫКЛЮЧИТЬ ФИЛЬТР
     Filter................ Off
     Show ForeGround
     Variable Key.......... Hot Key
     Until Variable........ 'ESC'
     End.

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

К очень ярким в своих проявлениях шоу-эффектам относится изменение статуса рисунков: ПРЕВРАЩЕНИЯ динамического рисунка в статический Status (Static) или наоборот Status (Dynamic). Проще говоря, это управление третьей логической меткой объекта, ориентируясь на которую компьютер тратит или не тратит время на воспроизведение фона под ним. Подвижная фигура, за которой не восстанавливается фон, прочерчивает по экрану трека. Благодаря оператору можно включать или выключать треки фигур.

2.7. Заключение

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

ПРИЛОЖЕНИЕ А. ПЕРВЫЕ ШАГИ В РЕДАКТОРЕ РИСУНКОВ

Для ускоренного освоения клавиатуры полезно выполнить несколько уроков с редактором рисунков. Начните работу со студией по studio.exe. Если перед вами развернулся рисунок кинопленки, то все нормально, вы в системе, вернее, в редакторе сценария. Редактор рисунков и редактор сценария оперативно переключаются между собой по {Alt X}. Нажмите это сочетание клавиш (сначала {Alt} и, не отпуская этой клавиши, коснитесь {X}. То же самое можно сделать при помощи меню, которое вызывается по F1, вызову редактора рисунков соответствует первая позиция меню, названная CARTOON (рисунок). Очистите экран редактора рисунков по {Ctrl Y} и {Y}.

УПРАЖНЕНИЕ 1. Нажмите клавишу {F3} и на экране появится окружность. Дополните ее линией нажатием клавиши {F4}. Можно удалить оба элемента нажатием на клавишу {F8}, и тут же восстановить их, нажав {F7}. Обрамление экрана гасится и снова воспроизводится при помощи сочетания {Ctrl P}.

Склейте элементы по {Enter} и переместите их на новое место экрана (обычными клавишами со стрелками горизонтального или вертикального перемещений). Убедитесь, что действия клавиш {F9}, {F10} противоположны действию клавиши склеивания элементов, подвигав эти части.

УПРАЖНЕНИЕ 2. Попробуйте менять цвет клавишей {*} и вращать склеенную конструкцию в ту и другую стороны клавишами {Insert} и {Delete} или, более плавно, клавишами {Ins} и {Del} на правой малой панели клавиатуры. Шаг плавной настройки переключается по {Num Lock}.

УПРАЖНЕНИЕ 3. Смените местоположение центра вращения, нажав клавишу {5} (на правой малой панели она срабатывает только при включенном ключе {Num/Lock}) и переместив центр клавишами горизонтального и вертикального смещения. Новое положение центра фиксируется повторным нажатием все той же {5} (или по {Enter}). Повращайте склеенный рисунок вокруг нового центра тяжести.

УПРАЖНЕНИЕ 4. Нажмите клавишу вызова псевдомышки {Tab} или {ПРОБЕЛ}. Псевдомышка управляется клавишами со стрелками горизонтального и вертикального перемещений, причем клавиши правой малой панели клавиатуры регулируются по плавности хода посредством переключателя {Num Lock}.

После указания маркером нового положения фигуры, повторное нажатие на клавиши {Tab} или {ПРОБЕЛ} (или просто на {Enter}) приводит к перемещению рисунка на новое место. Отметим, для сложных мало подвижных фигур переход на управление псевдомышкой происходит автоматически, остается только фиксировать их на новом месте.

УПРАЖНЕНИЕ 5. Поработайте над очертаниями последнего нарисованного элемента, для чего нажмите клавишу {F5}. Линия и окружность в режиме редактирования растягиваются с двух сторон. Выход из режима редактирования формы элемента осуществляется по {Enter}.

УПРАЖНЕНИЕ 6. Добавьте в систему новый чистый слайд по {Ctrl S}.

УПРАЖНЕНИЕ 7. Создайте несколько плоских фигур при помощи {Alt F3} или {Alt F4}, жесткий прямоугольник по {Alt F5}. Прямоугольники в момент создания растягиваются за противоположные углы.

УПРАЖНЕНИЕ 8. Эффектно и просто выглядят операции увеличения и сжатия созданных элементов при помощи клавиш {+} и {-}.

УПРАЖНЕНИЕ 9. Цвет и штриховка плоских элементов изменяются при помощи клавиш {*} и {/} (реверс цвета и штриховки в этом режиме управляется универсальными клавишами {+} и {-}). Операции изменения цвета и штриховки завершаются нажатием на любую клавишу, отличную от указанных, в том числе по {Enter}.

УПРАЖНЕНИЕ 10. Склейте элементы вторичным нажатием универсальной клавиши {Enter}. Теперь можно сделать прозрачным бокс рисунков: нажмите клавишу {F6}. Убедитесь, что слайды независимо управляются (попробуйте в движении) и листаются при помощи клавиш {Home}, {End}, {Page Up}, {Page Down}.

УПРАЖНЕНИЕ 11. Склейте бокс рисунков по {Ctrl F6}. Убедитесь в возрастании мощности функций редактора, подвигав весь бокс картинок по экрану. Вторичным нажатием на указанные клавиши ({F6} или {Ctrl F6}) отмените склеивание бокса и его прозрачность.

УПРАЖНЕНИЕ 12. Можно создать еще пару слайдов, изменив для них номер бокса по {Ctrl B} (этот номер в меню управляется универсальными клавишами {+} и {-}). Убедитесь, что второй бокс изображений просматривается и склеивается независимо от первого бокса.

Рассмотренные здесь кратко принципы управления слайдами являются основными. Представьте себе, что экран - это стопка прозрачных пластинок, на каждой из которых рисуется часть общего рисунка - каждая пластинка подвижна, пластинки можно склеивать или расклеивать по {Сtrl F6}, смотреть отдельно и вместе всю стопку пластин по {F6} "на просвет". Как можно чаще пользуйтесь {С} - копировать, {F5} - редактировать, {Enter} - склеить элементы, клавишей над {Enter} или {F9},{F10} - расклеить элементы, "горячим" справочником HELP по {H}.

ПРИЛОЖЕНИЕ Б. ПЕРВЫЕ ШАГИ В МИКРОСТУДИИ

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

Шаг 1. НАЧНИТЕ работу со студией по studio.exe. Если перед вами развернулся рисунок кинопленки со сценарием, то все нормально, вы в системе. Редактор рисунков и редактор сценария оперативно переключаются между собой по {Alt X}). Нажмите это сочетание клавиш (сначала {Alt} и, не отпуская, {X}).

Шаг 2. НАРИСУЙТЕ КУКЛУ. Для этого сначала очистите экран редактора рисунков по {Ctrl Y} и {Y} (если он занят рисунком). Пусть, на первых порах, вашей куклой будет колобок (нажмите {Alt F3}). Подберите размер колобка по {-} или {+}, покрасьте колобок по {*}, подберите подходящую шероховатость по {/}.

Шаг 3. "НАЗОВИТЕ" КУКЛУ, НАПРИМЕР 1/0/1 (первая кукла, деталь номер 0, подвижная), для этого: по {Ctrl L} выйдите на меню редактирования меток рисунка, задайте (по +/-) первую метку равную 1, вторую 0, третью 1. Для колобка можно не задавать вектор ориентации (VEC). Выйдите из меню меток по ЕSC.

Шаг 4. ЗАПИШИТЕ КАРТИНКУ. По {Ctrl F2}, дайте имя, скажем, pacman.pcr.

Шаг 5. Выйдите из редактора рисунков по {Alt X} ОБРАТНО в студию. Если вы снова видите перед собой ленту сценария - перед вами редактор сценария. Очистите ленту по {Ctrl Y}, {Y}.

Скачок налево на ролик шаблонов команд по {<-} (многослойный ролик перещелкивается по {Page Up}/{Page Down}).

Перенесите на ленту сценария нужную команду, например Cartoon Box File, установив против нее маркер и нажав {Enter}. Маркер перейдет направо, в строку CONDITION (условий).

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

Зафиксируйте pacman.pcr по {Enter}. У вас не будет особых проблем с техникой набора сценариев.

Шаг 6. ПОДВИГАЙТЕ КУКЛУ НАПРАВО. Для этого наберите сценарий:



   Begin Script........ PACMAN
   Cartoon Box Mode.... pacman.pcr
   Cartoon Box......... 1    >- номер бокса с куклой
   Show BackGround           >- ВЫВОД ЗАДНЕГО ПЛАНА
                                ----------------------
   Do Cycle............ 100  >- Количество перемещений
      Complex............. 1 >- ЭТО ПЕРВАЯ МЕТКА КУКЛЫ
      Part................ 0 >- ЭТО ВТОРАЯ МЕТКА КУКЛЫ
      Glue................ Part (уровень склеивания)
      Move X.............. 0.5 >- сдвиг куклы
      Show ForeGround     >---- ВЫВОД ПЕРЕДНЕГО ПЛАНА
                                ----------------------
   End_Do                 >---- Конец 100 повторений

   End.

Шаг 7. Сохраните сценарий по {Ctrl F2} в файле pacman.scr и ЗАПУСТИТЕ кукольное шоу по {F10} (стоп-выход по {Ctrl F10}).

ВЫ ПОЛУЧИЛИ НА ЭКРАНЕ 100 КАДРОВ КИНО, ВЫВОДИМЫЕ В ЦИКЛЕ (А НАРИСОВАЛИ ТОЛЬКО ОДИН, ВЕРНЕЕ, НАРИСОВАЛИ КУКЛУ)

Попробуйте пририсовать колобку глазки, создав "рисовалкой" дополнительный слайд (по {Ctrl S}) и пометив его 1/1/1. В сценарии "сложный" колобок, состоящий из нескольких частей, склеивается командой Glue (уровень Complex).

Разнообразьте перемещение колобка движением глазок, "отклеивая" их для самостоятельного "брожения" по "лицу" при помощи Glue (уровень Part). Ничего, если СРАЗУ кое-что не получилось. Последующие уроки помогут вам овладеть студией.

ПОСТФАКТУМ. Игра со сценарием менее утомительна многократного перерисовывания управляющих кадров кино. В готовом фильме можно заменить "киногероя", для начала - колобок на черепаху или жучка (взять не pacman.pcr, а другой рисунок). Легко видоизменить героя - приодеть - и все это без изменения сценария!

Сценарий и герои кино жестко не связаны. Если задуматься - такие возможности уникальны, другие (распространенные) принципы анимации этого "не могут" сделать.

ПРИЛОЖЕНИЕ В. КОМПЬЮТЕРНЫЙ УЧЕБНИК

ЯЗЫК компьютерного синематографа служит для выражения действий над рисунками, поэтому его операторы называются СОБЫТИЯМИ. События часто сопровождаются УСЛОВИЯМИ. Совокупность событий и условий образуют СЦЕНАРИЙ. Язык разделен на три большие группы событий: красная, зеленая и синяя линии, содержащие, в свою очередь, подгруппы:



 КРАСНАЯ : события  ОСНОВНЫЕ,  МАТЕМАТИЧЕСКИЕ,   ЛОГИЧЕСКИЕ;
 ЗЕЛЕНАЯ : события  ВРЕМЕННЫЕ, ПРОСТРАНСТВЕННЫЕ, ВИЗУАЛИЗАЦИИ;
 СИНЯЯ   : события  АННОТАЦИИ, МУЗЫКАЛЬНЫЕ  и    БИБЛИОТЕЧНЫЕ.

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

Далее внимание сосредоточим на ФЕНОМЕНОЛОГИЧЕСКОМ ОПИСАНИИ языка, основанном на кратком обзоре языка и комментариях к МИКРОСЦЕНАРИЯМ. Ибо сколь бы ни был прост язык управления рисунками, рассказ об особенностях более чем ста его операторов легко может сделать книгу скучной и необозримой.

Здесь и далее будет использоваться компьютерный учебник, при помощи которого вы сможете увидеть развитие событий в примерах - микросценариях. Учебник содержится в каталоге LESSONS и называется MANUAL.SCR, рисунки к нему cодержатся в файле MANUAL.PCR.



  Картинка        Слайд    Бокс    Комплекс   Часть  Мобильность
  ===============================================================
  Image          Index     Number   Label1    Label2   Label3
  ===============================================================
  Глобус            1        1        0         0        0
  Эмблема           2        1        1         0        1
  Надпись           3        1        2         0        1
  ===============================================================
  Циферблат         4        2        0         0        0
  Секундная стрелка 5        2        1         0        1
  Минутная стрелка  6        2        1         2        0
  Часовая стрелка   7        2        1         3        0
  ===============================================================
  Земля             8        3        0         0        0
  Луна              9        3        1         0        1
  ===============================================================

Каждому уроку учебника соответствует свой небольшой пример. Для просмотра первого примера заголовок учебника имеет вид:



   Begin Script.......... MANUAL
   Call Story............ Unit R1
   End.
   Begin Story........... Unit R1
   ...
   End

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

1. Красная линия событий

Красная линия событий позволяет реализовать простые и, вместе с тем, часто употребимые аспекты работы с рисунками; в данном случае речь пока не идет о манипулировании персонажами мультфильмов: основными компонентами "красного" фильма являются кадры "застывших" изображений. Временно-логическая взаимосвязь кадров может быть сложной, поскольку временная и логическая веточки событий красной линии представлены достаточно большими группами команд.

Следующие девять микросценариев учебника раскрывают характерные приемы образования простых фильмов.

Урок первый

Первый микросценарий связан с выводом на экран первого рисунка учебника.



     Begin Story........... Lesson R1
     Cartoon Box File...... Manual.pcr
     Clear Screen
     View Slide............ 1
     Stop
     End

Урок второй

Второй микросценарий показывает вывод на экран трех первых рисунков в наложении. Все вместе они образуют изображение первого кадра будущего фильма.



     Begin Story........... Lesson R2
     Cartoon Box File...... Manual.pcr
     Clear Screen
     View Slide............ 1
     Pause................. 1000
     View Slide............ 2
     Pause................. 1000
     View Slide............ 3
     Stop
     End

Урок третий

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



     Begin Story........... Lesson R3
     Cartoon Box File...... Manual.pcr
     View Box.............. 1
     Stop
     End

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

Урок четвертый

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



     Begin Story........... Lesson R4
     Cartoon Box File...... Manual.pcr
     View Box.............. 1
     Pause................. 1000
     View Box.............. 2
     Pause................. 1000
     View Box.............. 3
     Pause................. 1000
     End

Урок пятый

Предыдущий сценарий подвергнем переработке в следующем направлении. Введем время развития сценария и шаг по времени, ничего общего не имеющие с реальным временем задержки каждого кадра. Такое компьютерное время можно по желанию пускать вспять (выбирая достаточно большое его начальное значение и отрицательный шаг). Компьютерное время изменяет свое значение на шаг при помощи оператора Next Time.

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



     Begin Story........... Lesson R5
     Break_Key............. 'ESC'
     Cartoon Box File...... Manual.pcr
     Time.................. 1
     Time Step............. 1
     Do Cycle.............. 3
     View Box.............. Time
     Pause................. 1000
     Next Time
     End_Do
     End

Всякий сколь-нибудь протяженный фильм полезно уметь прерывать в любой точке нажатием на клавишу досрочного завершения. Гипотетическая возможность прерывания предусматривается заблаговременно: в качестве клавиши выхода обычно назначается стандартная клавиша {ESC}.

Урок шестой

Несложно закольцевать начало и конец основной части предыдущего сценария циклом неограниченного числа повторений, после чего удается получить по настоящему длинный (хотя и несколько однообразный) фильм. Такие фильмы - не редкость, они имеют большое практическое значение. Их часто используют на выставках для рекламы продукции.



     Begin Story........... Lesson R6
     Break_Key............. 'ESC'
     Cartoon Box File...... Manual.pcr
     Repeat
     Time.................. 1
     Time Step............. 1
     Do Cycle.............. 3
     View Box.............. Time
     Pause................. 1000
     Next Time
     End_Do
     Variable Key     {K}.. Hot Key
     Until_Variable........ 'ESC'
     End

В конце цикла неограниченного числа повторений, как видно, помещаются команды анализа состояния клавиатуры (в горячем режиме - без задержки кольца событий). Логическое условие предусматривает останов фильма после нажатия клавиши {ESC}.

Урок седьмой

Разнообразить предыдущий сценарий можно случайным выбором рисунков в цикле:



     Begin Story........... Lesson R7
     Break_Key............. 'ESC'
     Function Type......... Random
     Function Mean......... 2
     Function Amplitude.... 1
     Cartoon Box File...... Manual.pcr
     Time.................. 1
     Repeat
     Variable         {=}.. Function
     Variable Fun     {F}.. Round
     If Variable........... <>Time
     Time.................. Variable
     View Box.............. Time
     Pause................. 1000
     End_If
     Variable Key     {K}.. Hot Key
     Until_Variable........ 'ESC'
     End

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

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

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

Урок восьмой

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

КЛАВИШИ также пронумерованы, но их коды трудно запомнить. Допускается замена числовых кодов формальными обозначениями букв, взятыми в кавычки: 'A','B','C' и так далее. Функциональные клавиши и клавиши управления также получают свои естественные наименования: 'F1', ... ,'F10','Alt F1', ... ,'Ctrl F1', ...,'Enter' и тому подобное.

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



     Begin Story........... Lesson R8
     Cartoon Box File...... Manual.pcr
     Variable         {=}.. 'A'
     Repeat
     Do Case
     Case Variable......... 'A'
     View Box.............. 1
     Case Variable......... 'B'
     View Box.............. 2
     Case Variable......... 'C'
     View Box.............. 3
     End_Case
     Variable Key     {K}.. Cold Key
     Until_Variable........ 'ESC'
     End

Урок девятый

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

Неподвижные рисунки в режиме электронной книги листаются обычно стандартными клавишами {Page Up} и {Page Down}, переход на начало и конец электронной книги осуществляется клавишами {Home} и {End}. Кроме того, при большом количестве рисунков, книга листается ускоренно (через десяток страниц) парными клавишами {Ctrl} {Page Up} и {Ctrl} {Page Down}. Выход осуществляется по клавише {ESC}.

Этот микросценарий, к счастью, выглядит короче, чем наш рассказ о нем.



   Begin Story......... Lesson R9
   Cartoon Box File.... Manual.pcr
   Clear Screen
   View
   End

2. Зеленая линия событий

Зеленая линия событий одна из самых сложных и насыщенных действиями. Здесь многое зависит от вашей собственной изобретательности и интуиции.

Урок первый

Пора показать сложную начинку первого тома изображений: ФОН и ФРОНТ первого тома изображений.



     Begin Story........... Lesson G1
     Show_Mode............. Static
     Cartoon Box File...... Manual.pcr
     Cartoon Box........... 1
     Show BackGround
     Pause................. 1000
     Show ForeGround
     Stop
     End

Урок второй

Периодическая фильтрация (включение и выключение фильтра) приводит к исчезанию и появлению объектов комплекса рисунков на переднем плане:



     Begin Story........... Lesson G2
     Break_Key............. 'ESC'
     Show_Mode............. Normal
     Cartoon Box File...... Manual.pcr
     Cartoon Box........... 1
     Complex............... 1
     Part.................. 0
     Glue.................. Complex
     Show BackGround
     Do Cycle.............. 5
     Filter................ On
     Show ForeGround
     Filter................ Off
     Show ForeGround
     End_Do
     End

Урок третий

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



     Begin Story........... Lesson G3
     Show_Mode............. Normal
     Cartoon Box File...... Manual.pcr
     Cartoon Box........... 1
     Complex............... 1
     Part.................. 0
     Glue.................. Complex
     Show BackGround
     Show ForeGround
     Scale................. 1.5
     Show ForeGround
     Scale X............... -1.5
     Show ForeGround
     Scale X............... 0.75
     Show ForeGround
     Scale................. 1
     Show ForeGround
     Pause................. 1000
     End

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

Обе команды (увеличения и масштабирования) стоят друг друга - их надо по разному употреблять.

Урок четвертый

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



     Begin Story........... Lesson G4
     Show_Mode............. Normal
     Function Type......... Harmonic
     Function Mean......... 0
     Function Amplitude.... 1
     Harmonic Frequency.... 1
     Harmonic Fading....... 0
     Harmonic Phase........ 0
     Cartoon Box File...... Manual.pcr
     Cartoon Box........... 1
     Complex............... 1
     Part.................. 0
     Glue.................. Complex
     Show BackGround
     Time.................. 0
     Time Step............. 0.05
     Repeat
     Show ForeGround
     Scale X............... Function
     Next Time
     Variable Key     {K}.. Hot Key
     Until_Variable........ 'ESC'
     End

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

Урок пятый

В языке предусмотрен выбор между двумя равноценными СИСТЕМАМИ КООРДИНАТ. Начало АБСОЛЮТНОЙ графической системы координат помещается в левый верхний угол экрана. Вертикальная ось ориентирована вдоль левого края экрана вниз, а горизонтальная - вдоль верхнего края вправо. Угол поворота отсчитывается от вертикальной оси против часовой стрелки.

Абсолютная система координат одна. Существует команда вывода на экран ее координатной сетки с шагом в десять условных единиц. Она проста и удобна для большинства сценариев.

В примере ниже демонстрируется позиционирование рисунка в абсолютной системе координат.



     Begin Story........... Lesson G5
     Show_Mode............. Normal
     Coordinate System..... Absolute
     Cartoon Box File...... Manual.pcr
     Cartoon Box........... 1
     Complex............... 1
     Part.................. 0
     Glue.................. Complex
     Screen Net............ On
     Show BackGround
     Show ForeGround
     Position.............. Memorize
     Let X................. 100
     Let Y................. 25
     Show ForeGround
     Pause................. 1000
     Position.............. Restore
     Show ForeGround
     Pause................. 1000
     End

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

Начало ОТНОСИТЕЛЬНОЙ графической системы координат совпадает с центром запоминаемого НАЧАЛЬНОГО ПОЛОЖЕНИЯ управляемого рисунка. Направление осей этой смещенной системы координат совпадает с направлением осей абсолютной системы координат. Однако угол поворота отсчитывается от запоминаемого НАЧАЛЬНОГО УГЛА поворота рисунка.

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

Урок шестой

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



     Begin Story........... Lesson G6
     Show_Mode............. Normal
     Coordinate System..... Absolute
     Cartoon Box File...... Manual.pcr
     Cartoon Box........... 1
     Complex............... 1
     Part.................. 0
     Glue.................. Box
     Screen Net............ On
     Show BackGround
     Show ForeGround
     Position.............. Memorize
     Let X................. 100
     Let Y................. 25
     Show ForeGround
     Pause................. 1000
     Position.............. Restore
     Show ForeGround
     Pause................. 1000
     End

Урок седьмой

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



     Begin Story........... Lesson G7
     Break_Key............. 'ESC'
     Show_Mode............. Dynamic
     Coordinate System..... Absolute
     Cartoon Box File...... Manual.pcr
     Cartoon Box........... 2
     Complex............... 1
     Part.................. 0
     Glue.................. Part
     Show BackGround
     Time.................. 0.1
     Time Step............. 0.2
     Repeat
     Show ForeGround
     Part.................. 0
     Let Angle............. -Time
     Part.................. 1
     Let Angle............. Time
     Part.................. 2
     Let Angle............. /Time
     Next Time
     Until_Time............ >100
     End

Также, как перед числом, перед любой переменной разрешено ставить алгебраический знак "-". Другой распространенный в математике символ "/" означает анализ обратного значения числа или переменной (попытка инверсии нуля приводит к останову).

Урок восьмой

В предыдущем сценарии изменим только одно - вращение одной из стрелок часов (начальный рисунок первого комплекса) сделаем управляемым от клавиатуры. В данном случае одна из стрелок часов поворачивается независимо от остальных самоподвижных стрелок клавишами {Insert} и {Delete} (или более медленно {Ins} и {Del} на правой панели клавиатуры).



     Begin Story........... Lesson G8
     Break_Key............. 'ESC'
     Show_Mode............. Dynamic
     Control_Mode.......... Turning
     Coordinate System..... Relative
     Cartoon Box File...... Manual.pcr
     Cartoon Box........... 2
     Complex............... 1
     Part.................. 0
     Glue.................. Part
     Control............... On
     Show BackGround
     Time.................. 0.1
     Time Step............. 0.2
     Repeat
     Show ForeGround
     Part.................. 1
     Let Angle............. Time
     Part.................. 2
     Let Angle............. /Time
     Next Time
     Variable Key     {K}.. Hot Key
     Until_Variable........ 'ESC'
     End

Урок девятый

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



     Begin Story........... Lesson G9
     Break_Key............. 'ESC'
     Show_Mode............. Dynamic
     Coordinate System..... Absolute
     Cartoon Box File...... Manual.pcr
     Cartoon Box........... 2
     Cartoon Complex....... 1
     Part.................. 0
     Glue.................. Part
     Show BackGround
     Repeat
     Call Story............ View Clock
     Variable Key     {K}.. Hot Key
     Until_Variable........ >0
     End

Подпрограмма перевода стрелок часов понадобится нам в следующих примерах, выпишем ее отдельно:



     Begin Story........... View Clock
     Cartoon Complex....... 1
     Part.................. 0
     Variable<-Clock  {C-}. Second
     Variable Mul     {*}.. -0.1046666
     Let Angle............. Variable
     Part.................. 1
     Variable<-Clock  {C-}. Minute
     Variable->Memory {M+}. 1
     Variable Mul     {*}.. -0.1046666
     Let Angle............. Variable
     Part.................. 2
     Variable<-Memory {M-}. 1
     Variable Mul     {*}.. 0.01666666
     Time.................. Variable
     Variable<-Clock  {C-}. Hour
     Variable Add     {+}.. Time
     If Variable........... >12
     Variable Add     {+}.. -12
     End_If
     Variable Mul     {*}.. -0.5233333
     Let Angle............. Variable
     Show ForeGround
     End

В логических условиях перед любым числом или переменной допускается употребление знаков "<" - меньше, ">" - больше; знак равенства "=" опускается!; составных знаков: "<>"- не равно, "<=" - меньше или равно, ">=" - больше или равно.

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

3. Синяя линия событий

Синяя линия событий представлена достаточно сложными сюжетами, включающими операторы всех трех линий.

Урок первый

Этот урок показывает как использовать встроенную музыку: МЕЛОДИИ и ЗВУКИ обозначаются заглавными буквами латинского алфавита: A,B,C и так далее (но уже без кавычек).



     Begin Story........... Lesson B1
     Cartoon Box File...... Manual.pcr
     View Box.............. 1
     FoneMusic Tempo....... 0.5
     ForeMusic............. A
     End

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



     Begin Story........... Example B1
     Cartoon Box File...... Manual.pcr
     View Box.............. 1
     Music Box File........ Music.exe
     Music................. A
     End

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

Урок второй

В качестве иллюстраций вы можете использовать фотографии или рисунки, снятые при помощи сканера в широко распространенном формате цветных изображений (pcx-формате).



     Begin Story........... Lesson B2
     Library Type.......... Picture
     Library Box File...... Manual.pcx
     Call Library Box
     Stop
     End

Урок третий

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



     Begin Story........... Lesson B3
     Library Type.......... Text
     Library Box File...... Manual.txt
     Library Box........... 1
     Screen Colour......... 1
     Clear Screen
     Call Library Box
     Stop
     End

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

ПРИМЕЧАНИЕ В компьютерной графике все ЦВЕТА, УЗОРЫ и ШРИФТЫ пронумерованы, отсчет всех номеров начинается с нуля. Так, например, распространенный компьютер с цветным дисплеем имеет 16 цветов (пронумерованных от 0 до 15), способен поддерживать 12 узоров фигур (номера от 0 до 11), среди которых есть крапинки, сеточки и прочие. Текст можно писать при помощи 4 видов шрифтов (номера от 0 до 3).

Урок четвертый

Тот же самый текст, что и выше (а также фотографии или рисунки), можно использовать несколько иначе совместно (или независимо) с задним планом выбранного тома собственных рисунков микростудии (сравните с Unit G1). Полезно выбрать динамический режим показа переднего плана изображения.



     Begin Story........... Lesson B4
     Show_Mode............. Dynamic
     Coordinate System..... Absolute
     Library Type.......... Text
     Library Mode.......... Joint Ground
     Library Box File...... Manual.txt
     Library Box........... Top
     Cartoon Box File...... Manual.pcr
     Cartoon Box........... 2
     Complex............... 1
     Part.................. 0
     Glue.................. All
     Move X................ 50
     Show LibraryGround
     Show ForeGround
     Stop
     End

Урок пятый

Текстовый файл можно листать от клавиатуры при помощи оператора Replace Page. Используем подпрограмму View Clock (смотрите Unit G9) для того, чтобы разместить реальные часы на нужной странице текста (в примере - на первой странице).

Страницы листаются обычными клавишами: {Page Up} и {Page Down}, переход на начало и конец электронной книги осуществляется клавишами {Home} и {End}. Кроме того, при большом количестве страниц, компьютерная книга листается ускоренно парными клавишами {Ctrl} {Page Up} и {Ctrl} {Page Down}.

Выход осуществляется по клавише {ESC}.



     Begin Story........... Lesson B5
     Break_Key............. 'ESC'
     Call Story............ Lesson B4
     Glue.................. Part
     Repeat
     If Library Box........ Top
     If Library Box........ New
     Library Mode.......... Joint Ground
     Show LibraryGround
     End_If
     Call Story............ View Clock
     Else
     If Library Box........ New
     Library Mode.......... Lone Ground
     Show LibraryGround
     End_If
     End_If
     Replace Box........... Hot Key
     Until_Variable........ 'ESC'
     End

Урок шестой

ПОЗИЦИЯ ТЕКСТА на экране измеряется в СТРОКАХ и в СТОЛБЦАХ. Эта позиция называется БАЗОВОЙ и никак не связана с указанными системами координат рисунков. Для того, чтобы сместить строку текста на заданное число пикселов (под пикселом понимается точка графического экрана) относительно ее базовой позиции, вводятся дополнительные операции сдвига. Стандартная ширина строк и столбцов в компьютерной графике составляет 8 пикселов.

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



     Begin Story........... DisAppear
     Do Cycle.............. 2000
     Note Y_Place.......... Random
     Note X_Place.......... Random
     Note Height........... 3
     Note Length........... 3
     Note BackColour....... Random
     Type BackBar.......... 9
     End_Do
     End

     Begin Story........... Lesson B6
     Break_Key............. 'ESC'
     Function Type......... Random
     Function Mean......... 2
     Function Amplitude.... 1
     Cartoon Box File...... Manual.pcr
     Time.................. 1

     Repeat
     Variable         {=}.. Function
     Variable Fun     {F}.. Round
     If Variable........... <>Time
     Clear Screen
     Time.................. Variable
     View Box.............. Time
     Pause................. 1000
     Call Story............ DisAppear
     End_If
     Variable Key     {K}.. Hot Key
     Until_Variable........ 'ESC'
     End

Урок седьмой

Следующий пример можно рассматривать как закономерное продолжение восьмого урока красной линии (Unit R8), в котором выбор рисунков при помощи клавиш заменен более популярной системой меню.



     Begin Story........... Lesson B7
     Menu Mode............. Vertical
     Cartoon Box File...... Manual.pcr
     Repeat
     Clear Screen
     Note Font............. 0
     Note Height........... 3
     Note Y_Place.......... 14
     Note X_Place.......... 33
     Note X_Shift.......... 4
     Note Colour........... 12
     Type Note............. TOPIC
     Note Y_Place.......... 20
     Note X_Place.......... 20
     Note Height........... 3
     Note Length........... 40
     Note Colour........... 15
     Note BackColour....... 3
     Type Menu
     Note X_Shift.......... 140
     Type Note............. MARK
     Type Note............. CLOCK
     Type Note............. SPACE
     If Variable........... <>0
     Clear Screen
     View Box.............. Variable
     Variable Key     {K}.. Cold Key
     Call Story............ DisAppear
     End_If
     Until_Variable........ 0
     End

Урок восьмой

Совместим богатство операторов всех трех линий в предпоследнем сюжете движения Луны по своей орбите вокруг Земли под фоновую музыку.



     Begin Story........... Lesson B8
     Break_Key............. 'ESC'
     Show_Mode............. Dynamic
     Coordinate System..... Relative
     Cartoon Box File...... Manual.pcr
     Cartoon Box........... 3
     Aim_Complex........... 0
     Aim_Part.............. 0
     Complex............... 1
     Part.................. 0
     Glue.................. Part
     Let X................. Center
     Let Y................. Center
     Position.............. Memorize
     Show BackGround
     Time.................. 0
     Time Step............. 0.01
     Function Mean......... 0
     Harmonic Fading....... 0
     BackMusic............. A
     Repeat
     Harmonic Frequency.... 1
     Function Amplitude.... 80
     Harmonic Phase........ 0
     Let X................. Function
     Harmonic Phase........ 90
     Function Amplitude.... 50
     Let Y................. Function
     Function Amplitude.... 1.5
     Harmonic Frequency.... 3
     Let Angle............. Function
     Show ForeGround
     Next Time
     Variable Key     {K}.. Hot Key
     Until_Variable........ 'ESC'
     BackMusic_Off
     End

Урок девятый

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



     Begin Story........... Lesson B9
     Call Script........... demo.scr
     End.



Rambler's Top100