Работа компьютерной кистью по фактурному фону

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

  Ответа на этот вопрос я не знаю. Однако он для меня интересен, поскольку в своей программе для рисования я пошёл именно по этому пути -
http://proza.ru/2023/06/04/216

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

  КАК РАБОТАЕТ ФАКТУРНЫЙ ФОН

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

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

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

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

  Выставив возле цифр буквы «о» - 1о,2о и 3о, мы установим опцию позитивного темнения. В этой опции фон, подложенный под рисунок, будет проявляться как позитив – более тёмные места фона вызовут потемнение налагаемой краски. Но, как и в первом случае, над белыми местами фона никакого темнения не произойдёт.
  В обоих опциях фон проявляется в виде сетчатой структуры. По такому холсту можно работать и акварелью, и хотя при использовании акварельных кистей сетчатая структура видна слабо, зато она способствует появлению зернистости, а эффект побеления следа делает след ещё более интересным.

     КАК ДЕЛАЕТСЯ ФАКТУРНЫЙ ФОН

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

For Y = 0 To Ymax: For X = 0 To Xmax:
     C = C1 + Ax * Sin(K * X) + Ay * Sin(K * Y):
     Fon(X, Y) = C:
      If Rnd(1) < 0.5 Then
        If Rnd(1) < P Then Ax = A / 8:
        If Rnd(1) < P Then Ax = A:
      Else:
        If Rnd(1) < P Then Ay = A / 8:
        If Rnd(1) < P Then Ay = A:
      End If:
Next X, Y:

Параметр K определяет ширину полос фактуры, а параметр P создаёт временное ослабление амплитуды синуса в 8 раз. Функция Rnd(1) генерирует случайные числа между нулём и единицей.
  При больших значениях параметра P (0.7 – 0.9) в фактурном фоне появляется структура с выраженными горизонтальными полосами, а при смене очерёдности циклов с Y,X на X,Y аналогичные полосы на холсте располагаются вертикально.
  После создания фона появляется сообщение, указывающее в процентах уровни наиболее светлой и тёмной точек фона - Ca и Cb. Эти величины соответствуют заданным активному цвету и цвету фона, частота нитей фона определяется клавишей «размер кисти», а неоднородность нитей – цифрой на кнопке Плотность.

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

__________
15.07.2023


Рецензии