ГЕНЕРАТИВНИ ПРИСТУП У СИМУЛАТИВАЊУ ВЕРКОЛОРСКИХ БОЈА

Source: http://www.tylerlhobbs.com/writings/watercolor

ТАЈЛЕР ХОББС * TYLER HOBBS

Ја сам добила велики број захтева да објасни технику иза “акварел” генеративног уметничка дела. Мој приступ је сличан неке од техника коју сам описао у свом посту на Генерисање софт текстури, па прво прочитао да ако већ нисте. Алгоритам није нарочито егзотично. Уместо тога, то је концептуално једноставна, али фино подешен.

ИНСПИРАЦИЈА

Често експериментишем са акварелним бојама у својој скетцхбоок-у. Посебно волим необично детаљне и разноврсне ефекте које боје могу произвести. Једна скица ми је ухватила у очи и на то сам се фокусирала док сам развијао ову технику:

WATERCOLOR SKETCH

Мој циљ није био да стварно репродукујем све о бојама акварела. Уместо тога, само сам хтео да ухватим суштину тога што стварно уживам.

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

На основном нивоу, техника се састоји од слагања пуно скоро прозирних слојева један на другу. Да бисте добили подручја са постепеним изумирањем, ти слојеви треба да имају пуно варијација у свом облику. Међутим, у подручјима са оштријим границама слојеви требају мало варијације.

Језгро технике акварела је рекурзивни полигонски деформациони алгоритам. Прилично је једноставно, и то иде нешто овако:

  1. За сваки ред А -> С у полигон, пронађу средиште, В . Од Гаусову расподелу концентрирана на В, изабрати нову тачку Б '.
  2. Ажурирање полигон, замене линије А -> С са две линије: А -> В ' анд В' -> С
  3. Ако нисмо погодила нашу дубину највећа рекурзије, поновите од корака 1, поделу дете линије.

У зависности од варијације у вашој Гауссовој дистрибуцији и дубини рекурзије, ово ће произвести полигон са оштрим, детаљним ивицама.

КОРИШЋЕЊЕ ТЕХНИКЕ ДЕФОРМАЦИЈЕ ПОЛИГОНА

За овај примјер, примијенитићу технику полигонске деформације једноставном правилном полигону:

STARTING POLYGON

Основни облик акварела створен је кроз један круг полигонске деформације. Улазни полигон се узима и пролази кроз функцију деформације више пута (негде око 7). Добијени полигон постаје “базни полигон” за све слојеве које ћемо креирати. Изгледа нешто овако:

BASE POLYGON

За сваки слој почните са “базним полигоном” и покрените га кроз функцију деформације још неколико пута (можда 4 или 5). Ово ће произвести полигон који је сличан основном полигону, али се разликује у свим детаљима. Нацртајте полигон са ниском прозирношћу (негде око 4%). Поновите ово за 30 до 100 слојева. Резултат ће изгледати овако:

SIMPLE WATERCOLOR BLOB

РЕФИНЕМЕНТ: ЛОКАЦИЈА И ВИСОКО ВАРИЈАЦИЈА

Досадашњи кораци ће произвести облик који има донекле меке ивице. Да би граници пружили оштре ивице у неким подручјима и меке ивице у другим, можемо додијелити различите нивое “варијансе” сваком сегменту линије. Сегменти са високом варијансом ће подвргнути великим промјенама у сваком кругу мутација, а сегменти са малом варијансом ће бити подвргнути ситним промјенама. Када је сегмент подијељен на два дјечја сегмента, та дјеца могу наследити варијанту родитеља. Наравно, варијанса треба нешто смањити, а такође је добра идеја да се мало рандомизује која варијанса свако дијете добија. Са овом променом на мјесту, блатови изгледају занимљивије:

WATERCOLOR BLOB WITH SOFTNESS VARIATION

WATERCOLOR BLOB WITH SOFTNESS VARIATION

РЕФИНЕМЕНТ: ТЕКСТУРЕ МАСКИНГ

Природна акварел није савршено глатка, и има неке варијације у непрозирности. Да бисте ухватили мало тога, можете користити другу маску за текстуру на сваком од 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)

Резултат изгледа овако:

WATERCOLOR BLOB WITH TEXTURE MASKING

РЕФИНЕМЕНТ: ЦОЛОР БЛЕНДИНГ

Мешавање вишеструких боја помоћу ове технике добро функционише све док се слојеви преплетају. На пример, урадите пет слојева црвене мрље, затим пет слојева жутог блата, затим пет црвених, итд. Ово заправо не репродукује оно што се дешава са праве боје аквареле, али ипак изгледа сјајно. Када се комбинује са текстуром која маскира изнад, ово изгледа овако:

BLENDING TWO COLORS

ПРИМЕР РАДОВИ

Ево неколико дела које сам креирао са овим техникама до сада.

ISOHEDRAL XI

LINEAR

То је све за сада! Ако сте нашли ово интересантно, наставите и пријавите се за мој билтен у доњем пољу да бисте ме обавијестили кад год пишем о другим аспектима генеративног умјетничког рада. Живели!

Измена 2: Отишао сам дубљу о овој теми на Странге Лооп 2017 са мог говора под насловом “Како Хацк је слика”. Иоу цан ватцх видео снимак тог разговора о иоутубе.