Векторная графика своими руками 3

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

   Мы разлиновываем рисунок, обозначая на нём отдельные поля, паттерны размером  100х100 пикселей. Каждый паттерн имеет свой номер, состоящий из номера строки, в которой он находится, и номера столбца. Например, женская голова с причёской находится в нулевом столбце второй строки, то есть, в паттерне № 10. По этим номерам, которые указываются в графическом элементе под названием «Паттерн», компьютер и определяет, откуда брать растровое изображение. А вот куда это изображение помещать и как его разворачивать, компьютер легко догадывается, потому что элемент «Паттерн» оформлен так, как и другие элементы векторной графики, такие, как круги и прямоугольники, многоугольники и полилинии, кривые Безье и фигуры Безье, ничем от них в этом отношении не отличаясь.

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

   Те элементы, к которым нам хотелось бы иметь симметричные, мы извлекаем из массива, тем самым дублируя их, зеркально отражаем и запоминаем. В результате к строкам массива G у нас добавляется ещё четыре строки.
   Да, забыл сказать – после того, как мы создали паттерн с изображением головы, сразу же следом, рисуем кривыми Безье черты лица и запоминаем их. После чего объединяем кривые в общую фигуру. Это делается для того, чтобы черты лица могли перемещаться отдельно, создавая мимику.
    Чтобы персонаж умел разговаривать и петь, верхняя его губа изображается кривой Безье, и эти 3 элемента – лицо-паттерн, черты лица – фигура, и верхняя губа  кривая Безье, все они помещаются в одну группу, а именно, мы даём им номера 10, 11 и 12, и они попадают в группу №1 по числу десятков. В то же время, они находятся в группе 0 по числу сотен.

    Разделение элементов по группам нужно для того, чтобы можно было бы перемещать эти элементы вместе, в составе своих групп, но отдельно от групп других. Например, если мы выбрали черты лица под номером 11, то, выставив сиреневый ластик и кликая по панели шагового перемещения, мы передвигаем все элементы, находящиеся под тем же номером по числу десятков, то есть, передвигаем голову целиком, а выставив синий ластик, мы будем передвигать и все элементы других групп, поскольку их номера совпадают с номером 11 по числу сотен.
    У нас в запасе есть ещё и розовый ластик – он объединяет элементы по числу тысяч. Таким образом, выбирая элемент и выбирая цвет ластика, мы можем или двигать этот элемент отдельно, или вместе с небольшой группой, или двигать персонаж целиком.
   
    А что значит – двигать? Двигать элемент можно вручную, кликнув по точке перемещения и перетаскивая элемент вместе с ней, или кликнуть маркер поворота, и поворачивать элемент, одновременно меняя его размеры, – это один способ. Но можно эти передвижения делать пошагово – кликая между кругами на выдвижной панели обозначать направление и величину перемещения, кликая по правым углам панели поворачивать графику, и кликая по левым углам панели, менять её размер. Для создания покадровой анимации шаговое перемещение удобно.
    Кликнув по середине панели внутри чёрного круга мы просто перезапишем графику и закрепим её, но если на кнопке активного цвета поставлен значок #, то мы этим кликом изменим номер строки паттернов, заменив этот номер на тот, который поставлен на кнопке зелёной компоненты цвета (см. на иллюстрации).
   
    Именно так я и поступил со своим певцом и танцором – сделал сначала с ним вот этот клип - http://yadi.sk/i/CHRd3HTkugw9gQ а потом сдвинул его вправо, сделал женщиной, и вновь загрузил его из файла на его прежнее место. Так образовалась пара, которую вы видите на иллюстрации.
  Так как сделаны они копированием, то и номера групп их элементов тоже совпадают. Поэтому и двигаться они будут в значительной степени синхронно. Как это у них получается, вы можете посмотреть тут - http://yadi.sk/i/dXJhifQ8dv4KVg

_________
21.07.2020


Рецензии
Здравствуйте, Дмитрий! Интересное у Вас увлечение. А я, несмотря на переезд в другой дом и даже город, может благодаря коронавирусу, стал публиковать свои воспоминания об образовании и работе. Хотя с нами сейчас и внучка, и кошка. Мы с вами одного возраста, так что и у Вас было подобное. Напечатал примерно половину, не знаю, хватит ли духу и настроения дописать до пенсии. Уже пишу восьмую часть, начало (1 часть): http://proza.ru/2020/06/24/108
Если заинтересуетесь, можете глянуть.
Жаль не вижу у Вас новых стихов или прозы. Что касается компьютерной графики, сегодня существует множество программ и профессиональных дорогих и любительских. Например, моя внучка в них разбирается лучше нас, что-то создает постоянно. Например, они в студии моей дочки записали известную песню, она тут же проиллюстрировала живыми рисунками своих героев: http://www.youtube.com/watch?v=Tg8_7ivtzOI
С уважением,

Владимир Кожин 3   03.08.2020 20:02     Заявить о нарушении