ivo3d FX

TD Akvarell

TouchDesigner · GLSL · tesztelve: TouchDesigner 2025.33070, NVIDIA GPU · In English

Akvarell, ami magától festődik meg egy felvételből. Nem elmosás-visszacsatolás trükk: a videó a festő, a többit egy kis folyadék-szimuláció végzi. A festék és a víz csak nedves papíron mozog, a saját tempójában szárad, a lavír szélén összegyűlik, leül a papír völgyeibe, és ott marad, ahol megszáradt. Mozgó kamerás felvételnél a festmény együtt utazik a képpel, és újrafesti magát ott, ahol már nem egyezik vele.

Bemegy a felvétel, kijön a festmény: ugyanaz a kocka előtte és utána.
Bemegy a felvétel, kijön a festmény: ugyanaz a kocka előtte és utána.
Bemegy a felvétel, kijön a festmény: ugyanaz a kocka előtte és utána.
Bemegy a felvétel, kijön a festmény: ugyanaz a kocka előtte és utána.

Ez a lap elmagyarázza, milyen akvarell-fogásokra épül az effekt, végigveszi a két rész (prep és wc_engine) összes beállítását, megadja a tesztjeinkben legjobbnak bizonyult értékeket, és leírja, hogyan lehet videót renderelni vagy egy állóképet menteni.

Az akvarell dióhéjban

A beállítások azt követik, amit egy akvarellfestő csinál. Ezek a mögöttük lévő fogalmak, és hogy az effektben melyik csúszka felel meg nekik.

A festék áttetsző: ezért halad minden a világostól a sötét felé

Az akvarellben nincs fehér festék. A fény átmegy a pigmenten, visszaverődik a papírról, és újra átmegy a pigmenten. Két réteg egymáson mindig sötétebb színt ad, mint két színes üveglap egymáson, ezért a festményt sötétíteni lehet, világosítani alig. Az akvarell fehérjei a papír, amit sosem festettek be. Ezért dolgozik a festő a világostól a sötét felé, és ezért tervezi meg a fehéreket már az elején.

Az effekt ugyanígy működik. Optikai sűrűségben számol: egy pigmentréteg mennyi fényt nyel el. A sűrűségek összeadódnak, a fény összeszorzódik (Beer–Lambert-törvény), és a festmény csak sötétedni tud ott, ahová festék kerül. Az effektben a fehéreket a prep maszkja adja: amit a maszk kihagy, az nyers papír marad.

Lavír (wash)

A lavír egyszerre, nedvesen felvitt, hígított festékréteg egy nagyobb felületen. A belsejében a szín sima, a karakterét az adja, ami a szélein és száradás közben történik.

Lazúr (glaze)

A lazúr áttetsző festékréteg, amit egy korábbi rétegre visznek fel, miután az már megszáradt. Az új réteg nem keveredik a régivel: ráfekszik, és szűrőként sötétíti. A festő néhány lazúrból építi fel a képet: egy világos első lazúr az alapszínekhez, aztán sötétebbek csak ott, ahol a képnek mélység kell. Ahol egy lazúr száraz papíron ér véget, éles szélt hagy, így az egymásra rakott lazúrokból rétegzett, éles szélű formák lesznek.

Az effektben a Progress 0-tól 1-ig fut, és közben egymás után felviszi a lazúrokat (Glazes, alapból 3). Minden lazúr egy nedves front, ami végigsöpör a képen. Az első csak világos sűrűségig mehet (First glaze max density), a későbbiek egyre sötétebbek, és egy későbbi lazúr csak ott nedvesíti a papírt, ahol a képnek még sötétednie kell. Ettől lesznek meg a valódi lazúrozás rétegzett, éles szélű formái.

Három lazúr: a világos első, a középső és a sötét részletező.
Három lazúr: a világos első, a középső és a sötét részletező.
Három lazúr: a világos első, a középső és a sötét részletező.
Három lazúr: a világos első, a középső és a sötét részletező.
Három lazúr: a világos első, a középső és a sötét részletező.
Három lazúr: a világos első, a középső és a sötét részletező.

Hová ér előbb a nedves front? Alapból egy zajminta dönti el, melyik részt éri el előbb egy lazúr, ezért az első lavírok véletlenszerű, felhőszerű foltokban jelennek meg. A Glaze order from the picture csúszkával ezt a felvétel dönti el: vagy a festékmaszk formái nőnek a belsejükből kifelé, vagy előbb a világos részek festődnek meg, ahogy a festő is előbb a fényt teszi le, és utána dolgozik köré. A kész festmény ugyanaz lesz, csak másként születik meg.

Ugyanaz az állókép a 25., 75. és 240. kockán. Zaj: véletlen foltok. Maszkformák: a téma sziluettjei nőnek elő a papírból. Előbb a fények: a 25. kockán csak a vízesés és a köd van megfestve. A kész festmények hasonlók.
Ugyanaz az állókép a 25., 75. és 240. kockán. Zaj: véletlen foltok. Maszkformák: a téma sziluettjei nőnek elő a papírból. Előbb a fények: a 25. kockán csak a vízesés és a köd van megfestve. A kész festmények hasonlók.
Az állókép, ahogy megfesti magát a képből vezérelt sorrenddel (Glaze order from the picture 1, Picture order 0.79): előbb a fények kerülnek fel, a végén a sötétek.
Az állókép, ahogy megfesti magát a képből vezérelt sorrenddel (Glaze order from the picture 1, Picture order 0.79): előbb a fények kerülnek fel, a végén a sötétek.

Nedves a nedvesbe, nedves a szárazra

A nedves papírra cseppentett festék puhán szétterül és összemosódik: ez a nedves a nedvesbe technika. A száraz papírra vitt festék ott marad, ahová tették, és éles szélt tart: ez a nedves a szárazra. Az akvarell karakterének nagy része a puha és az éles szélek keveréke.

Az effektben az, hogy a festék mennyire mozoghat, a papíron lévő víz mennyiségén múlik (Mobility starts at water, Full mobility at water). Nedves papíron a festék szétfut és folyik, száraz papíron megáll. A száraz szomszéd falként viselkedik.

Festés közben, 1:1-ben: a festmény, aztán a víztérképe (View: water, világos = nedves). Ahol a papír nedves, a lavír puhán összemosódik; ahol megszáradt, a szélek élesek maradnak.
Festés közben, 1:1-ben: a festmény, aztán a víztérképe (View: water, világos = nedves). Ahol a papír nedves, a lavír puhán összemosódik; ahol megszáradt, a szélek élesek maradnak.
Festés közben, 1:1-ben: a festmény, aztán a víztérképe (View: water, világos = nedves). Ahol a papír nedves, a lavír puhán összemosódik; ahol megszáradt, a szélek élesek maradnak.
Festés közben, 1:1-ben: a festmény, aztán a víztérképe (View: water, világos = nedves). Ahol a papír nedves, a lavír puhán összemosódik; ahol megszáradt, a szélek élesek maradnak.

Virágzás (bloom, backrun)

Ha víz fut vissza egy már száradó lavírba, kitolja a pigmentet, és világos közepet hagy, szakadozott, sötétebb peremmel. Ez a virágzás (backrun, „karfiol”). A festők félnek tőle és szeretik is.

Az effektben: Wet to dry push (a víz a nedves felől a száraz papír felé áramlik) és Uneven paper sizing (egyes foltok később száradnak).

Ugyanaz a hely 1:1-ben: előbb a normál beállítással, aztán erősebb virágzással (több wet-to-dry push, egyenetlen enyvezés): a lavírok szétterülnek, világosabb belsővel és szakadozott peremmel.
Ugyanaz a hely 1:1-ben: előbb a normál beállítással, aztán erősebb virágzással (több wet-to-dry push, egyenetlen enyvezés): a lavírok szétterülnek, világosabb belsővel és szakadozott peremmel.
Ugyanaz a hely 1:1-ben: előbb a normál beállítással, aztán erősebb virágzással (több wet-to-dry push, egyenetlen enyvezés): a lavírok szétterülnek, világosabb belsővel és szakadozott peremmel.
Ugyanaz a hely 1:1-ben: előbb a normál beállítással, aztán erősebb virágzással (több wet-to-dry push, egyenetlen enyvezés): a lavírok szétterülnek, világosabb belsővel és szakadozott peremmel.

Szélsötétedés

Száradás közben a víz a lavír széle felé áramlik, és viszi magával a pigmentet, ezért a megszáradt lavír széle sötétebb, mint a közepe, mint egy kávéfolt pereme.

Az effektben: Edge darkening és Edge radius a Look oldalon.

Granuláció

Egyes pigmentek nehezebb szemcsékből állnak. Nem maradnak lebegve, hanem leülnek a papír völgyeibe, és pöttyös, homokos textúrát adnak.

Az effektben: Granulation (a látvány) és Settle in valleys (a pigment a papír völgyeiben gyorsabban ül le).

Granuláció 1:1-ben: a papír völgyeibe gyűlt pigment.
Granuláció 1:1-ben: a papír völgyeibe gyűlt pigment.

Kiemelés (lifting)

Nedves ecsettel vagy nyirkos papírzsebkendővel a pigment visszaszedhető, akár megszáradás után is, ha még nem festette meg a papírt. Így puhít a festő egy szélt, vagy így hoz vissza egy csúcsfényt.

Az effektben: Lift wet pigment és Lift dried pigment. Mozgó felvételnél a festmény is így világosodik ott, ahol a felvétel világosabb lett.

Papír és enyvezés

Az akvarellpapír érdes. A hidegen préselt (cold press) papír felülete dombocskás: a dombok megfogják az ecsetet (a száraz ecset átugorja a csúcsokat), a völgyek pedig összegyűjtik a granuláló pigmentet. Az enyvezés a papírban és a felületén lévő enyv, ami azt szabályozza, milyen gyorsan szívja be a vizet. Az egyenetlen enyvezés miatt egyes foltok később száradnak, és ez virágzáshoz vezet.

Az effektben: a Paper oldal (procedurális, hidegen préselt papír, vagy a saját szkenned a 3. bemeneten), valamint a Dry brush, az Uneven paper sizing és a Fibre feathering.

Optical flow (mozgó felvétel)

A papírra festett kép nem mozog, a kamera viszont igen. Az optical flow minden pixelre megméri, merre mozdult el két kocka között. Az effekt ezzel viszi együtt a nedves és a megszáradt festéket a felvétellel, és újrafesti azokat a részeket, amik már nem egyeznek.

Hogyan működik

Egy képkocka, sorrendben:

  1. A prep a felvételből festékmaszkot készít: fényesség szerinti küszöb (világosak, sötétek vagy mindkettő), zajjal tördelve, elmosott, szakadozott képszéllel. A szín változatlanul megy tovább, a maszk az alfacsatornában utazik.
  2. A source (a wc_engine-en belül) a festő: a felvételből cél-pigmentsűrűséget számol, és eldönti, hol jár a nedves ecset ebben a kockában.
  3. A velocity → divergence → pressure (×20) → project egy kis 2D folyadék a felbontás negyedén. A víz csak ott mozog, ahol a papír nedves.
  4. A state a nedves réteg (mozgó pigment és víz), a fixed a száraz réteg (a papírba leült pigment).
  5. A display a sűrűségből szín lesz a papíron (Beer–Lambert), szélsötétedéssel, granulációval, papírdomborzattal és nedves fénnyel.

Mozgó kameránál a festményt a felvétel optical flow-ja viszi magával, és az újrafestő foltok frissítik fel azokat a részeket, amik már nem egyeznek a videóval.

A rig a TouchDesignerben: video → zoom → prep → wc_engine → OUT, a papír-szkenneléssel, az exporttal és a preset-eszközökkel.
A rig a TouchDesignerben: video → zoom → prep → wc_engine → OUT, a papír-szkenneléssel, az exporttal és a preset-eszközökkel.

A wc_engine.tox használata

A wc_engine.tox maga a szimuláció, önállóan: a shaderek bele vannak ágyazva, semmilyen fájl nem kell mellé. Húzd be egy hálózatba, kösd a felvételt az 1. bemenetre (és ha kell, a mozgásvideót a 2.-ra, egy papír-szkennelést a 3.-ra), és animáld a Paint → Progress-t. Benne egy README DAT sorolja fel a bemeneteket és a gyors kezdést.

A prep.tox a festékmaszk-lánc önállóan, szintén mindent tartalmaz. Kösd a felvételt az 1. bemenetére (és ha kell, egy key-ágat a 2.-ra), a kimenetét pedig a wc_engine 1. bemenetére: felvétel → prep → wc_engine. Benne egy README DAT magyarázza az oldalakat. Ugyanígy ellenőrizve: az eredetivel azonos, az automatikus küszöbbel együtt.

Nevek és a rig

Név Mi ez
wc_engine A szimuláció (Base COMP). Minden festő-beállítás az ő paraméteroldalain van. Ebből lesz a .tox.
prep Az előkészítő lánc: küszöb, festékmaszk, képszél.
watercolor_rig A videós összeállítás: video → zoom → prep → wc_engine → OUT, mellette az export (Movie File Out).
still_test Ugyanez a lánc egyetlen képre: still → prep → wc_engine → OUT.

A wc_engine bemenetei

  1. paint: a felvétel, amiből a festmény lesz. Az alfája a festékmaszk (0 = nyers papír, lágy érték = vékonyabb lazúr).
  2. motion (nem kötelező): a felvétel, amiből az optical flow számolódik. A tiszta, nem zoomolt felvétel kerüljön ide. Ha üres, az 1. bemenetet használja.
  3. paper (nem kötelező): papír-szkennelés vagy -fotó, ha a Paper → Use paper input be van kapcsolva.

A prep bemenetei

  1. A felvétel. Ennek a színe festődik meg.
  2. key (nem kötelező): ha be van kötve, a küszöb ebből számol. Ide jöhet egy levels/deszaturáció ág: a maszkot formálja, a festett színeket nem változtatja.

Presetek

A watercolor_rig és a still_test Presets oldalán:

Beállítás Mit csinál
Preset file A JSON-fájl, a projektmappához képest (presets/…) vagy abszolút útvonallal.
Load Betölti a presetet a wc_engine-be és a prep-be.
Save A mostani állapotot a fájlba menti. Új presethez előbb írj be egy új fájlnevet, különben a meglévőt írja felül.
Status Mi történt utoljára, pl. loaded video_export.json: 95 values.

A preset a fix értékeket és a kifejezéseket is menti (például a Progress animációját). Nem kerül bele a Reset és a Width / Height / Sim FPS, mert ezek a bemenetből jönnek. Amit egy preset nem tartalmaz, az betöltéskor megtartja a mostani értékét.

A watercolor_rig Presets oldala.
A watercolor_rig Presets oldala.

prep: a festékmaszk

A prep dönti el, hol marad fehér a papír. A festő a téma legvilágosabb részeit festetlenül hagyja, a prep ugyanezt csinálja egy, a felvétel fényességére tett küszöbbel. Ami a maszkon kívül esik, nyers papír marad, a lágy maszkértékek vékonyabb lazúrt adnak, a szakadozott, elmosott képszél pedig nem engedi a festményt a kép széléig futni, mintha egy nagyobb lapra készült vázlat lenne.

View mask: a fehér festődik, a fekete papír marad.
View mask: a fehér festődik, a fekete papír marad.

Mask

A Mask oldal.
A Mask oldal.
Beállítás Alapérték Mit csinál
Paint coverage 0.3 A kép hányad részét festi a fő kulcs (0.3 = kb. 70% nyers papír marad). Bekapcsolt Auto threshold mellett a fényesség-küszöb kockánként úgy áll be, hogy ezt a lefedettséget adja.
Opposite key coverage 0.15 Ugyanez az ellentétes kulcsra, ami a tónusskála másik végét fogja meg.
Key mix 0 0 = csak a fő kulcs, 0.5 = mindkét kulcs (a középtónusok lyukadnak), 1 = csak az ellentétes kulcs.
Auto threshold be A lefedettség-értékeket követi. Kikapcsolva a lenti kézi küszöbök érvényesek.
Threshold / Opposite threshold 0.35 / 0.75 Kézi fényesség-küszöbök, kikapcsolt Auto threshold mellett.
Paint darks be A fő kulcs a sötéteket festi (invertált küszöb), az ellentétes a világosakat. Kikapcsolva fordítva.
Softness 0.06 A lágy vágás szélessége, fényességben.
Mask smoothing 8 px A kulcs elmosása, hogy a maszk formákat kövessen, ne egyes pixeleket.
Auto threshold lag 0.5 s Időben simítja az automatikus küszöböt, hogy a maszk ne villogjon.
View mask ki A kép helyett a maszkot mutatja.
Bypass ki Maszk nélkül engedi tovább a képet. Amíg ez be van kapcsolva, a prep többi beállításának nincs látható hatása.

Miért nem elég egy fix küszöb? Egy drónfelvétel a világos, naplementés tengertől a sötét dzsungelig megy. Egy fix vágás az egyik jelenetből 90%-ot lyukasztana ki, a másikból 20%-ot. A Paint coverage ehelyett a kép egy részarányát kéri, és a küszöb minden kockán újraszámolódik.

Az Auto threshold a pixelek rangsorán dolgozik. A „fesse meg a kép 30%-át” csak azon múlik, melyik pixel sötétebb a másiknál. A kulcson végzett levels-, gamma- vagy kontrasztállítás ezt a rangsort megtartja, így a küszöb egyszerűen velük együtt csúszik, és a maszk ugyanaz marad. A deszaturáció is csak annyiban változtat a maszkon, amennyiben a színek egymáshoz viszonyított világosságát módosítja. Ha levels-szel akarod formálni a maszkot, kapcsold ki az Auto threshold-ot, és a küszöböket kézzel állítsd.

Két kulcs. Egy küszöb a tónusok egyik végét festi. Egy vízeséses képen, ha csak a sötétek festődtek (lefedettség 0.45), a vízesés, a köd és a sziklafal nagy része egyetlen nyers-papír lyukká olvadt. Key mix 0.5-tel és 0.15-ös ellentétes lefedettséggel a vízesés, a köd és a hab is maszkot kapott, a középtónusú sziklafal lyukadt, és a vízesés formája újra kirajzolódott (festett terület 26% → 37%). Mivel ezek fehérek, csak halvány lazúrt kapnak.

Vízeséses állóképen mérve: a forrás, Key mix 0 (csak a sötétek) és Key mix 0.5 (sötétek és világosak), View mask nézetben.
Vízeséses állóképen mérve: a forrás, Key mix 0 (csak a sötétek) és Key mix 0.5 (sötétek és világosak), View mask nézetben.

Noise

A Noise oldal.
A Noise oldal.
Beállítás Alapérték Mit csinál
Noise amount 0.15 Mennyire tolja el a zaj a küszöböt: ettől törik ecsetszerű formákra a maszk széle.
Noise scale 5 Zajcellák száma a képmagasságon.
Noise drift 0.05 /s Milyen gyorsan sodródik a zaj.
Seed 0 Másik zajminta.

Edge

Az Edge oldal.
Az Edge oldal.
Beállítás Alapérték Mit csinál
Border feather width 0.08 Elmosott képszél, képmagasság-egységben: a kép szélén 0, ilyen távolságban befelé 1. 0 = nincs képszél.
Border tearing 0.6 Mennyire szaggatja a zaj a képszélt.
Border noise scale 6 A szakadások mérete.

A rig zoom-ja a prep előtt fut, így a képszél a végső kereten belül marad.

A szakadozott, elmosott képszél önmagában (View mask, Paint coverage 1).
A szakadozott, elmosott képszél önmagában (View mask, Paint coverage 1).

wc_engine: Paint

Ez az oldal a festő terve: hány lazúrban kerül fel a kép, mennyire lehet sötét mindegyik, milyen sorrendben éri el az ecset a részeket, és mozgó felvételnél hogyan festődik újra a kép ott, ahol már nem egyezik a felvétellel.

A Paint oldal.
A Paint oldal.
Beállítás Alapérték Mit csinál
Progress 0 A festés előrehaladása, 0 → 1. Animáld: a min(1, max(0, (me.time.frame - 1) / 150)) 150 kocka alatt fest végig. Mozgó felvételnél kb. 24 kocka legyen: a hosszú feltárás több másodpercig halvány, befagyott képnek hat.
Glazes 3 Hány lazúr kerül fel, amíg a Progress fut (lásd fent: Lazúr).
First glaze max density 0.45 Az első lazúr legnagyobb sötétsége: előbb a világosak, a végén a sötétek.
Light to dark order 0.85 0 = bármelyik lazúr mehet teljesen sötétig, 1 = szigorúan világostól a sötétig.
Max density 4 A legsűrűbb pigment. A sötét felvételt lágyan összenyomja, mert a valódi pigment sosem ér el feketét. 2.5-nél a sötétek nem feketednek be, és megtartják a színüket.
Density gain 1 A cél teljes pigment-erőssége.
Wash levels / Wash level mix 4 / 0.35 A lavír erősségét néhány lapos szintre bontja, ahogy a festő is pár tónussal dolgozik (0 = ki), ennyi keveréssel.
Brush order scale 2.5 Annak a zajnak a mérete, ami eldönti, melyik részt éri el előbb a nedves front: az ecsetformák mérete.
Wet front width 0.15 A haladó front mögötti nedves sáv szélessége.
Dry brush 0.06 A papír domborzata megtöri a nedves szélt, ahogy a száraz ecset átugorja a papír csúcsait.
Directional sweep / Sweep direction 0.3 / (0.7, −0.7) 0 = a front csak a zajt követi, 1 = ebben az irányban söpör végig a képen.
Last glaze water 0.3 Az utolsó lazúr vize az elsőhöz képest: a végén szárazabb, részletező vonások.
Glaze order from the picture 0 Melyik részt éri el előbb egy lazúr. 0 = zajminta (véletlen foltok), 1 = a kép dönti el (lásd Picture order). A kész festmény nem változik, csak az, ahogyan megszületik.
Picture order 0.5 0 = a festékmaszk formái nőnek a belsejükből kifelé, 1 = előbb a világos részek festődnek meg, köztük keverék.
Picture order smoothing 48 px A kép elmosása, mielőtt a sorrendet adja. Nagyobb = szélesebb, nyugodtabb növekedés.
Repaint changes 0 Mozgó felvételhez: mennyire erősen festi újra a felvétellel már nem egyező részeket. Drónfelvételnél 0.8.
Repaint dab coverage 0.35 A kép mekkora részét fedi egy újrafestő minta. A drónfelvételünkön 0.35-nél nagy festetlen lyukak maradtak, 0.5-nél nem.
Repaint dabs per second 4 Milyen gyakran vált a minta. A minták átúsznak egymásba, nem ugranak.
Repaint dab scale 3 A zajból vágott foltok mérete. Nagyobb érték = kisebb foltok.
Repaint dab structure 0.5 0 = zajból vágott (pacás) foltok, 1 = a felvétel tónussávjaiból vágott foltok: az újrafestés egy, a képben már meglévő tónushatáron ér véget, ahogy a festő is tónusonként lazúroz.
Repaint tone bands 3 Tónussávok száma feketétől fehérig a tónusfoltokhoz.
Repaint band noise 0.3 Zaj, ami vonásokra töri a sávot.
Repaint tone smoothing 12 px A felvétel elmosása a sávokra bontás előtt.
Repaint error threshold 0.15 Mennyire kell eltérnie a festménynek a felvételtől, hogy újrafestődjön.
A Progress mozgó felvételen, a 24., 60., 100. és 160. kockán. S0: 150 kocka alatt, az első másodpercek halványak, papírlyukakkal. S1: 24 kocka alatt, a 24. kockára kész a kép. S2: feltárás nélkül, először nyers-papír lyukak látszanak.
A Progress mozgó felvételen, a 24., 60., 100. és 160. kockán. S0: 150 kocka alatt, az első másodpercek halványak, papírlyukakkal. S1: 24 kocka alatt, a 24. kockára kész a kép. S2: feltárás nélkül, először nyers-papír lyukak látszanak.
Repaint dab structure a drónfelvételen, a 300. és a 420. kockán. N0: zajfoltok. T1: tónussávok (3 sáv, band noise 0.3). T3: tónussávok 0.6-os band noise-zal. T4: félúton (0.5).
Repaint dab structure a drónfelvételen, a 300. és a 420. kockán. N0: zajfoltok. T1: tónussávok (3 sáv, band noise 0.3). T3: tónussávok 0.6-os band noise-zal. T4: félúton (0.5).

wc_engine: Water

A víz az akvarell lelke. Itt állítod, mennyi vizet visz az ecset, meddig marad nedves a papír, milyen messzire és milyen vadul folyik a festék, amíg nedves, és hogyan szívja be a papír a vizet.

A Water oldal.
A Water oldal.
Beállítás Alapérték Mit csinál
Dry time 4 s Ennyi idő alatt szárad meg nagyjából egy lavír. Hosszabb = több idő a folyásra.
Brush water 0.7 Az ecsettel felvitt víz mennyisége.
Capillary creep 1 A víz a papíron át beszivárog a szomszédba: a tócsa lassan terjed.
Pigment bleed 0.1 A pigment szétterülése a nedves részeken belül. A száraz szomszéd falként viselkedik.
Colour separation 0.3 A színcsatornák eltérő sebességgel futnak szét (a cián messzebbre megy, mint a narancs), ahogy a pigmentkeverék is szétválik a vízben: színes udvarok. Nagy nyers-papír felületek mellett 0.3-nál szivárványos szegély látszik, 0.1 egy leheletnyit hagy belőle.
Pigment advection / Water advection 1 / 0.6 Mennyire viszi magával a folyó víz a pigmentet, illetve a vizet.
Wet to dry push 0.004 A víz a nedves felől a száraz papír felé áramlik: virágzás, visszafolyás, kávéfolt-perem.
Brush front push 0.003 A nedves front kifelé tolja a vizet.
Vorticity 1 Életben tartja a kis örvényeket.
Turbulence / Turbulence scale 0.05 / 4 A víz lassú, „lélegző” örvénylő mozgása.
Velocity damping 1.5 Milyen gyorsan csillapodik a víz mozgása. Kisebb = élénkebb.
Gravity (0, 0) Lefolyás és csorgás, mint a megdöntött papíron. Negatív y = lefelé.
Mobility starts at / Full mobility at water 0.03 / 0.5 Az a vízmennyiség, ahol a festék elkezd mozogni, illetve ahol szabadon mozog (nedves a nedvesbe). Kisebb „full mobility” = több folyás.
Uneven paper sizing 0.5 A papír egyenetlenül szív: egyenetlen száradás és virágzás.
Fibre feathering 1 px A szétfutás a papír rostjait követi.

Víz állóképen és mozgó felvételen. A drón-preset élénkebb vize (turbulencia 0.15, vorticity 2, gravitáció −0.04, csillapítás 0.8) videón azért működik, mert az újrafestés folyamatosan visszahúzza a képet a felvételhez. Állóképen semmi nem húzza vissza, és tíz másodperc alatt a víz mindent márványos örvényekké kever. Állóképhez a fenti alapértékeket használd.

Állóképen: a forrás; V0 a drón-preset élénk vizével, márványos örvényekké keverve, szivárványos szegéllyel; V1 a nyugodt alapvízzel; a V2, V4 és V5 még a drón-vizet viszi.
Állóképen: a forrás; V0 a drón-preset élénk vizével, márványos örvényekké keverve, szivárványos szegéllyel; V1 a nyugodt alapvízzel; a V2, V4 és V5 még a drón-vizet viszi.

wc_engine: Pigment

Mit csinál a pigment, amikor már a papíron van: milyen gyorsan éri el a színét, hogyan ül le a papírba, ahogy a víz szárad, és hogyan lehet újra kiemelni.

A Pigment oldal.
A Pigment oldal.
Beállítás Alapérték Mit csinál
Deposit rate 20 Milyen gyorsan hozza az ecset a papírt a cél-sűrűségre (másodpercenként). Lassabb = világosabb, kevésbé telített, inkább a víz alakítja.
Settling rate 1.5 Milyen gyorsan ül le a pigment a papírba száradás közben. A leült pigment már nem mozog a vízzel.
Settle in valleys 0.5 A papír völgyeiben gyorsabban ül le a pigment: granuláció.
Lift wet pigment 1 A nedves ecset kiemeli a pigmentet, ahol a papír sötétebb a célnál.
Lift dried pigment 0.3 Újranedvesítéskor a megszáradt pigment is kiemelhető. Mozgó felvételnél 2.
Lift tolerance 0.05 Mennyivel lehet sötétebb a célnál, mielőtt kiemelés kezdődik.
Forget dried pigment 0 s A megszáradt pigment ennyi idő alatt elhalványul (0 = soha). Mozgó felvételnél 5 s, hogy a régi jelenetek ne rakódjanak sárrá.

wc_engine: Look

Hogyan jelenik meg a papíron lévő pigment: mennyire sötét és áttetsző a festék, mennyire látszanak a szélek és a papír textúrája.

A Look oldal.
A Look oldal.
Beállítás Alapérték Mit csinál
Paper colour (0.96, 0.94, 0.89) A papír fehérje. Az ilyen színű pixel a felvételben nyers papír lesz.
Ink strength 1 A pigment összesített sötétsége. 0.75-nél áttetszőbbnek hat.
Edge darkening / Edge radius 0.6 / 2 px A pigment összegyűlése a lavír szélén (lásd fent: Szélsötétedés).
Granulation 0.25 Pigment a papír völgyeiben, a rostoktól pöttyözve.
Paper relief 0.25 A papír dombjai, balról felülről megvilágítva.
Paper tone 0.5 A papír tónusának változatossága.
Wet sheen 0.5 A nyirkos részek kicsit sötétebbnek és hidegebbnek hatnak.
Blend original 0 Visszakeveri az eredeti felvételt.
Linear light be A pigment lineáris fényben keveredik (helyes Beer–Lambert).
View painting Hibakereső nézetek: mozgó pigment, leült pigment, víz, papír, eredeti.
A hibakereső nézetek: festmény, mozgó pigment, leült pigment, víz, papír.
A hibakereső nézetek: festmény, mozgó pigment, leült pigment, víz, papír.
A hibakereső nézetek: festmény, mozgó pigment, leült pigment, víz, papír.
A hibakereső nézetek: festmény, mozgó pigment, leült pigment, víz, papír.
A hibakereső nézetek: festmény, mozgó pigment, leült pigment, víz, papír.
A hibakereső nézetek: festmény, mozgó pigment, leült pigment, víz, papír.
A hibakereső nézetek: festmény, mozgó pigment, leült pigment, víz, papír.
A hibakereső nézetek: festmény, mozgó pigment, leült pigment, víz, papír.
A hibakereső nézetek: festmény, mozgó pigment, leült pigment, víz, papír.
A hibakereső nézetek: festmény, mozgó pigment, leült pigment, víz, papír.

wc_engine: Paper

A Paper oldal.
A Paper oldal.
Beállítás Alapérték Mit csinál
Paper bump scale 110 A hidegen préselt papír dombjainak száma a képmagasságon (procedurális papír).
Fibre scale 420 A rostok sűrűsége.
Use paper input ki A procedurális domborzat helyett a 3. bemeneten lévő szkennelést használja.
Scan contrast 3 A szkennelésből vett domborzat mélysége. Előbb a kép helyi átlaga levonódik, így a fotó egyenetlen megvilágítása nem hat lejtőnek. Egy fotó domborzata sokkal laposabb a procedurálisnál: a tesztszkennelésünknél 2.7 adott vele egyező mélységet.
Scan colour 1 1 = a papír a szkennelés színét és tónusát kapja (foltok, öregedés, barnult sarkok), 0 = Paper colour.
A papír-szkennelés bemenetként, és az eredmény Scan colour 1 és Scan contrast 3 mellett: a teljes kép és egy 1:1-es kivágás.
A papír-szkennelés bemenetként, és az eredmény Scan colour 1 és Scan contrast 3 mellett: a teljes kép és egy 1:1-es kivágás.

wc_engine: Flow (mozgó felvétel)

A Flow oldal.
A Flow oldal.
Beállítás Alapérték Mit csinál
Painting follows footage ki Mozgó kamerához kapcsold be: a festmény az optical flow-val együtt utazik.
Flow scale 72 A TouchDesigner Optical Flow TOP kimenetét pixelre váltja. Kalibrált érték: a nyers flow a valódi mozgás kb. 1/72-e. 1-nél a festmény alig mozdul, és minden sárrá válik.
Flow limit 32 px Az ennél gyorsabb vektorokat kockánként eldobja, nem levágja.
Flow cell 32 px A mozgást ekkora cellákra átlagolja. Nagyobb = lazább, simább folyás.
Zoom 1.0 A flow közepét tartja meg. A festendő bemenetet ugyanennyivel zoomold (a rig zoom-ja ezt csinálja), így a képszélen zajos flow a képen kívülre esik. A rigben 1.1.
Flow is in pixels be Az Optical Flow TOP-hoz maradjon bekapcsolva.
Water dragged by footage 0 A kamera mozgása magát a vizet is sodorja.

Miért kell a flow-t tisztítani? (mérés) A felvételen fázis-korrelációval összevetve az NVIDIA flow átlagosan helyes, de pixelenként tele van kiugró szeméttel: akár 250 px/kocka ott, ahol a valódi mozgás 3–23 px. A levágásuk egész festéktömböket tolt el (lépcsős hibák). A kiugrók eldobása és a cellánkénti átlagolás a pixelenkénti flow-hibát 6.2 px-ről 3.7 px-re csökkentette, és eltüntette a tömböket. A flow elmosása nem segített: a kiugrókat szétkente, ahelyett hogy eldobta volna.

A flow levágása a drónfelvételen, a 300. és a 420. kockán. C: korlát nélkül, lépcsős tömbök a széleken. G: 12 px, a festmény lemarad. H: 20 px. I: 32 px.
A flow levágása a drónfelvételen, a 300. és a 420. kockán. C: korlát nélkül, lépcsős tömbök a széleken. G: 12 px, a festmény lemarad. H: 20 px. I: 32 px.
A tisztított flow (kiugrók eldobva, 32 px-es cellák) a 100., 140., 300. és 420. kockán: nincsenek tömbök.
A tisztított flow (kiugrók eldobva, 32 px-es cellák) a 100., 140., 300. és 420. kockán: nincsenek tömbök.

wc_engine: System

A System oldal.
A System oldal.
Beállítás Alapérték Mit csinál
Reset (hold) ki Tiszta papírt ad. A rigben a me.time.frame <= 2 kifejezés áll rajta, így minden futás üres papírról indul.
Width / Height a bemenetből A festendő bemenetet követik.
Water grid divisor 4 A víz negyed felbontáson fut. 4K-hoz 8.
Pressure iterations 20 A nyomás-számítás lépései. Módosítás után a hálózatot újra kell építeni.
Sim FPS a projekt fps-e Az időlépés. Egyezzen a felvétel képfrissítésével.
Seed 0 Más papír és zaj.
Always cook be Minden kockán lépteti a szimulációt, akkor is, ha senki nem nézi. A TouchDesigner csak azt számolja, amit valami lekér. Enélkül a nem látott motor megáll, aztán ugrik, ami szellemképként látszik.

Ajánlott beállítások

Mindkettő megvan a presets/ mappában, és a Presets oldalon betölthető.

Videó, mozgó kamera (video_export.json) Állókép (still_x3.json)
Progress 24 kocka alatt 150 kocka alatt, száradás kb. a 240.-ig
Painting follows footage be ki
Repaint changes 0.85 0
Forget dried / Lift dried 5 s / 2 0 / 0.3
Víz turbulencia 0.15, vorticity 2, gravitáció y −0.04, ecsetvíz 1, full mobility 0.35, száradás 6 s, bleed 0.25, csillapítás 0.8 az alapértékek
Kinézet colour separation 0.1, ink strength 0.75, max density 2.5, edge darkening 1, granulation 0.25, paper tone 0.3 ugyanez, wash level mix 0.6
Papír-szkennelés scan contrast 1.5, scan colour 1 ugyanez
prep paint coverage 0.45, zoom 1.1 paint coverage 0.45

Hogyan választottuk őket? Videónál azt mértük, mennyire marad felismerhető a kép (a kimenet és a felvétel fényességének korrelációja, 100–700. kocka): egy kézzel hangolt beállítás 0.58, az állókép-kinézet önmagában 0.55, ugyanez 0.45-ös lefedettséggel 0.64. Nyugodtabb vízzel is 0.64 jött ki, ezért maradt a bátrabb folyás. A nagyon sötét jelenetek (árnyékos sziklafal) minden beállítással sötét foltba mosódnak.

Az állóképnél a változatokat szemre vetettük össze a fenti jellemzők alapján: nyers-papír fehérek, áttetsző rétegek, puha és éles szélek, nincs fekete, nincs szivárványos szegély.

A négy videós jelölt a 200., 420. és 700. kockán. P0: kézzel hangolt. P1: az állókép-kinézet. P2: ugyanez 0.45-ös lefedettséggel (ez lett). P3: P2 nyugodtabb vízzel.
A négy videós jelölt a 200., 420. és 700. kockán. P0: kézzel hangolt. P1: az állókép-kinézet. P2: ugyanez 0.45-ös lefedettséggel (ez lett). P3: P2 nyugodtabb vízzel.
Állókép-változatok a vízeséses képen. W5: lefedettség 0.45. X1: max density 2.5, scan contrast 1.5. X2: laposabb lavírok. X3: kevesebb granuláció és papírtónus (ez lett).
Állókép-változatok a vízeséses képen. W5: lefedettség 0.45. X1: max density 2.5, scan contrast 1.5. X2: laposabb lavírok. X3: kevesebb granuláció és papírtónus (ez lett).

Videó renderelése

  1. Realtime ki: a felső sávban vedd ki a pipát a Realtime elől. Realtime módban a TouchDesigner kockákat ugrik, ha lemarad, és a szimuláció rossz időlépéssel számol.
  2. video → Play Mode: Locked to Timeline. A timeline 1-től a klip hosszáig fut, a projekt fps-e egyezik a felvételével.
  3. A Reset automatikus a timeline 1–2. kockáján.
  4. Ismételhető render: a shaderek az időt a timeline-ból veszik, és az automatikus küszöb nem visz át simítást az előző futásból. Két render 60. kockája 2 millió pixelből 55-ben tért el (0.003%, szétszórva): a GPU és az optical flow apró zaja, szemmel nem látható.
  5. export (Movie File Out, az OUT után): ProRes 4444 XQ, egyedi fájlnév-utótaggal. A hossza a timeline hosszára van korlátozva, így a felvétel magától leáll. (A korlát nélkül a timeline visszaugrik az 1. kockára, és a felvétel megy tovább.) Képsorozathoz EXR vagy 16 bites TIFF.
  6. A timeline-t állítsd egyszeri lejátszásra (play once) a loop helyett, hogy az utolsó kockán megálljon.
  7. Timeline az 1. kockára, Record be, Play.
Az export node: ProRes 4444 XQ, YUV 4:4:4 10 bit, egyedi utótag, Limit Length 924 kocka.
Az export node: ProRes 4444 XQ, YUV 4:4:4 10 bit, egyedi utótag, Limit Length 924 kocka.

Realtime-ban hangolni nyugodtan lehet: a video maradjon Locked to Timeline-on, és a timeline loopoljon, így az automatikus Reset mindig a klip elejére esik. Sequential módban a klip a timeline-tól függetlenül halad, és a Reset a felvétel közepén indítaná újra a festést.

Állókép mentése

  1. A still_test-ben töltsd be a képet a still Movie File In-be. A motor a kép saját felbontásán fut.
  2. Töltsd be a presets/still_x3.json-t (nincs flow, nincs újrafestés, nyugodt víz).
  3. Timeline az 1. kockára, Play. A Progress 150 kocka alatt három lazúrt visz fel, kb. a 240. kockára megszárad a festék.
  4. Jobb klikk az OUT-on → Save Image (16 bites TIFF vagy EXR), vagy egy Movie File Out Type: Image beállítással és Add Frame-mel.

A still_test motorján az Always cook ki van kapcsolva: csak akkor dolgozik, ha nézed, így nem lassítja a videós riget. Ha nincs a képernyőn a nézete, kapcsold be.

A still_test és a Presets oldala: still_x3.json betöltése, lejátszás, majd az OUT mentése.
A still_test és a Presets oldala: still_x3.json betöltése, lejátszás, majd az OUT mentése.
Egy állókép, megfestve és megszáradva.
Egy állókép, megfestve és megszáradva.

Hibakeresés

Források

J. Stam, Stable Fluids (1999) · Curtis és mtsai., Computer-Generated Watercolor (SIGGRAPH 1997) · J. Whitaker, inkwash.