Особенности компьютерной акварели

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

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

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

  На этом философия заканчивается, и я приступаю к рассказу о том, как устроено компьютерное рисование акварелью.

    КАК ЭТО УСТРОЕНО

  Когда мы опускаем стилус на планшет, то происходит событие Mouse_Down, и программа, узнав об этом, подготавливает кисть к рисованию – запоминает выставленное значение Плотности следа, радиус пятна рисования, и учитывая многие другие опции, соображает – сколько активного цвета она будет подбавлять к цвету тех пикселей, которые закрашиваются, и то, как именно она будет это делать.
  Затем, когда мы передвигаем опущенный стилус по планшету, каждый раз, при попадании его на другой пиксель, возникает событие Mouse_move, и это событие тоже обрабатывается – быстро перебирая пиксели по расширяющейся спирали, начиная с расстояния до центра R=0, и до внешней кромки кисти с R=Rmax, программа считывает цвет конкретного, попавшего под кисть пикселя, добавляет к его цвету немного активного цвета, и окрашивает этот пиксель, но уже немного другим, новым цветом.
  Таким способом можно легко сделать и полупрозрачную кисть, и мягкие края этой кисти. Чтобы получить мягкие края, нужно коэффициент добавления цвета ослабить к краям. Сделать это можно с помощью множителя
  (1 – I/Im), где I – порядковый номер окрашиваемого пикселя, а Im – максимальный номер пикселя в пятне. Чтобы получить более плавное спадание интенсивности на краях, можно возвести этот коэффициент в квадрат, или в другую какую степень.

  Тут я хочу обратить ваше внимание на то, что математические операции, такие, как сложение, умножение, возведение в степень, а также стандартные операции, такие как RGB(R,G,B) – создание цвета по трём его компонентам, Rnd(1) – генерация случайного числа, эти операции выполняются почти что мгновенно, а вот на чтение цвета пикселя или окрашивание пикселя, на рисование прямой или окружности, времени требуется в пол сотню раз больше, эти процедуры связаны с обращением к видеопамяти, потому и выполняются медленнее.
  Поэтому, экономить на множителях, вроде указанного выше, не стоит.

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

     КИСТЬ, ОБРАЗУЮЩАЯ КАНТ ПО КРАЮ СЛЕДА

  В программе «Стереометрия и Анимация» в настоящее время имеется три кисти с акварельным эффектом. Рыбка на иллюстрации нарисована кистью, в которой краска стекает к правой стороне следа и там образует кант.
  Чтобы этот кант образовался, во время окрашивания пикселей по спирали красится не только текущий пиксель, но и предыдущий. Или вновь перекрашиваются два предыдущих – тогда кант становится более выраженным.
  Край следа, противоположный канту, получает противоположное свойство – от него краска, слегка закручиваясь по спирали, оттекает. Если этот край проходит по ранее наложенной яркой краске, то эта краска размывается, и тоже оттекает от края внутрь следа. Таким образом, след компьютерной кисти ведёт себя в точности так, как должна себя вести настоящая акварель.
  След ведёт себя так, если окрашивающая пиксели спираль раскручивается против часовой стрелки. Если же направление поменять, и раскручивать спираль не против, а по часовой стрелке, то тогда кант оказывается на левой стороне следа, а размывающей стороной будет правая его сторона. Интенсивность стекания и размывания зависит от цифры на кнопке Плотность.
  Получающийся след можно сделать слегка зернистым, если, закрашивая пиксели, случайным образом пропускать некоторые их них.
 
     СТЕКАЮЩАЯ АКВАРЕЛЬ

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

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

  Аналогично устроена и кисть «Змейка». Только след у этой кисти создаётся не сразу, а расширяется по мере продвижения стилуса вперёд.
  При плотности 9 кисть «Змейка» непрозрачна, и ею удобно рисовать всякие листочки и веточки http://youtu.be/6KMZwV8zN1o

     КАК ОСЛАБИТЬ СТЕКАНИЕ

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

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

     ИСПОЛЬЗОВАНИЕ ПРОЗРАЧНЫХ КРАСОК

  Как известно, акварельные краски имеются двух сортов – темные с виду и прозрачные на бумаге, или светлые с виду и на бумаге не очень прозрачные.
  И не обязательно это гуашь. Посмотрите на набор акварельных красок, там есть очень тёмный ультрамарин, тёмный краплак, тёмная изумрудно зелёная, но также есть кадмий лимонный, или кадмий ярко красный. Без этих красок никак не обойтись. Между тем эти краски непрозрачны.

  Как же так, скажите Вы, ведь это акварель, а она как бы по определению прозрачна!
  А вот вовсе нет, эти краски действительно кажутся прозрачными, когда бумага окрашивается ими очень жиденьким слоем, когда частички этих красок не перекрывают друг друга и когда они не смешиваются с красками своих дополнительных цветов. В последнем случае ничего кроме грязи не получается.
  То же самое наблюдается и в компьютерном рисовании.
  Собственно говоря, и математические законы смешения непрозрачных и прозрачных красок различны. Вот, к примеру, функция, которая смешивает два непрозрачных цвета C1 и C2 –

  C = ccRGB( C1, C2, A)   как реализуется это смешение практически?

  Практически сразу цвета C1 и C2 разбиваются на составляющие их компоненты – целые числа R1, G1, B1 и R2, G2, B2 (каждое от 0 до 255).
  Число А (от 0 до 1) указывает на долю первой компоненты в получаемой смеси. Это число определяется заранее, ещё в момент опускания стилуса на планшет, и определяется оно по формулам –
   
    A = (10 – CV – 0.5) * W:
    A = 1 / A
где CV – значение Плотности (целое число от 0 до 9), а W – радиус пиксельного пятна.
  Далее, каждая из компонент преобразуется так –
  К = К1*А + К2*(1-А) а затем компоненты собираются вместе.

  Совсем не так поступают, если компонент C1 означает цвет прозрачной краски. В момент опускания стилуса на планшет красящий цвет разбивается на компоненты, а затем эти компоненты нормируются и преобразуются в коэффициенты. Формулы для этого используются такие –

B1 = B1 / 255: G1 = 1/ 255: R1 = R1 / 255:
A = (10 - CV) * W:
A = 1 / A: B1 = B1 ^ A: G1 = G1 ^ X: R1 = R1 ^ X:  -значок ^ это возведение в степень

  Потом, при обработке события Mouse_move, цвет смеси определяется так –

B = B2 * B1: G = G2 * G1: R = R2 * R1:
C = RGB(R, G, B):

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

__________
25.02.2023

Скачать программу «Стереометрия и анимация» можно тут – http://disk.yandex.ru/d/pT6LoBWUGOBfiw программа работает в среде Виндос.


Рецензии
Как же красиво... Мне очень нравится компьютерная акварель. А как это устроено, надо ещё почитать внимательно и не один раз. Благодарю, Дмитрий, за публикацию. Здорово!

Ирина Петал   25.02.2023 20:15     Заявить о нарушении
Спасибо. Сейчас я переношу в новую программу те кисти, которые хорошо себя зарекомендовали, и заодно совершенствую их и делаю шире их возможности.
Появляется и новое. Сейчас у меня есть великолепная пастель. Основа её - растушёвка.
Растушёвка тоже интересно устроена. Надо будет про неё отдельную статью написать.

Дмитрий Маштаков   25.02.2023 23:11   Заявить о нарушении