Векторная анимация без записи кадров

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

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

    АРХИВ ВЕКТОРНОЙ ГРАФИКИ

  Когда я делал анимацию кота http://youtu.be/7PlCI8dXqDo то у меня накопилось около семидесяти файлов, содержащих векторное изображение кота в разных позициях. Назывались эти файлы кот11, кот12, кот14 и так далее, по номерам соответствующих кадров мультипликации. Файлы текстовые, небольшие – по 1196 знаков в каждом.
  В принципе, можно было бы использовать эти файлы в дальнейшем, жалко их уничтожать. Но и хранить такую россыпь файлов неудобно. Потому, а не создать ли из этих файлов архив?
  Поскольку векторная графика в программе DM_Paint представлена целыми числами, то и архив содержит исключительно целые числа. В сравнении с текстовым видом, целочисленный архив создаёт экономию размера в 2-2.5 раза. Так, «котовий» файл архива имеет размер 60 кБайт, то есть, по 875 байт на каждого кота.

  Практически, работа с архивом начинается кликом по букве «G» на строке меню  «G/Загрузить» (см.иллюстрацию). В появившемся окне мы выбираем любой текстовый файл с котом, и открываем его. Далее, программа, ориентируясь на название «кот», читает все файлы в порядке возрастания их номеров, переводит информацию в целочисленный формат и записывает в общий файл архива. Называться этот файл будет «Gкот.txt».
  Судя по названию, это как бы текстовый файл, и открыть его вы можете в блокнотике, но осмысленную запись вы увидите только в самом начале – символы GV (графика векторная), и в конце – End. Всё остальное место занимают непонятные символы.

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

кот11, кот12, кот14… => Gкот     Gкот => кот11, кот12, кот14…

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

   ИСПОЛЬЗОВАНИЕ АРХИВА ДЛЯ СОЗДАНИЯ АНИМАЦИИ

  Читаются файлы из архива в том порядке, в котором они в архив поступали. А какой это порядок? Порядок возрастания номеров?
  И так, и не совсем так.
  Например, номера 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
будут прочитаны в порядке 1, 10, 11, 2, 3, 4, 5, 6, 7, 8, 9

Эту особенность нужно иметь в виду и использовать двузначные номера. Если же мы хотим вставить дополнительный кадр между кот11 и кот12, то назовём его кот110 или кот111. Можно использовать также и четырёхзначные номера. Но не более 32000 – формат целых чисел не допускает этого.
  С этими двумя дополнительными файлами, коты будут собраны в архив так -

кот11, кот 110, кот 111, кот12, кот14… => Gкот 

и в таком же порядке они будут извлечены из архива. Но нельзя ли, при извлечении, навести в котах прядок, то есть, извлекая, переименовать котов в том порядке, в котором их предполагается записывать на кадры анимации? Пусть это будут номера 01, 02, 03 и т.д.
  Да, так сделать можно. Кликнем в меню «G», прямо в открывшемся окне кликнем ПРАВОЙ кнопкой мыши по файлу Gкот и переименуем его в GNкот.
  Откроем файл GNкот. И теперь получим файлы –

GNкот => Nкот01, Nкот02, Nкот03, Nкот04, Nкот05 …

но это будут те же самые файлы, только с другими названиями. Хотим эти названия сохранить? Вновь соберём эти мелкие файлы в архив GNкот и переименуем архив, вернув ему его прежнее название (без буквы N).
   
  Ну вот, с номерами мы разобрались, и графика, независимо от номеров, читается в том порядке, в каком мы хотели. Теперь о том, как графика читается.

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

  Всё именно так и происходит, если редактор открыт и находится в режиме рисования (кнопка «закр» имеет жёлтый цвет).
  Если же редактор находится в режиме Показа (кнопка «закр» оранжево коричневая), то графическая информация в мелкие файлы не направляется. Вместо этого каждая считанная векторная картинка рисуется на экране. Но прежде, под неё в качестве заднего плана подкладывается изображение, находящееся на поле2. Это то поле, запись на которое производится кнопкой «1=>2», а считывание – кнопкой «1=>2».

  В результате мы всю графику видим в форме сменяющих друг друга картинок, то есть, в форме анимации. Скорость смены картинок регулируется цифрой на кнопке Градиент. Если окажется, что графика выводится медленно, то принципиально ускорить этот процесс, увы, нельзя. Можно, правда кликнуть по кнопке «блокировка рисования» и установить этот режим. Тогда заливка и зачерчивание векторных фигур производиться не будет, а фигуры будут показываться в виде своих контуров. Скорость анимации увеличится.

  Процесс показа анимационных картинок можно прервать, если нажать клавишу «Пробел». Процесс можно запустить заново, если нажать клавишу «Y» на верхнем регистре. Напомню, что если нажать клавишу «Y» на нижнем регистре, то находящаяся в программе графика будет выведена в одном цвете http://proza.ru/2021/04/14/1247

   Выше было сказано о том, что в процессе показа картинок, под каждую из них подкладывается изображение с поля2. А что, если никакого изображения на этом поле нет. Поле пусто, поскольку ничего на него не записывалось, или поле получило статус пустого – для этого нужно кликнуть ПРАВОЙ кнопкой мыши по кнопке «1=>2». Что тогда?
   Тогда всё прочитанное из архива будет накладываться одно на другое, и мы увидим множество котов в разных фазах своего движения (см.иллюстрацию). И по этой картинке мы сможем судить о том, насколько плавно наш кот перемещается.

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

   НАЛОЖЕНИЕ ВЕКТОРНОЙ АНИМАЦИИ НА КАДРЫ РАСТРОВЫХ ИЗОБРАЖЕНИЙ

  Если процесс распаковки архива проводится с опциями AnG или AnG1 в текстовом поле, в том, которое находится выше кнопки «Paste», то файлы графики при их извлечении в мелкие файлы текстового формата не записываются, но появляется изображение, и оно налагается на кадры анимации или на фон с поля2, если кадры ранее не были записаны.

  НАЛОЖЕНИЕ на анимацию без особых изысков делается в режиме рисования.
  Опция AnG организует только показ, а опция An1G после показа делает и запись кадра. Кадры будут записываться, начиная с того кадра, который указан на панели АНИ, и естественно, только тогда, когда эта панель активизирована. Для прерывания процесса нужно нажать клавишу «Пробел».
  Ещё одна опция - AnG0 организует только показ на фоне поля2, без чтения кадров анимации.
  Показ анимации и наложение на анимацию во всех опциях можно повторить, если нажать клавишу Y на верхнем регистре. Клик по текстовой информационной строке со словами «такой-то кадр на очереди» продолжит наложение с очередного кадра.
 
  НАЛОЖЕНИЕ с изменением графики может делаться в режиме Показа.
  Работа с опциями AnG, AnG1 и AnG0 в этом режиме проводится аналогично.
  Изменение расположения и масштаба графики задаётся заранее, в режиме однократного перемещения всей графики с розовым ластиком. Параметры этого перемещения запоминаются, и перемещение воспроизводится после чтения из архива каждого файла, находящегося в нём.  Таким образом можно создать на кадрах анимации целую толпу персонажей разного размера, движущихся синхронно.
_________
17.04.2021

видео о работе с редактором смотрим тут - http://youtu.be/Cy5nGF_MDQQ


Рецензии