Копирование дорожкой в программе для анимации

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

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

   Подобное наложение в виртуальном пространстве экрана компьютера легко осуществляется программным путём. В первой фазе этого процесса мы проводим по некому образцу линию, и, сканируя область справа и слева от этой линии, запоминаем цвета находящихся там пикселей.
   Скопировав таким образом дорожку, мы переходим к изображению в кадре и разворачиваем нашу дорожку на нём, проводя линию в нужном месте и изгибая её нужным образом. Что из этого получается, вы можете видеть на иллюстрации.
   Изображения образца получаются немного рваные по краям, но выразительные по жестам (персонаж в движении см. тут - http://yadi.sk/i/E800xYBpzyTVEg ). Прежде чем записывать очередной кадр изображение можно улучшить, перейдя в режим рисования или использовать для этой цели ластик.
   При наложении дорожки на фигуру учитывается цвет фона, окружавшего образец при считывании его на дорожку – если это был цвет фона, указанный на бордюре окна программы (см. иллюстрацию), то фон считается прозрачным, и его пиксели на фигуру не переносятся. Таким образом фигура может быть собрана из накладывающихся друг на друга частей без видимого зазора между ними.

   Всё это так, однако перед тем, как разворачивать дорожку на картинке следовало бы удалить с картинки изображение наложенной дорожки прежнего кадра. Если фон картинки белый, то зачистку изображения удобно делать «зелёным» ластиком – он, не затрагивая белого цвета, превращает все другие цвета в бледно серый (230,230,230), заметный на белом фоне. Поэтому, разворачивая дорожку, легко сообразить в каком месте по отношению к старому изображению это нужно делать.
    Итак, считали картинку предыдущего кадра, зачистили зелёным ластиком нужное место, закрепили графику на картинке (это нужно делать на тот случай, если при наложении дорожки мы промахнёмся), и разворачиваем дорожку в нужном месте.
    Ошиблись с наложением – нажимаем «cls» и очищаем рисунок от только что наложенной графики, и вновь разворачиваем дорожку, стараясь попасть туда, куда нужно.

    Удалить серое изображение, оставшееся после зелёного ластика и выглядывающее из-под наложенной дорожки, можно кнопкой «sw д», которая становится видна при активированном буфере «д».
    Буфер «д» это зона, в которой рисуются картинки и происходит большая часть анимационных действий, поэтому при создании сложных анимаций его приходится активировать. Для активации буфера нужно обозначить его зону, кликнув по её диагональным углам, и нажать кнопочку «д» на левой кромке окна программы. Не путать с кнопкой «д», которая видна на иллюстрации – она считывает изображение из буфера в полупрозрачном виде. Кстати, и другая кнопка «cl д» тоже имеет свою функцию – она очищает от незакреплённой графики не весь рисунок, а только зону буфера «д».
    После того как серое изображение удалено, кадр можно запоминать в качестве очередного.
   
    УПРАВЛЕНИЕ ДОРОЖКОЙ

  Основная кнопка, управляющая считыванием на дорожку и разворачиванием её, это кнопка, показанная на иллюстрации сине-зелёным. Цифра 9 на ней это ширина дорожки, точнее – двойное расстояние в пикселях от её центра до её края. Цифра в сторону увеличения или уменьшения меняется кликами левой кнопкой мыши на кнопке с цифрой и кнопочке под ней.
  Режимы меняются кликами правой кнопки мыши.
  Жёлтый цвет кнопки с цифрой означает готовность считывания на дорожку. В этот режим кнопка переводится кликом из режима, обозначенного сине-зелёным. Но если кнопка жёлтая, то клик по ней отключает копирование, а кнопка приобретает пассивный светло серый цвет.
  Клики по нижней кнопочке меняют режимы в цикле: пассивный, пуантелизм (дорожка разворачивается в виде точечек одинакового цвета – красный цвет кнопки), Copy (готовность к считыванию дорожки – жёлтый цвет), Paste (готовность к разворачиванию дорожки – сине-зелёный), и вновь – пассивный (светло серый).

  Режим «пуантелизм» к копированию отношения не имеет, функции этого режима чисто декоративные – таким способом можно рисовать узоры из точек.

  Как уже было сказано, переход от режима Copy в режим Paste происходит автоматически, в момент отрыва стилуса от планшета после окончания считывания дорожки. Опыт показывает, что описанная эргономика управления дорожкой оказывается удобной.

    ТОНКОСТИ ПРОЦЕССА

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

  Это видно по иллюстрации, где показаны результаты копирования с различными размерами точек рисования.
  Несколько неожиданным является сильно прореженный и слабо видный след от точек размером 1 пиксель. Объясняется это тем, что считывание дорожки велось не на ноутбуке, не движением пальца по его пластине, а с помощью планшета со стилусом. Как оказывается, это не одно и то же.
  Оказывается, что при движении стилуса по планшету переход к соседнему пикселю фиксируется не каждый раз, а через раз. Как результат ширина дорожки оказывается в 2 раза шире, а точки расположены в ней в 2 раза реже. Поэтому точки начинают смыкаться на дорожке только при их размере в два пикселя, а при сильных поворотах для точки рисования нужен размер 3, 4 и даже 5.

  Однако, с другой стороны, прореженный след несёт некий декоративный эффект, и этим обстоятельством можно пользоваться.
  Можно, например, искусственно проредить след, указав на травянисто зелёной кнопке (см. иллюстрацию) число 1, 2, или 3. При таком указании соответствующее число переходов на соседний пиксель будет игнорироваться.
  В этот случае дорожка, считанная на планшете при разрежении 0 и развёрнутая на планшете при разрежении 1, покажет изображение в два раза крупнее, но развёрнутая на ноутбуке при разрежении 1 будет иметь натуральный размер.
  А та же дорожка, развёрнутая на ноутбуке при разрежении 0, окажется меньше ровно в два раза. Такие игры с размерами вполне могут пригодиться для создания толпы с мелкими персонажами, стоящими в разнообразных позах (см. иллюстрацию).

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

Пример анимации, сделанной копированием дорожки - http://yadi.sk/i/Ka_NiRV79z-T5g


   НЕМНОГО ПРОГРАММИРОВАНИЯ

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

Case 3 ‘режим «пуантелизм»
  For I = Rm To 1 Step -1:  X(I) = X(I - 1): Y(I) = Y(I - 1): Next I: X(0) = Xm: Y(0) = Ym:
  For I = 0 To Rm
   Form1.Picture1.PSet (Xm - Y(I) + Ym, Ym + X(I) - Xm), OldC     'точки по лев.сторону от серединной линии
   Form1.Picture1.PSet (Xm + Y(I) - Ym, Ym - X(I) + Xm), OldC     'точки по прав.сторону
  Next I

здесь Rm – ширина дорожки, число от 1 до 9-ти,
      Xm, Ym – текущие координаты стилуса
      OldC – цвет точки (в режиме Paste цвет берётся из ранее созданного массива, а в режиме Copy цвет не выводится на рисунок, а записывается в этот массив)
      X(), Y() – массивы из 10-ти чисел для хранения предыдущих Xm и Ym.

__________
14.12.2019


Рецензии