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