Точки векторной графики в увеличенном виде

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

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

  Потому я придумал способ, как передвигать точки в маленьком изображении, оставив изображение на своём месте и в маленьком виде, совсем не увеличивая его. Тут нужно сделать пояснения.

  ЛОМАНАЯ ЛИНИЯ, КАК ФИГУРА ВЕКТОРНОЙ ГРАФИКИ

  Ломаная линия, с одной стороны, достаточно проста – координаты X,Y каждой точки попросту перечисляются в строках векторного массива, имея достаточно компактный вид – пять пар координат на каждую строку.
  Посмотрите, как выглядит та маленькая рука, которую вы видите на иллюстрации, в векторной форме ( 29 это логотип Ломаной) –

    18>    29  187  241  19  77  6  237  232  351  16223  3  # 6
 19   0  1913  2374  1963  2350  2006  2314  2028  2262  2036  2207
 20   0  2045  2152  2053  2097  2075  2045  2090  1991  2120  1946
  не буду утомлять вас перечислением всех точек, вот последние строки
 33   0  2254  2554  2201  2573  2154  2603  2106  2632  2057  2658
 34   0  2010  2689  1958  2710  0  0  0  0  0  0

  Да, точек здесь много, их 77. Но обрабатываются такие вещи компьютером мгновенно. В массиве, в целочисленной форме, указаны именно  координаты точек на рисунке, правда, для Ломаной линии эти числа увеличены в 10 раз. То есть, координаты  определены с точностью до одной десятой пикселя.

  Так сделано потому, что точки в «Ломаной линии» идут настолько часто, что иногда могут занимать один и тот же пиксель на рисунке. И тогда отделить их друг от друга становится немного трудно.

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

  Клавиша «h» нижнего регистра переводит Ломаную в Многоугольник с острыми углами и обратно. Но если углы многоугольника скруглены, то эта же клавиша поможет продолжить процесс – сделать по подобию скруглённого многоугольника полноценную фигуру Беэье, составленную из кривых.

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

  «ЗЕЛЁНАЯ ОПЦИЯ» и КОРРЕКЦИЯ КОНТУРА ВЕКТОРОНЙ ФИГУРЫ

  Кнопка переключения опций рисования создаёт три режима работы – первый режим обычный (кнопка в нём имеет жёлтый цвет), в третьем режиме можно создавать новые векторные фигуры (на кнопке буква «а» на жёлтом фоне), а во втором режиме кнопка опций зелёная. В зелёной опции контур выбранной фигуры можно корректировать простыми движениями стилуса.

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

  И вроде результат одинаков – у нас получились очень маленькие кружочки. Однако, посмотрите на точки кружочков в увеличенном виде, это там же, на иллюстрации, рядом. Видите, как гладко и аккуратно расположены точки в первом случае и как они разбросаны во втором?
  Так случилось потому, что расквантовка с погрешностью в 1 пиксель огрубляла результаты каждого нашего преобразования. Если точки расположены далеко друг от друга, то в этом ничего страшного нет – если ошибка накопится, и мы это заметим, то мы уменьшим область воздействия на точки до минимума (установим цифру 0 на кнопке «Градиент») и тем же движением стилуса поправим положение отдельной точки.
  Однако, если точки идут часто, то мы не сможем двигать только одну точку, не задев при этом других, расположенный рядом, точек контура. Да и как мы выберем именно нужную нам точку, если они находятся так близко друг к другу?

  Есть другой радикальный способ двигать точки как в «зелёной опции», так и без неё. Делается это с помощью клавиш со стрелками на клавиатуре. Нужно только предварительно войти в контур и клавишами > и < на клавиатуре ноутбука выбрать нужную точку ( для быстрого перемещения по контуру нажимаем клавиши правее и левее).
  Однако работа с клавишами - дело хлопотное, и требующее внимания. Куда проще и приятнее двигать стилусом!

   РАБОТА В ЗЕЛЁНОЙ ОПЦИИ с окном_L

  Окно, в котором фигуру можно увидеть в увеличенном размере, создаётся в зелёной опции рисования. Нужно кликнуть по точке чуть выше и левее фигуры, обозначив тем самым угол изображения для помещения его в окно, а затем кликнуть кнопку со значком > на левой панели. Если включён режим «Показа» векторной графики, то на рисунке появится окно размером 600х500 пикселей, которое вероятно перекроет вид на векторную фигуру. Это окно нужно переместить движениями стилуса на удобное для работы место. Увеличение в окне задаётся цифрой, стоящей от кнопки > слева. Если там стоит 1, то увеличение будет 2х.

  Затем кликаем правой кнопкой мыши по зелёной кнопке опций, и на кнопке появляется буква «L». Этот режим фиксирует положение окна, и теперь мы сможем не только наблюдать расположение точек, но и передвигать точки по окну. Синхронно с этим будут передвигаться и точки на рисунке. Очень легко таким способом из бесформенного контура сделать пальцы на руке даже в том случае, когда изображение руки на рисунке имеет очень малые размеры. Именно так я кисть руки и сделал.

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

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

  Наш эксперимент с уминанием контура показал, что Ломаная линия имеет преимущества перед Многоугольником в том случае, когда размеры фигуры на рисунке малы. Из многоугольника руку с пальцами я не смог бы сделать.
  Многоугольники рассчитаны на нечто другое – они немного проще обрабатываются программой, и им не требуется много точек для того, чтобы линия контура казалась гладкой, поскольку углы многоугольника могут быть скруглены. Скругление делается кривыми Безье, но эти кривые не показываются в окне_L, там многоугольник имеет острые углы.

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


Рецензии