Стратегия и тактика анимации перекладкой

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

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

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

  Векторные редакторы, предназначенные для создания анимации, такие, как Adobe Illustrator, выдают именно такие результаты. Вот ссылка на видео https://youtu.be/yjrAF0PbDTw в котором рассказывается об особенностях работы – подготовке персонажей, найденных на картинках в интернете, и реализации их движения. Стремление упростить работу, переводя её в русло векторной графики, всегда даёт такой же, упрощённый в художественном плане результат.

     СТРАТЕГИЯ ПЕРЕКЛАДКИ

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

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

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

  И, наконец, должны быть удобные способы заглядывать на предыдущий или последующий кадр, или получать от них канву в виде ослабленных или тонированных изображений, чтобы по канве было видно, где и как следует рисовать новое изображение.
  Подобная канва и может выглядеть вполне как канва – белая сетка, сквозь прорехи которой проглядывает предыдущее изображение. Такие средства я уже опробовал http://proza.ru/2022/02/10/205 и они показали свою эффективность.

  Если подобные средства в редакторе для рисования развиты, то и покадровая анимация в нём идёт успешно и быстро. Прекрасные результаты даёт, например, копирование кругами http://proza.ru/2019/10/20/1299 хотя это только один из возможных технических приёмов копирования.

     ТАКТИКА ПЕРЕКЛАДКИ

  Перейду теперь к рассказу о том, как перекладка делается в программе «Стереометрия и Анимация». Слои, на которых располагаются изображения, в этой программе не предусмотрены, между тем как разноплановая перекладка возможна.
  Как это делается, показано на иллюстрации. На ней справа находятся фрагменты, составляющие персонаж. Они приготовлены из изображения, найденного в интернете. Приготовление фрагментов для перекладки тоже требует специальных приёмов – я использую инструмент «веер» http://proza.ru/2021/09/15/420 и технику сберегающей цвет дискриминации http://proza.ru/2023/07/30/1566

  Приготовленные фрагменты не обязательно располагать на том поле, на котором рисуешь, изображение с фрагментами можно хранить на другом рисунке, или считывать их из стороннего файла. Важно очередной фрагмент выбрать и поместить в буфер. Делается это так – мы кликаем на кнопке «копирование» в промежутке между скобками, и там появляется значок [х], разрешающий выбирать фрагмент с помощью рамочки.
  После того, как фрагмент выделен рамочкой, мы кликаем по кнопке активного цвета и устанавливаем на ней знак решётка - #. Затем кликаем по букве «Т» - transparent на кнопке «копирование». Кнопка приобретает жёлтый цвет, фрагмент помещается в числовой буфер, и устанавливается режим аппликации.
  Прозрачность аппликации регулируется цифрой на кнопке плотность, если там стоит цифра 9 на тёмном фоне, то аппликация получается непрозрачной.

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

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

     ЦВЕТОВЫЕ НОМЕРА

  На цветовой номер отведены первый и второй биты каждой цветовой компоненты – всего 6 бит. Они соответствуют 63-м разным номерам – от 00 до 77 в восьмеричной системе.
  Чтобы задать аппликации номер, выставляем его на синей кнопке и, кликнув по значку «N» на этой кнопке, записываем номер в первые биты пикселей, находящихся в буфере.
  Теперь можно делать аппликацию. Поскольку уже имеющееся изображение было сделано точно таким же способом, все фрагменты изображения имеют свои номера, такие, как это показано на иллюстрации.
 
  Фрагменты с меньшим номером находятся поверх фрагментов с более «тяжёлым» номером и закрывают их. И это не потому, что они были нарисованы позже, а потому, что таков алгоритм нанесения аппликации – пиксели большего номера не ложатся поверх пикселей с меньшими номерами, а как бы подныривают под них.
  Поскольку чисто белый цвет имеет самый «тяжёлый» номер 77, то поверх белого оказываются все изображения, например, изображение открытого рта с номером 05 оказывается поверх белого фона и поверх фрагментов с номерами 06, но подныривает под изображение руки с номером 04.

  Используя клавиши со стрелочками на клавиатуре ноутбука оттиск можно перемещать, наклонять, менять в размерах и изгибать, добиваясь наилучшего положения фрагмента или нужной мимики лица персонажа. Изменения эти дозированы – они могут делаться как большими, так и мелкими шагами. Все эти изменения представляют собой незакреплённую графику, которую можно стирать или дорабатывать, изменяя по своему усмотрению.
 
  Реализация алгоритма заслоняющей аппликации очень проста и она вполне заменяет манипуляции со слоями в процессе создания анимации перекладкой.
  Короткий пример анимации, сделанной таким способом можно увидеть здесь https://disk.yandex.ru/i/znML66OwAYpJ6Q

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

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

__________
21.08.2023