curs 8

15
Grafică avansată Metode de mapare și texturare Curs 8

Upload: amelia-giura

Post on 16-Sep-2015

9 views

Category:

Documents


3 download

DESCRIPTION

Grafica avansata romica cojoc

TRANSCRIPT

  • Grafic avansat Metode de mapare i texturare

    Curs 8

  • 1

    6. Metode de mapare i texturare

    6.1. Motivaia aplicrii unor texturi

    Metodele prezentate pn acum se refereau la afiarea unor suprafee netede, de obicei

    reprezentate ca poligoane sau curbe spline. Pentru evidenierea caracteristicilor unei suprafee

    prima aciune este definirea unor modele de iluminare a obiectului. Dar modelul de iluminare

    Phong, sau cele de umbrire Gouraud sau Phong utilizeaz un singur model de culoare pentru

    iluminarea unei suprafee mai ntinse, ceea ce duce la obiecte mai puin atractive i cu posibiliti

    limitate de reproducere a obiectelor reale. Astfel obiectele reprezentate doar folosind aceste

    modele apar ca fcute din plastic. Pentru a putea modela cu mai mare acuratee obiectele grafice

    (detalii, caracteristici asupra cum se simte o suprafa, modul n care se percepe o suprafa) se

    aplic acestora o textur. O textur reprezint o imagine cu componentele RGBA (rou, verde,

    albastru i componenta alpha pentru transparen (vezi Figura 5.1.).

    Figura 6.1. Exemple de texturi

    Maparea texturilor const n aplicarea unei imagini sau a unui tipar pe o suprafa n scopul

    obinerii unui obiect complex fr a utiliza nite modele geometrice extrem de complicate i greu

    de implementat (vezi Figura 5.2.). Un exemplu foarte detaliat despre cum se poate aplica o textur

    unui obiect este prezentat n [2].

    Figura 6.2. Exemple de mapri a unor texturi

    Principalele motive ce duc la necesitatea aplicrii texturilor sunt:

  • 2

    - Creterea realismului imaginii (vezi Figura 5.3.);

    - Aplicarea unor detalii pe o suprafa.

    Figura 6.3. Creterea realismului unei imagini prin aplicarea texturilor

    O hart de texturi poate aplica o imagine real unei suprafee precum aplicarea unei etichete

    pe o cutie sau poate atribui unei suprafee tipare repetitive pentru a simula materialul din lemn sau

    piatr. Mai general, o hart de texturi poate reine orice informaii referitoare la caracteristicile de

    afiare ale unei suprafee.

    Hrile de texturi pot fi aplicate n trei etape diferite ale procesului de modelare grafic a

    unui obiect:

    - O hart de texturare poate conine culorile ce se aplic unei suprafee prin suprascrierea

    culorilor existente pe acea suprafa. n acest caz nu se recomand efectuarea unor calcule

    de iluminare anterior acestei operaii;

    - O hart de texturare poate stoca atribute ale obiectului precum culoare, luminozitate sau

    transparen care afecteaz modul de redare al acelei suprafee dup ce au fost efectuate

    calculele modelului de iluminare. In acest caz atributele texturii sunt modulate mpreun

    cu rezultatul modelului de iluminare al acelei suprafee;

    - O hart de texturare poate conine atribute referitoare la coeficienii de reflectivitate, sau

    ali parametri ai modelului de iluminare Phong sau Cook-Torrance. n acest caz, o hart de

    texturare modific proprietile suprafeei pe care se aplica modelul de iluminare. Un

    exemplu de astfel de hart se folosete n maparea denivelrilor (metoda de mapare bump)

    care afecteaz normalele suprafeei prin specificarea unor denivelri virtuale asupra

    suprafeei.

    Mai multe hri de texturi pot fi combinate prin aplicarea lor succesiv asupra unei

    suprafee.

    O hart de texturi const de obicei ntr-un vector de date bidimensional avnd coordonatele

    s i t ce variaz de la 0 la 1. Valorile acestor date reprezint de obicei culori, dar pot fi orice alt

    informaie relevant. Datele dintr-o hart de texturi pot fi generate dintr-o imagine precum o

  • 3

    fotografie, un desen sau rezultatul unui program de prelucrare grafic. Datele pot fi, de asemenea,

    generate de o procedur. De exemplu, un ablon simplu precum o tabl de ah poate fi calculat

    anterior randrii i poate fi stocat ntr-un vector bidimensional. O textur poate fi construit i n

    timpul randrii. Un exemplu este generarea unei hri a mediului prin prerandarea unei scene din

    mai multe puncte de observaie i utilizarea rezultatelor pentru a crea o textur ce va fi folosit n

    ultimul stadiu al randrii.

    Principalele tehnici de mapare sunt:

    - Maparea parametric a unei texturi

    - Maparea mediului

    - Maparea denivelrilor (maparea bump)

    - Maparea iluminrii

    6.2. Maparea parametric a unei texturi

    n momentul n care vrem s aplicm o textur unui obiect ne intereseaz ce punct al texturii

    folosim pentru un anumit punct de pe suprafa. Dup parametrizarea punctelor texturii n cele

    dou coordonate (s,t) se mapeaz punctele din staiul obiect (x, y, z) n spaiul texturii (s, t) pentru

    a determina culoarea hrii de texturare n acel punct. n cazul poligoanelor se vor specifica

    coordonatele (s,t) n vrfurile acestora, urmnd ca pe baza lor s se obin prin interpolare culoarea

    punctelor din interior.

    Figura 6.4. Maparea punctelor din spaiul obiect n spaiul texturii

    Principala problem n realizarea acestei operaii o constituie realizarea corespondenei

    ntre o poziie de pe textur (s, t) i poziia de pe suprafa (x, y, z). ntruct este dificil de gsit o

    formul general, datorit diferenelor ce exist n reprezentarea diferitelor suprafee, se dorete

    identificarea unui set de coordonate parametrice (u, v) bidimensionale care s poat reprezenta

    suprafaa 3D (vezi Figura 6.4). Astfel, vrem s identificm:

    s = f(x, y, z)

    t = g(x, y, z)

    (6.1)

    Acest proces implic mai multe transformri ntre sistemele de coordonate implicate: din

    spaiul 2D al texturii, n planul 3D al coordonatelor obiectului prin intermediul parametrizrii (u,v)

  • 4

    pentru ca apoi s se fac proiecia n planul de vizualizare (coordonate ecran), dup cum a fost

    ilustrat n Figura 6.5.

    Figura 6.5. Conversia ntre sistemele de coordonate

    Maparea unei texturi pe baza coordonatelor parametrice se poate face manual, prin

    atribuirea coordonatelor texturii pentru fiecare vertex, sau automat, prin calculul acestora pe baza

    unui algoritm. Un exemplu al efectului asupra unui poligon a dou valori de coordonate

    parametrice (u, v) a fost ilustrat n Figura 6.6. n Figura a) observm c se aplic vrfurilor

    poligonului coordonatele (0,1) ale ntregii texturi, astfel c poligonul texturat va conine ntreaga

    textur, scalat la dimensiunile acestuia. n figura b), poligonului i se va aplica doar o parte a

    texturii, regsit n dreptunghiul dat de coordonatele pe diagonal (0,0) i (1,0.5).

    Figura 6.6. Aplicarea maprii parametrice a unei texturi pe un poligon

    Pentru determinarea crui punct de pe textur i corespunde un punct de pe suprafa n

    cazul unui poligon cu patru laturi precum cel prezentat anterior se poate folosi interpolarea biliniar

    (Figura 6.6). Aceasta presupune efectuarea unei interpolri liniare nti de-a lungul unei direcii a

  • 5

    planului, dup care valoarea ntr-un punct interior este dat de interpolarea liniar a formulelor

    obinute de-a lungul celeilalte direcii. Astfel, dac vom face nti interpolarea liniar de-a lungul

    axei x vom avea:

    (6.2)

    De unde valorea texturii n punctul (x,y) va fi dat de:

    (6.3)

    Figura 6.7. Interpolaera biliniar

    Dac poligonul este un triunghi, se pot folosi coordonate baricentrice pentru a interpola

    liniar valorile coordonatelor s i t i a determina crui punct din textur i corespunde un punct din

    obiectul triunghiular. Interpolarea baricentric a fost ilustrat n Figura 6.7 i presupune urmtorii

    pai:

    - construirea unor linii de baleiaj care taie triunghiul paralel cu latura de jos

    - calcularea interpolarii liniare pe laturile din stnga SL, respectiv din dreapta SR ale

    triunghiului (la intersecia liniei de baleiaj curente cu laturile triunghiului)

    - calcularea unui punct interior ca interpolare liniar ntre SL i SR

  • 6

    Figura 6.8. Interpolaera baricentric

    Att pentru interpolarea liniar ct i pentru cea biliniar este recomandat includerea unei

    corecii, interpolarea hiperbolic, care compenseaz modificarea distanei care influeneaz

    modificarea coordonatelor texturii. Cnd este folosit o proiecie din perspectiv, interpolarea

    hiperbolic compenseaz diferena dintre interpolarea coordonatelor n plan i interpolarea

    coordonatelor modelului 3D. Acest lucru este prezentat n Figura 6.9.

    Figura 6.9. Interpolaera hiperbolic

    6.3. Determinarea coordonatelor texturii pe o suprafa

    6.3.1. Maparea unui cub

    Considerm problema maprii texturii pe o form ale crei suprafee sunt suprafee plane

    de exemplu un cub. Datorit faptului c suprafeele sunt plane iar textura este i ea plan,

    procesul de mapare al texturii nu implic distorsiuni ale texturii. Pentru o situaie simpl cum este

    cazul unui cub, se pot alege coordonatele texturii manual prin desfacerea acestuia i aplicarea

    texturii pe fiecare fa. Desigur, un vertex de pe un cub aparine la trei suprafee de pe acel cub,

    motiv pentru care este necesar aplicarea independent a texturii i folosirea unor coordonate

    diferite pe fiecare fa. Coordonatele (s,t) se vor obine prin proiecia ortografic a cubului.

  • 7

    Figura 6.10. Maparea texturii pe un cub

    6.3.2. Maparea unui cilindru

    Pentru a putea aplica texturi la suprafee altfel dect plane, este convenabil dac suprafeele

    pot fi definite parametric de o funcie p(u,v) unde (u,v) aparine lui R2. n majoritatea cazurilor, se

    aleg coordonatele texturii ca funcii de u i v dar aplicaiile mai complicate pot permite

    coordonatelor texturii s depind de p(u,v), normala la suprafa sau ambele.

    Pentru primul exemplu de suprafa definit parametric, vom defini coordonatele de textur

    pe un cilindru. Presupunem c cilindrul are nlimea h i raza r i ncercm s acoperim partea

    lateral cu o textur care se nfoar pe cilindru asemena unei etichete pe o conserv (vezi Figura

    6.11). Suprafaa lateral a cilindrului poate fi definit parametric astfel:

    (, ) = sin , , cos

    (6.4)

    Care plaseaz cilindrul cu centrul n origine i cu axa y ca ax central a cilindrului. Y ia valori de

    la h/2 la h/2. Una din cele mai naturale alegeri pentru alocarea coordonatelor texturii este:

    =

    2, =

    + /2

    (6.5)

    Aceast definire permite variaia liniar de la 0 la 1 pentru s n concordan cu variaia lui de la

    0 la 2 i permite ca t s varieze de la 0 la 1 odat cu variaia lui y de la h/2 la h/2. Efectul obinut

    este c textura este ca i lipit de suprafaa lateral a cilindrului, fr nici o distorsiune, n afar de

    scalarea efectuat pentru a acoperi ntreg cilindrul.

    Figura 6.11. Maparea texturii pe un cub

  • 8

    6.3.3. Maparea unei sfere

    Spre deosebire de cazul unui cilindru, o sfer este o curb intrinsec, ceea ce nseamn c

    nu exist nici o modalitate de a o acoperi cu o coal de hrtie plan, fr a ntinde acea coal, a o

    ndoi sau rupe, sau altfel spus fr a o distorsiona. Aceasta este de asemnea o problem ntmpinat

    de cartografi, deoarece nu exist o metod precis i fr distorsiuni de a reprezenta suprafaa

    pmntului pe o hart plan. Sfera poate fi parametrizat n mod natural cu ajutorul variabilelor

    i folosind funcia parametric:

    (, ) = sin cos , sin , cos cos (6.6)

    Aici reprezint unghiul de poziie (adic rotaia n jurul axei y), iar reprezint unghiul

    azimut. Cum valoarea lui variaz ntre 0 i 2, iar valoarea lui variaz ntre i , punctele

    p(, ) acoper toat sfera.

    O variant pentru alegerea coordonatelor hrii de textur este:

    =

    2, =

    +1

    2

    (6.7)

    O alt variant este utilizarea valorii lui y pentru coordonata t:

    =

    2, =

    sin

    2+1

    2

    (6.8)

    Aceast atribuire face maparea ortogonal a sferei n exterior, ctre suprafaa unui cilindru,

    i apoi desfoar cilindrul ctre un dreptunghi neted. Un avantaj al celei de-a doua hri este c

    pstreaz suprafaa.

    Figura 6.12 arat un tipar de tabl n carouri aplicat unei sfere cu cele dou funcii de

    atribuire textur coordonate. Ambele metode de atribuire a coordonatelor de textur au aceeai

    problem, aceea c se adun la polii sferei. Avnd n vedere c sfera este intrinsec curbat, este

    inevitabil acest tip de comportament.

    Figura 6.12. Maparea texturii pe o sfer. Sfera din stnga folosete ecuaia (6.7) pentru stabilirea coordonatelor texturii, iar cea din dreapta folosete ecuaia (6.8)

  • 9

    6.3.4. Maparea unui obiect oarecare

    Pentru maparea unei texturi pe un obiect oarecare se face nti maparea pe un obiect

    intermediar de baz (cub, cilindru, sfer) urmnd ca apoi s aib loc maparea pe acel obiect (vezi

    Figura 6.13).

    Figura 6.13. Maparea texturii pe o un obiect oarecare. n stnga se pornete de la maparea texturii pe un cilindru. n dreapta se pornete de la maparea texturii pe o sfer

    Pentru determinarea coordonatelor texturii corespunzatoare unui punct de pe obiect se

    parcurg urmtorii pai (ilustrai n Figura 6.14):

    a) Se intersecteaz normalele de la suprafaa intermediar la suprafaa obiectului dorit.

    b) Se intersecteaz normalele de la obiectul dorit la suprafaa intermediar.

    c) Se intersecteaz vectorii din centrul obiectului dorit lasuprafaa intermediar.

    Figura 6.14. Paii maprii texturii pe o un obiect oarecare

    6.4. Diferene de rezoluie la maparea texturilor

    Datorit faptului c un pixel de pe ecran nu poate fi mapat cu acuratee ctre un textel pot

    aprea diferene ntre textur i modul n care este ea mapat pe o suprafa (fenomen numit

    antialiasing). Aceste probleme pot aprea de fiecare dat cnd nu este o coresponden de unu la

    unu ntre pixelii ecranului i pixelii texturii. S considerm coordonatele texturii fiind interpolate

    n vertecii unui poligon pentru a oferi o coordonat de textur pentru fiecare pixel n parte n

    interiorul poligonului. Presupunem apoi coordonatele texturii pentru un pixel al ecranului ca fiind

  • 10

    aproximate la poziia din textur a celui mai apropiat pixel i culoarea acelui pixel al texturii ca

    fiind afiat pe ecran n locaia dat a pixelului. Apar astfel dou cazuri.

    Dac rezoluia texturii este mai mic dect rezoluia ecranului apare fenomenul de

    magnification (vezi Figura 6.15). n acest caz un pixel al texturii va corespunde unui bloc de pixeli

    de pe ecran. Acest lucru face ca fiecare pixel al texturii s par o regiune a ecranului (mai mult sau

    mai puin dreptunghiular).

    Figura 6.15. Diferene de rezoluie la maparea texturilor

    Dac rezoluia ecranului este asemntoare sau mai mic dect rezoluia texturii apare

    fenomenul de minification (vezi Figura 6.15). la prima vedere se poate crede c aceasta este o

    situaie favorabil, pentru c reprezint faptul c textura are suficient rezoluie pentru a fi trasat

    pe ecran. Totui, acest caz poate duce la efecte vizuale nedorite ntruct fiecrui pixel al ecranului

    i este atribuit o culoare de la un singur pixel al texturii. Aceasta nseamn c doar o fraciune a

    pixelilor texturii sunt alei pentru a fi afiai pe ecran.

    Pentru a repara (parial) aceste probleme exist cteva metode, dintre care cele mai utilizate

    sunt interpolarea pixelilor texturii (filtrarea biliniar) i mipmapping.

    Interpolarea pixelilor texturii este o metod relativ simpl pentru a netezi problemele ce

    apar atunci cnd rezoluia ecranului este mai mic dect cea a texturii. Aceast metod presupune

    interpolarea biliniar a culorilor de la civa (de obicei 4) texteli i de a folosi culoarea medie

    rezultat pentru pixelul ecranului.

    Figura 6.16. Interpolarea pixelilor texturii (n stnga fr interpolare, n dreapta cu interpolare)

  • 11

    Pentru cazul n care rezoluia ecranului este semnificativ mai mic (de mai mult de 2 ori)

    dect rezoluia texturii se pot folosi mai mult dect patru pixeli ai texturii pentru a forma o culoare

    medie ce va fi afiat pe ecran. Aceast metod poate fi aplicat i atunci cnd rezoluia ecranului

    este mai mare dect rezoluia texturii prin efectuarea nti a unei mapri 1 la 1 a pixelilor texturii

    pe ecran, urmnd ca pixelii rmai s fie determinai prin interpolare.

    Mipmapping-ul ncearc s evite problemele care apar cnd se afieaz o textur care are

    rezoluie mai mare dect cea a ecranului precalculnd o famlie de texturi cu rezoluie mai sczut

    i afind ntotdeauna o textur a crei rezoluii se potrivete cel mai bine cu rezoluia ecranului.

    Figura 6.17. Mipmapping

    Metoda obinuit este de a porni cu o textur cu rezoluie mai mare, de dimensiune NxM

    (preferabil puteri ale lui 2). Apoi formm o textur, cu rezoluia redus, de mrimea (N/2, M/2),

    atribuind pixel-ului din rndul i, coloana j media celor patru pixeli din rndurile 2i i 2i+1, i din

    coloanele 2j i 2j+1 ale texturii orginale. Apoi aplicm acest proces recursiv de cte ori este nevoie

    pentru a obine texturi pn la o rezoluie joas arbitrar.

    Totui, aceast metod d natere unor probleme atunci cnd distana de la privitor la

    suprafaa mapat a texturii este n schimbare, pentru c pot fi observate diferene la nlnuirea

    diferitelor nivele de detaliu. Acest lucru poate fi n mare msur evitat randnd pixelii folosind

    dou versiuni mipmap ct mai apropiate de rezoluia ecranului i interpolnd liniar rezultatele celor

    dou texturi.

    Un alt dezavantaj este c nu poate rezolva n totalitate problemele date de diferenele de

    rezoluie atunci cnd suprafeele sunt privite oblic. n acest caz, raportul dintre rezoluia texturii i

    rezoluia ecranului poate fi destul de diferit de-a lungul unor direcii diferite de vizualizare ale

    texturii i astfel o versiune mipmap nu poate corespunde n totalitate.

    6.5. Maparea mediului

    Texturarea (maparea) mediului se refer la reprezentarea reflexiilor de pe o suprafa

    lucioas folosind texturi. Aceast metod poate oferi efecte mulumitoare pentru obiectele cu un

    luciu relativ compact i presupune un efort mai sczut dect metoda Ray Tracing, de exemplu,

    utilizat pentru astfel de operaii.

  • 12

    Ideea general a texturrii mediului este urmtoarea: presupunem c avem un obiect cu

    grad de reflectivitate relativ mic. De exemplu, o oglind mic plat, sau una sferic (precum

    oglinzile laterale ale unei maini), un obiect compact cu o suprafa ce se aseamn cu oglinda ca

    un ceainic strlucitor etc. Obinem atunci, fie dintr-o fotografie, fie prin randare computerizat, o

    perspectiv a lumii aa cum este vzut din poziia central a oglinzii sau a obiectului. Se prefer

    aceast aproximare ntruct nu se poate stoca o hart separat pentru fiecae punct de pe obiect. Din

    aceast poziie vom crea o textur care arat ce este vizibil din centrul obiectului. Un exemplu de

    astfel de textur pornind de la o hart de textur sferic este ilustrat n Figura 6.18, iar unul de la

    o hart de textur cubic n Figura 6.19.

    Figura 6.18. Maparea mediului prin poriecie sferic

    Figura 6.19. Maparea mediului prin poriecie pe un cub

    Totui aceast mapare introduce distorsiuni la reflexie i trebuie inut cont c obiectul nu

    se va reflecta pe el nsui.

    6.6. Maparea bump

    Procedeul de mapare bump este folosit pentru a oferi unei suprafee netede un aspect cu

    denivelri, proeminene sau riduri. Pentru a modela toate micile crestturi de pe o suprafa cu

    poligoane ar fi necesar un numr foarte mare de polinoame mici, aa cum se poate vedea n Figura

    6.20. Acolo, un model initial pentru reprezentarea cruia au fost necesare 5 milioane de polinoame

    a putut fi simplificat la un model de 500 de polinoame prin aplicarea maprii bump.

  • 13

    Utilizarea acestei metode (ilustrat n Figura 6.21) simuleaz efectele de denivelare prin

    modificarea normalei la suprafa, astfel formndu-se nite mici modificri ale suprafeei deasupra

    sau dedesubtul unei zone. Cnd este folosit mpreun cu o metod de iluminare, schimbrile

    provocate de modificarea normalei la surafa vor da impresia de proeminene sau crestturi, fr

    a modifica de fapt suprafaa.

    a) b) c)

    Figura 6.20. Reducerea numrului de polinoame prin utilizarea maprii bump: a) model original obinut cu 5 milioane de polinoame; b) model simplificat la 500 polinoame; c) modelul simplificat cruia i s-a aplicat maparea bump

    Figura 6.21. Aplicarea diferitor texturi pe un obiect prin metoda bump

    Suprafeele ce folosesc texturi bump pot avea probleme de distorsiune cnd sunt privite de

    la o distan mai mare, mai ales atunci cnd distana este destul de mare astfel nct deformrile

    randate sunt de dimensiunea unui pixel sau chiar mai mici. O soluie este reducerea gradual a

    nlimii bumpurilor, bazat pe nivelul de detaliu la care textura este randat.

    6.7. Maparea de iluminare

    Cu toate c umbrirea Gouraud este metoda preferat de randare a iluminrii obiectelor

    dintr-o scen, ea are unele limitri care duc la rezultate foarte bune ale iluminrii vertecilor numai

    pentru poligoane de dimensiuni mici. O soluie n acest sens este precalcularea unor efecte de

    lumin ca fiind hri de textur, dup cum a fost ilustrat n Figura 6.21. Aceasta duce la rezultate

    acceptabile si performane ridicare, motiv pentru care este foarte des folosit n industria jocurilor.

    De exemplu, Quaqe folosete maparea de iluminare pe lng hrile de textur obinuite. Hrile

  • 14

    de textur sunt folosite pentru a aduga detaliile unei suprafee, iar hrile de iluminare sunt folosite

    pentru a aduga modele de iluminare precalculate. nsumarea celor dou texturi se face n timpul

    execuiei i este stocat n memoria cache pentru creterea eficienei.

    Figura 6.22. Aplicarea texturii de iluminare pe un obiect

    a) b)

    Figura 6.23. Scen din jocul Quaqe: a) fr maparea de iluminare; b) cu maparea de iluminare

    6.8. Bibliografie

    1. Peter Shirley, Steve Marschner Fundamentals of Computer Graphics

    2. https://cgcookie.com/blender/2011/10/31/creating-an-orange/

    3. http://cgtextures.com/

    4. Note de curs, M. Ian Graham, Computer Graphics, Lecture 10