Nerealistické renderování: kresby
Co je to NPR? NPR = všechno, co není fotorealistické renderování Painterly rendering, cartoons, ilustrace, netradi ní perspektivy, vizualizace dat, ... Motivace: v ur itých situacích není fotorealizmus žádoucí (p .: ilustrace v manuálu) Zpracování 2D obrazu i renderování 3D scén
Obsah Budeme se v novat renderování obrysových kreseb Extrakce obrys z 2D obrazu se Z bufferem a z 3D reprezentace scény
Kreslení ar Vybarvování (cartoons), šrafování a stínování Realtime varianty
Extrakce obrys z 2D obrazu Vstupem je vyrenderovaný obrázek resp. jeho Z buffer Kvalita omezena rozlišením vstupního obrazu, pro mnohé aplikace to ale nevadí Lze použít existujících nástroj pro zpracování obrazu (detektory hran) => snadná implementace
Hranový detektor Nejjednodušší metoda: použít hranový detektor p ímo na obraz a zobrazit výstup detektoru Nepot ebuje Z buffer, lze aplikovat na nerenderovaná data Nevýhody: HD zmatou textury Stejnobarevné objekty, které v použité projekci sousedí
Hranový detektor v Z bufferu ešení: detekce hran se provede v Z bufferu Pozorování: rozdíl hloubek sousedních pixel je obvykle malý v rámci objektu, ale velký mezi 2 r znými objekty Problémy: nedetekuje hrany sousedících objekt ve stejné hloubce Nedetekuje ohyby (nespojitosti první derivace)
Normálová mapa Normálová mapa: RGB hodnoty ur ují po ad x,y,z složku normálového vektoru v daném pixelu Detekce hran v n.m. najde ohyby povrchu
Jak generovat n.m.? P ímo jako výstup raytraceru Trikem: vyrenderování vhodn nasvícené scény
Vytvo ení normálové mapy Bílý matný materiál objektu 6 sm rových sv tel rovnob žných se sou adnými osami Body objektu osv tleny úm rn k n.vlight Zápornou intenzitu lze nahradit 2 pr chody
Detekce hran konvolucí Na tento typ obrázk sta í jednoduchý H.D., nap . konvoluce Sobelovým filtrem + prahový operátor: k
I x,y h x,y
i
Sx
k
k j
I i, j h x i,y j k
1 0 1 2 0 2 ,Sy
1 0 1
1 2 0 0 1 2
1 0 1
I x x, y I x, y Sx ,I y x, y I x, y Sy I x,y
I
2 x
x,y I
2 y
x,y
Výsledky detekce hran ve 2D
(a) z buffer (b) hrany v z bufferu (c) norm. mapa (d) hrany v n.m. (e) kombinace b a d
Výsledky detekce hran ve 2D
(a) z buffer (b) hrany v z bufferu (c) norm. mapa (d) hrany v n.m. (e) kombinace b a d
Problémy 2D extrakce hran Nelze zm nit styl kresby, záleží na detektoru (konverze do hranové reprezentace je možná, ale obtížná) Nutné pro každý obrázek vyladit parametry h.d. Nemá k dispozici informace o scén !! D sledek: nelze šrafovat ani vybarvovat Patologické p ípady:
Extrakce obrys z 3D modelu Složit jší než 2D p ístup, vyžaduje modifikovaný renderer, ale dává p esné výsledky Def.: Množina M={xi; ni. (xi C) = 0}, kde C je st ed perspektivní projekce a ni je normálový vektor v bod xi, se nazývá obrys. Pozn.: definice nezávisí na viditelnosti!
Extrakce obrys z 3D modelu Pozn.: pro ortogonální projekci se použije test ni v=0, kde v je sm r pohledu V p ípad polygonových model (mesh) je obrys množina hran spojujících p ivrácený a odvrácený polygon
Algoritmus nalezení obrysu polygonového modelu
Obrys hladkých ploch Naivní p ístup: aplikovat p edchozí algoritmus na aproximaci plochy trojúhelníkovou sítí Nedává dobré výsledky (viz koule) Problém: obrys m že probíhat uvnit polygonu ve zvolené aproximaci Ukážeme algoritmus, který nalezne „dobrý“ obrys
P edpoklady Plocha je spojitá Umíme trojúhelníkovou aproximaci plochy Možnost libovoln zjemnit aproximaci (není nezbytn nutné) NURBS, subdivision surfaces, ...
Algoritmus pro hladké plochy 1) Vytvo íme trojúhelníkovou aproximaci plochy 2) Pro každý její vertex spo teme di
ni xi C ni xi C
s i 1, d i 0 s i 1, jinak
Platí: E=<xi,xj> hrana & si sj =>
E bod obrysu
Algoritmus pro hladké plochy 3) Pro každou hranu jejíž vertexy mají r zné hodnoty si lineárn interpolujeme polohu obrysového bodu: x
dj di
dj
xi
di di
dj
xj
5) Pokud má trojúhelník 2 obrysové body, p idáme jimi ur enou úse ku do obrysu (pozn.: možné jsou pouze p ípady 2 nebo žádný obrys. bod)
Obrys v aproxima ní síti
Hladké plochy – poznámky ím jemn jší aproximace, tím lepší výsledek P i p íliš hrubé síti m že algoritmus ást obrysu úpln vynechat! ešení: adaptivní zjem ování
Viditelnost obrysu Úseky obrysu mohou být viditelné, neviditelné nebo jen áste n viditelné Je pot eba spo ítat jejich pr se íky a rozd lit je na elementární úseky, které jsou celé (ne)viditelné V O(k2) nebo O(k.log(k)) (sweep line algorithm) Pozor na singularity (vertexy na okrajích nebo ležící sou asn na p ivrácené a odvrácené hran ) Viditelnost se po ítá pro každý úsek zvláš vrháním paprsku nebo pomocí Appelova algoritmu
Realtime hledání obrysu Pozorování: V tšina hran není obrysová, testují se zbyte n Pro RT aplikace existuje pravd podobností algoritmus: je rychlý (~5x rychlejší) negarantuje nalezení celého obrysu
Pokud nalezneme jednu obrysovou hranu, lze „stopováním“ triviáln získat celý p íslušný obrys
Realtime hledání obrysu Pokud má typický obrys 100 hran, pravd podobn ho detekujeme už p i otestování 1 % všech hran Zlepšení: set ídíme hrany podle úhlu svíraného p íslušnými polygony a p i adíme jim pravd podobnosti rostoucí s klesajícím (Pravd podobnost, že hrana je obrysová, je úm rná )
Realtime hledání obrysu asová koherence: obrys se mezi následujícími snímky skoro nem ní Vždy se na p íslušnost k obrysu testují všechny obrysové hrany z p edchozího snímku Navíc se z n kolika málo bod minulého obrysu prohledávají hrany v (omezeném) okolí: Sm rem ke kame! e, pokud výchozí bod ležel na odvráceném povrchu, a od kamery, pokud na p! ivráceném
Realtime hledání obrysu K výpo tu viditelnosti hran lze použít: optimalizovaný Appel v algoritmus, který snižuje po " et vrhaných paprsk
$
$
$
Z # buffer Nemusí se po % ítat pr& se % íky, viditelnost ' eší HW Vyžaduje kreslení % ar pomocí texturovaných polygon& (viz dále) Neumí kreslit neviditelné % ásti obrysu
Kreslení ar – linestyles Kreslené k ivky jsou parametrizovány negeometrickými atributy, které mají vliv na vzhled kreslené áry Tlak – mapuje se na tlouštku Jas – projeví se na stupni šedi ( áry
Nemusí být (a nebývá) konstatní na celé á e Závisí na informacích ze 3D reprezentace
P íklady styl Lineární zm na tlaku na tužku b hem tahu Slabší áry ve v tší vzdálenosti od kamery Neviditelné ásti obrysu kreslené te kovan Osv tlení: nasvícené hrany tence, odvrácené tlustou árou (efekt stínu) Randomizace parametr i geometrie
P íklad – lineární zm na tlaku
Nalevo: konstatní tlak Vpravo: tlak b ) hem tahu lineárn ) klesá
P íklad – osv tlení
Simulace osv ) tlení zleva shora pomocí tlaku
P íklad – skryté hrany
Kreslení pomocí textur Podél úseku obrysu (lomené áry) se vytvo í 2D mesh: V každém vrcholu lomené * áry se vzty * í kolmá p+ í * ka Tlouš, ka (pop+ . zvolená textura) závisí na osv - tlení Textura se namapuje tak, aby se (cca) zachoval její stranový pom - r
S využitím HW je to realtime technika
Textury – p íklad
Stylizované hrany Cíl: odstranit p íliš rovné hrany, nahradit je „p irozenými“ k ivkami Textura se vybírá z t chto t í: Kritériem je úhel mezi hranou a jejím následníkem: E1•E2 .
cos(d) => použij levoto ivou texturu
E1•E2 ( . cos(d), cos(d)) => použij rovnou texturu E1•E2
cos(d) => použij pravoto ivou texturu
Stylizované hrany Dalších efekt lze dosáhnout randomizací tah Realtime technika (textury se vyberou p edem) Problémy: M / ní se geometrie k0 ivek => p0 i použití s vybarvováním nebo šrafováním vznikají artefakty U tlustých 1 ar a hodn / zak0 ivených hran m že polygon tvo0 ící 1 áru prolínat sám sebe
Stylizované hrany – p íklad
Stylizované hrany – p íklady
Vybarvování a šrafování Cílem vizualizovat viditelné povrchy – barvou nebo nazna ením jejich tvaru Pot ebuje informace o 3D scén P edchází p ed renderováním obrys Mnoho r zných p ístup
Cartoons – vlastnosti
Potla ené stínování, používá se jenom málo barev Jednolité barevné plochy Ostré p echody
Cartoons – sv telný model Algoritmus vychází ze zjednodušeného sv telného modelu: C 3 a g a m 4 a l a m 4 d l d m max L 5 n , 0 (ag koeficient globálního ambientního sv 2 tla, al a dl ambientní a difuzní koeficient sv 2 tla, am a dm ditto pro materiál, L normovaný vektor od sv 2 tla k vertexu)
Cartoons – stínování Sou in L 6 n se interpetuje jako index do 1D textury (gradientu) – typický rozm r je 2x1 pixelu
Vhodnou volbou gradientu lze dosáhnout r zných vizuálních styl Kombinuje se s následným vyrenderováním obrysu
Realtime cartoons Gradienty lze p ímo použít jako textury a renderovat pomocí 3D akcelerátoru Problémy, pokud je mesh p íliš hrubý: P7 i blízkém pohledu jsou vid 8 t „zuby“ na p7 echodech sv 8 tlo/stín Lze odstranit lineární interpolací, ale p7 ijdeme o ostrost obrazu Pokud je sít dostate 9 n8 jemná, tak je interpolace naopak vhodná
P íklad – shadow & highlight
Textura 16x1, 8 texel: barva stínu, 6 nebo 7 texel: difuzní barva osv ; tleného materiálu, 2 nebo 1 texel highlight (difuzní barva vynásobená highlight faktorem)
P íklad – dark comics
T < lo – textura 8x1, 7 texel=
e> rných, 1 bílý
O > i a náramky – shadow & highlight
P íklad – komplexní scéna
Realtime skicování Rozší íme cartoons renderer tak, aby produkoval výstup p sobící dojmem kresby tužkou Pro každý vertex se op t spo ítá L ? n. Bude sloužit jako index do tabulky 2D textur – na mén osv tlené oblasti se použije hustší textura
Realtime skicování Textury v tabulce se vygenerují tak, že se opakovan náhodn vybírá tah z textury tah a nanese se v náhodných intervalech Pomocí multitexturingu se nejprve nanese textura papíru
Realtime skicování Ob textury jsou namapované rovnob žn s obrazovkou:
D sledek: nelze použít pro animaci (artefakty; model „plave“ nap í texturou) Neumí znázornit zak ivení povrchu Ale je to rychlé...
P íklad skicy
P íklad skicy
Te kování Jednoduchý p ístup k šrafování: použije se pouze te kování Implementace: model se vyrenderuje v odstínech šedi (bílý matný materiál) a b hem postprocessingu se kvantuje do B/W (random dithering)
Realtime šrafování P edpoklad: sv tlo je umíst né na kame e Viditelné povrchy se rovnom rn pokryjí ásticemi (nap . do každého st edu trojúhelníku jedna) Po perspektivní transformaci jsou díky p edpokladu ástice husté práv v málo osvícených oblastech
Realtime šrafování Do každé ástice (mimo t ch na sv tlých místech povrchu) se umístí šrafovací ára konst. velikosti (sv tové sou .) ve sm ru (xi @ C) ni Pokud je ára v obrazových sou . p íliš velká, nahradí se lomenou arou, jejíž každý úsek se zorientuje stejným zp sobem (nap . podle svého st edu) áry se vyrenderují libovolnou technikou
P íklad RT šrafování
Šrafování raytracingem P ístup využívající prostorové textury a postprocessing Základem je klasický raytracer Renderovaný objekt je proložen rovnob žnými rovinami – pláty:
Šrafování raytracingem
Nech t=
je pr se ík paprsku s objektem. Spo ítáme normovanou vzdálenost od plát bi a použijeme ji jako barvu: f bi A
i
A
e i ,1 t x B e i , 2 t y B e i , 3 t z B e i , 4 C f i mod a i a i , fi 0 C a i D f i mod a i a i , f i E 0
Šrafování raytracingem Postprocessing: prahový operátor Lze kombinovat n kolik plátových blok dohromady – wibi nebo max{bi} Vhodné ud lat vážený sou et s jasem povrchu => na sv tlých plochách bude mén šrafování Metoda se hodí jenom pro jednoduché objekty
P íklad
a) bez pF idání jasové složky; b) s pF idáním jasu 1) šrafování 2) dva sm G ry šrafování, je vid G t trojúhelníkový vzor 3) dva sm G ry šrafování s použitím max
Zdroje Aaron Hertzmann's papers ( http://www.mrl.nyu.edu/hertzmann) http://www.red3d.com/cwr/npr/ ResearchIndex: The NECI Scientific Literature Digital Library (http://citeseer.nj.nec.com/) SIGGRAPH papers