Живая капля акварели 2

Маштаков
   Продолжаю рассказывать об опытах с акварелью в графическом редакторе.

   Кисть №2, о которой рассказывалось тут  http://www.proza.ru/2019/07/27/148 , работает с пятном, имеющим непрозрачный керн и прозрачный ореол вокруг него.
   Следы этой кисти в режиме "гуашь" показаны на иллюстрации слева. Маленький керн посередине имеет диаметр 3 пикселя, но можно сделать его и побольше.

   Вне зависимости от размера керна, в режиме акварель этот керн частично размывается  ореолом, и распространяется по ореолу в виде хлопьев, или пигментных зёрен, довольно хаотично двигающихся в капле акварели и перетекающих в ту сторону, куда направлен вектор стекания.
    Напомню, что стекание акварели создаётся за счёт постановки дополнительного пикселя в стороне от основного, в то время, как основной очерчивает расходящиеся круги, образующие пятно закраски.
____________
    АЛГОРИТМ, этот раздел можно пропустить.

  For I = Im To Im2
    X = RXY(I, 1) + Xm: Y = RXY(I, 2) + Ym
    R = RXY(I, 0): A = RK20(R)
    C = Form1.Picture1.Point(X, Y): If C = Cb Then C = -1
    If C > 0 Then C = ccRGB(OldC, C, A): C = C Or &H10101: Form1.Picture1.PSet (X, Y), C
    If C > 0 And AG = 1 Then Form1.Picture1.PSet (X + VX, Y + VY), C: Call Nswap
  Next I

здесь из массива RXY( , ) извлекаются координаты пикселя для закрашивания, и к ним прибавляются координаты указателя мыши. Цвет пикселя C, взятый с экрана, анализируется, и в том случае, если он совпадает с цветом маски Cb, пиксель пропускается и не закрашивается.
      Если маска отсутствует, то процесс протекает беспрепятственно. Заданный активный цвет OldC разбавляется  цветом фона C в пропорции  A.  Таким образом находится тот цвет, которым будет закрашен пиксель.
     Само значение A этой пропорции зависит от радиуса  R, а радиус извлекается из массива, в который эти значения были предварительно помещены (см. http://www.proza.ru/2019/07/06/1273 ).
     Вот собственно и всё. Дополнительный пиксель разыгрывается подпрограммой Nswap, и ставится только в режиме акварели (AG=1) со смещением на вектор затекания (VX, VY).  Составляющие этого вектора лежат на сегменте от -2 до 2.
_________________
    ПРОДОЛЖЕНИЕ

     Пятно акварели будет стремиться течь по пикселям в ту сторону, с какой стороны был поставлен дополнительный пиксель. Всего таких направлений может быть выбрано 16.
     Ну, хорошо, а можно ли сделать так, чтобы акварель текла не столь определённо - не строго вниз, а вниз, а потом немножко правее, потом левее и снова вниз?
    Тогда и след от капли акварели станет более естественным.
   
    Нет ничего проще - будем разыгрывать эти направления. Одно единственное направление разыгрывать не к чему, а вот два можно разыграть. Можно разыграть 3, 4, 5, 7 и 9 пикселей, примыкающих к основному направлению стекания. Именно так в программе и делается.
    Чем большее число пикселей принимает участие в стекании акварели, тем менее консолидированным оказывается направление стекания. Соответственно меняется и цвет. Менее консолидированный по направлению стекания след оказывается более насыщенным пигментом. Эти следы кисти, сделанные в направлении затекания, вы можете видеть в верхней части иллюстрации.

    Любопытно, а можно ли сделать каплю, которая бы не стремилась куда-либо течь, а только бы растекалась чуть-чуть по плоскости? Как если бы мы рисовали акварелью на  горизонтальной поверхности листа.
    Сделать так можно. Будем разыгрывать не пиксели, примыкающие к определённому направлению, а все 16 направлений, выбирая их наугад, но делая между выбором некую, тоже случайную паузу, связав её опять же с задаваемым значением консолидации.

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

     Особый случай представляет консолидация, равная 1. Направление стекания в этом случае не разыгрывается вовсе. Вектор затекания полагается равным нулю, и дополнительный пиксель ставится на то же место, что и основной. Это то же самое, как если бы он не ставился вовсе. Капля в этом случае утрачивает свои затекающие свойства, но прозрачность её, разумеется остаётся. Такие следы вы также можете видеть на иллюстрации.
      Таким образом, в зависимости от настройки, акварельная кисть может создавать разные, и очень интересные фактуры.
      Снизу, в правой части иллюстрации показаны следы того, как капля акварели растворяет чёрный пигмент напечатанного текста. Совсем, как настоящая водяная капля, если бы типографская краска была бы растворима в воде.
    
     Меня спрашивают, а действительно ли  подобная акварельная кисть удобна для рисования?
     Да, удобна*, я сделал на пробу пару рисуночков в своём редакторе. Их и показываю. Голубенький цветочек был сделан с помощью чёрной маски - сначала я рисовал его белым на не совсем чёрном фоне, а затем сделал фон чёрным, и расцветил цветочек незатекающей краской, используя эту же самую кисть №2. Незатекающая краска к чёрному не пристаёт.
     Это свойство реализуется знаком "больше" в приведённом выше алгоритме, вместо знака "больше или равно".

____________
28.07.2019


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

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

   Вопрос удобно ли работать акварелью, из того же разряда, что и вопрос удобно ли изъясняться стихами. Да, если не умеешь, то неудобно. Но когда этим мастерством овладеешь, то  откроешь для себя путь к неожиданным красотам, о которых и не подозревал прежде.