Генеративный подход к моделированию акварельной краски

Перевод статьи A GENERATIVE APPROACH TO SIMULATING WATERCOLOR PAINTS, автор - Tyler Hobbs

У меня появилось много просьб объяснить технику моего «акварельного» генеративного произведения. Мой подход похож на некоторые из тех методов, которые я описал в своем посте о создании мягких текстур, поэтому сначала прочитайте этот материал, если вы еще этого не сделали. Алгоритм не особенно экзотичен. Напротив, он концептуально прост, однако при этом точно настроен.

ВДОХНОВЕНИЕ

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

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

ДЕФОРМАЦИЯ ПОЛИГОНА

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

Ядром акварельной техники является алгоритм рекурсивной многоугольной деформации. Это довольно просто, и это происходит примерно так:

  1. Для каждой линии A -> C в многоугольник, найти среднюю точку, B . Из распределения Гаусса с центром в B выберите новую точку B ' .
  2. Обновите многоугольник, заменив линию A -> C двумя строками: A -> B ' и B' -> C
  3. Если мы не достигли максимальной глубины рекурсии, повторите шаг 1, разделив дочерние линии.

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

ИСПОЛЬЗОВАНИЕ МЕТОДИКИ ДЕФОРМАЦИИ ПОЛИГОНА

В этом примере я собираюсь применить метод деформации многоугольника к простому правильному многоугольнику:

Основная форма акварелей создается через один раунд деформации многоугольника. Входной многоугольник берется и проходит через функцию деформации несколько раз (где-то около 7). Полученный многоугольник становится «базовым многоугольником» для всех слоев, которые мы создадим. Это выглядит примерно так:

Для каждого слоя начинайте с «базового многоугольника» и запускайте его через функцию деформации еще несколько раз (возможно, 4 или 5). Это создаст многоугольник, похожий на базовый многоугольник, но отличается во всех тонких деталях. Нарисуйте многоугольник с низкой непрозрачностью (где-то около 4%). Повторите это для 30 - 100 слоев. Результат будет выглядеть так:

УТВЕРЖДЕНИЕ: НИЗКИЕ И ВЫСОКИЕ ИЗМЕНЕНИЯ

Шаги до сих пор будут иметь форму, которая имеет несколько мягкие края вокруг. Чтобы дать одинарным краям границы в некоторых областях и мягких краях в других, мы можем назначить разные уровни «дисперсии» для каждого сегмента линии. Сегменты с высокой дисперсией претерпят большие изменения в каждом раунде мутаций, а сегменты с низкой дисперсией претерпят небольшие изменения. Когда сегмент разделен на два дочерних сегмента, эти дети могут наследовать дисперсию родителя. Конечно, дисперсия должна немного уменьшиться, и также неплохо было бы немного рандомизировать, какую дисперсию назначают каждому ребенку. С этим изменением на месте, капли выглядят более интересными:

УТОЧНЕНИЕ: МАСКИРОВКА ТЕКСТУРЫ

Естественная акварель не совсем гладкая и имеет некоторые различия в непрозрачности. Чтобы немного уловить это, вы можете использовать другую текстуру для каждой из 30 - 100 слоев. Маска сделает некоторые части слоя полностью прозрачными, создавая изменения в финальной непрозрачности. В этом примере я случайно размещаю около 1000 маленьких кругов на изображении для текстурной маски.

; draw the watercolor blob shape
(with-graphics the-blob-mask
  (background 0 0 0)
  (stroke 0 0 layer-alpha)
  (fill 0 0 layer-alpha)
  (begin-shape)
  (doseq [[x y] final-poly]
    (vertex x y))
  (end-shape))

; draw the circles onto the texture mask
(with-graphics the-texture-mask
  (background 0 0 0)
  (no-stroke)

  (fill 0 0 layer-alpha)
  (doseq [j (range 900)]
    (let [x (random 0 (w))
          y (random 0 (h))
          len (abs-gauss (w 0.03) (w 0.02))
          [hue sat bright] (color-fn)]
      (fill hue sat bright)
      (ellipse x y len len)))

  ; Blend the watercolor blob shape layer into the current
  ; layer, only taking the darkest pixel from each. This
  ; effectively means we're taking the "intersection" of
  ; the two masks.
  (blend the-blob-mask 0 0 (w) (h) 0 0 (w) (h) :darkest))

(with-graphics the-overlay
  ; make the whole background red
  (background 5 80 80)

  ; apply the combination blob/texture mask
  (mask-image the-texture-mask))

; apply the masked layer
(image the-overlay 0 0)

Результат выглядит следующим образом:

БЛОК ВОДОТОКОВОЙ С МАСКАМИ ТЕКСТУРЫ

УТОЧНЕНИЕ: ЦВЕТНОЕ БЛЕНДИНГ

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

ПРИМЕРЫ РАБОТЫ

Вот несколько работ, которые я создал с помощью этих методов.

ISOHEDRAL XIЛИНЕЙНАЯ

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

Не нашли ответ на свой вопрос? Возможно, вы найдете решение проблемы на нашем канале в Youtube! Здесь мы собрали небольшие, но эффективные инструкции. Смотрите и подписывайтесь на наш youtube-канал!

Смотреть на Youtube

Руководства и обзоры

1 Что нужно восстановить?

Видео

MP4, AVI и HD видео хранятся на телефоне и / или по ошибке удаляются вместе с фотографиями и другими медиафайлами.

Контакты

Номера телефонов друзей и знакомых из приложения «Контакты Android», журналы вызовов; Восстановление SIM-карты.

Фото

Удалены файлы JPG / PNG из Галереи Android; фото, загруженные на мобильный, файлы повреждены после восстановления.

Смс и сообщения

Чаты WhatsApp и Facebook, текстовые сообщения в соцсетях, информация на сим-карте

2 Где пропали файлы?

На sd-карте

Фотографии и документы хранятся на SD-картах. Часто на них случайно удаляются файлы

На телефоне

Программы для восстановления не распознают внутреннее хранилище телефона как диск, но есть другие решения.

На USB флешке

Эти небольшие устройства хранения данных часто выходят из строя или на них появляются ошибки чтения.

На HDD или SSD

Несмотря на то, что настольные платформы становятся все менее популярными, проблема потери файлов всегда оставалась.