Sunteți pe pagina 1din 31

Grafica 3D UPB 2011-2012 1

GRAFICA 3D


Valentin Stoica

Grafica 3D UPB 2011-2012 2
Sistemul de referinta ecran 3D
Transformarea din sistemul de referin normalizat n sistemul
de referin ecran 3D efectueaz o coresponden ntre fereastra
din planul de vizualizare i zona de afiare alocat pe display
numit poart de afiare (viewport)
Fereastra de vizualizare:
este definit ntr-un sistem de referin bidimensional n
planul
zN = 0 al sistemului de referin normalizat
Poarta de afiare:
este definit ntr-un sistem de referin bidimensional n
planul zS = 0 al sistemului de referin ecran 3D
este, n general, o zon rectangular de dimensiuni egale
cu numrul de pixeli corespunztori pe orizontal i pe
vertical a zonei afiate
n sistemul de referin ecran 3D se calculeaz coordonatele
tridimensionale ale punctelor, din coordonatele omogene, prin
mprirea cu w, dup care se execut transformarea de rastru
Grafica 3D UPB 2011-2012 3
Sistemul de referinta ecran 3D
x
N

y
N

x
min

x
S

y
S

x
max

y
min

y
max

x
Pmax

y
Pmax

y
Pmin

x
Pmin


P
y
N

x
N

P
x
S

y
S

C
F

y
CF

x
CF

x
CP

y
CP

C
P

Transformarea de la fereastra de vizualizare la poarta de afiare
Grafica 3D UPB 2011-2012 4
Sistemul de referinta ecran 3D
Transformarea din sistemul de referin
normalizat n sistemul ecran 3D las coordonata z
nemodificat.

Sistemul de referin ecran 3D astfel definit este
un sistem de referin stng, la fel ca i sistemul de
referin normalizat

Transformarea de la sistemul de referin normalizat
la ecran 3D se face folosind matricea de
transformare ecran 3D obinut prin compunerea a
trei transformri succesive
Grafica 3D UPB 2011-2012 5
Sistemul de referinta ecran 3D
Matricea de transformare ecran 3D este compus
din:
o translaie, astfel nct centrul CF al ferestrei s ajung n
origine, folosind matricea
T(xCF , yCF ,0)
o scalare cu factorii de scar sx, sy, folosind matricea S(sx,
sy, sz) astfel nct fereastra s ajung la dimensiunea
porii, iar coordonata z se las nemodificat




o translaie, prin care centrul porii este adus n punctul
CP, deci cu matricea de translaie T(xCP, yCP, 0)


1 s
y y
y y
s
x x
x x
s
z
min max
min P max P
y
min max
min P max P
x
=

=
Grafica 3D UPB 2011-2012 6
Sistemul de referinta ecran 3D
Matricea de transformare ecran 3D
(
(
(
(

=
(
(
(
(

(
(
(
(

=
(
(
(
(

(
(
(
(

(
(
(
(

=
N
N
N
N
S
S
S
S
CF y CP y
CF x CP x
CF
CF
y
x
CP
CP
w
Z
Y
X
w
Z
Y
X
;
1 0 0 0
0 1 0 0
y s y 0 s 0
x s x 0 0 s
1 0 0 0
0 1 0 0
y 0 1 0
x 0 0 1
1 0 0 0
0 1 0 0
0 0 s 0
0 0 0 s
1 0 0 0
0 1 0 0
y 0 1 0
x 0 0 1
NS NS
NS
M M
M
Grafica 3D UPB 2011-2012 7
Sistemul de referinta ecran 3D
Planul zS = 0 din sistemul de referin ecran 3D este planul de
proiecie
Coordonatele xS i yS reprezint coordonatele proieciei
ortografice n planul zS = 0 (care este planul de porii de afiare).
Transformarea de proiecie perspectiv din sistemul de
referin de observare a devenit o transformare de proiecie
ortografic n sistemul de referin ecran 3D
Coordonata zS n sistemul de referin ecran 3D este utilizat n
algoritmii de eliminare a suprafeelor ascunse
Volumul de vizualizare n sistemul ecran 3D este un
paralelipiped dreptunghic cu baza un dreptunghi de dimensiuni
egale cu dimensiunile porii afiate i nlimea egal cu 1,
(zS e [0,1])

Grafica 3D UPB 2011-2012 8
Sistemul de referinta ecran 3D

z
S

y
S


1
0
Poarta de
afisare
(a) Volumul de vizualizare n sistemul de referin normalizat
(b) Volumul de vizualizare n sistemul de referin ecran 3D

z
N
1
0
Fereastra de
vizualizare
1
1
y
N

x
N

(a)
(b)
Grafica 3D UPB 2011-2012 9
Transformarea de rastru

Transformarea de rastru (rasterization)
conversia de la reprezentarea prin coordonatele vrfurilor a
unui segment sau a unui poligon (primitiv geometric) la
reprezentarea prin mulimea corespunztoare de pixeli
care se afieaz pe display
Transformarea de rastru se mai numete
conversie de baleiere (scan conversion)
desenarea segmentelor, respectiv a poligoanelor (line
drawing, polygon drawing)
generare linie, respectiv poligon (line generation, polygon
generation).
Transformarea de rastru trecerea de la spaiul
bidimensional continuu (poarta de afiare definit
n planul zS = 0 al sistemului de referin ecran
3D) la spaiul discret al imaginii
Grafica 3D UPB 2011-2012 10
Transformarea de rastru

(a) Spaiul bidimensional continuu al porii de afiare
(b) Spaiul bidimensional discret al imaginii
(b)
x
S

y
S

(a)

x
i


y
i

x
k
x
k
+1

y
k
+1
y
k

x
k


y
k

Grafica 3D UPB 2011-2012 11
Transformarea de rastru

Spaiul imagine
un tablou bidimensional de locaii discrete pixeli
fiecare pixel are o adres care corespunde poziiei n imagine
a acestuia
un pixel ocup n poarta de afiare o zon ptrat de
dimensiune 1 1 a crui adres este dat de coordonata
colului stnga-jos
un pixel din spaiul imagine se reprezint prin culoarea lui,
care se memoreaz ntr-un buffer de imagine
adresa pixelului n spaiul imagine determin adresa n
bufferul de imagine n care se memoreaz culoarea acestuia
dimensiunea imaginii este specificat prin numrul de pixeli
pe orizontal (M), respectiv pe vertical (N), care pot fi
afiai n zona de ecran atribuit porii de afiare
dimensiunea maxim a imaginii depinde de rezoluia
display-ului folosit
Grafica 3D UPB 2011-2012 12
Transformarea de rastru

Din coordonatele x i y ale vrfurilor primitivelor
geometrice n poarta de afiare se calculeaz
ecuaiile segmentelor de dreapt (laturile), iar
mulimea de pixeli generat n spaiul imagine
trebuie s aproximeze ct mai bine segmentele de
dreapt sau interiorul poligoanele delimitat prin
laturile sale
Transformarea de rastru a segmentelor sau
poligoanelor calculeaz adresa fiecrui pixel din
mulimea de pixeli prin care se aproximeaz
primitiva geometric dat i nscrie la adresa
corespunztoare din bufferul de imagine intensitatea
de culoare a pixelului respectiv:

Grafica 3D UPB 2011-2012 13
Transformarea de rastru

culoarea pixelului poate fi o culoare
constant, rezultat din atributul de
culoare al primitivei geometrice sau
din condiii de umbrire constant
(poligonal) aceast culoare se
nscrie la toate adresele pixelilor
care aparin primitivei geometrice n
bufferul de imagine

culoarea pixelului poate varia (n
cazul umbririi Gouraud, culoarea
fiecrui pixel se calculeaz prin
interpolare, concomitent cu calculul
adresei pixelilor n transformarea de
rastru)

Grafica 3D UPB 2011-2012 14
Transformarea de rastru

Concomitent cu transformarea de rastru, se poate
executa operaia de eliminare a suprafeelor
ascunse, folosind coordonata zS (adncimea) a
vrfurilor primitivelor geometrice calculate n
sistemul de referin ecran 3D (algoritmul de tip
buffer de adncime, Z-buffer).
n cele mai multe din sistemele grafice actuale,
transformarea de rastru, umbrirea i eliminarea
suprafeelor ascunse se execut intercorelat, ntr-o
singur scanare (baleiere) a primitivei geometrice.
La sistemele evoluate se adaug la acestea i
operaiile de netezire a liniilor (anti-aliasing) i de
texturare.
Grafica 3D UPB 2011-2012 15
Generarea segmentelor de dreapta

Se consider un segment de dreapt AB dat
prin capetele lui (xA, yA), (xB, yB) n sistemul de
coordonate poarta de afiare;
ecuaia dreptei care trece prin aceste puncte este
y = ax + b
unde a = (yB yA) / (xB xA), b = yA a xA



xA xB


x
y
A
B
yB

yA


Grafica 3D UPB 2011-2012 16
Generarea segmentelor de dreapta
Adresa unui pixel este dat de coordonatele colului
lui stnga-jos, deci pixelul de adres (xk, yk) este un
ptrat cu colurile:
(xk, yk), (xk +1, yk), (xk+1,yk+1), (xk, yk+1)
, unde xk i yk sunt numere ntregi
Dac x1 s x2, atunci se calculeaz secvena de
puncte pe dreapt:
(x1 = xA, y1 = ax1 + b),
(x2 = x1+1, y2 = ax2 + b),

(xi, yi = axi + b)
.
Grafica 3D UPB 2011-2012 17
Generarea segmentelor de dreapta
Fiecrui punct pe dreapt i se asociaz un pixel a
crui adres n sistemul de referin imagine se
aproximeaz prin trunchierea sau rotunjirea
coordonatelor punctului n sistemul de referin de
afiare:
xi = (int)xi sau xi = (int)(xi + 0.5)
yi = (int)yi sau yi = (int)(yi + 0.5)
(a) a = 0.5
(b) a = 2
x x
y y
A
B
A
B
Generarea segmentelor de dreapt prin aplicarea direct a relaiilor de calcul.
Grafica 3D UPB 2011-2012 18
Generarea segmentelor de dreapta
Dezavantaje ale aplicarerii directe a formulei de
calcul al punctelor de pe dreapt:
necesit mai multe operaii (adunare, nmulire) n numere
flotante pentru fiecare pixel, operaii care au timp de
execuie ridicat
genereaz segmente de dreapt ntrerupte dac a > 1
Algoritmii incrementali elimin dezavantajele astfel:
evitarea operaiilor de nmulire n virgul flotant se face
prin trecerea prin incrementare de la un punct la urmtorul
punct
obinerea segmentelor de dreapt fr ntrerupri se
realizeaz prin tratarea separat a cazurilor abs(a) s 1 i
abs(a) > 1
Grafica 3D UPB 2011-2012 19
Generarea segmentelor de dreapta
Dac abs(a) s 1 i xA s xB
se ncepe generarea din punctul (x1 = xA, y1 = yA)
la fiecare pas se incrementez x cu 1, deci se iau punctele
de pe dreapt care au
x1 = xA, x2 = x1+1,, xi+1 = xi+1,..
deoarece yi = axi + b yi+1 = axi+1 + b = a(xi+1) + b = (axi+
b) + a = yi + a.
pentru trecerea de la un punct la urmtorul:
x se incrementeaz cu 1
y se incrementeaz cu valoarea pantei (a)
punctului de pe dreapt de coordonate (xi, yi), i
corespunde un pixel a crui adres n spaiul imagine se
calculeaz prin trunchiere sau rotunjire
Grafica 3D UPB 2011-2012 20
Generarea segmentelor de dreapta
Dac abs(a) s 1 i xA > xB
se ncepe generarea din punctul (x1 = xB, y1 = yB)
restul calculelor se continu la fel ca n cazul
precedent
Grafica 3D UPB 2011-2012 21
Generarea segmentelor de dreapta
Dac abs(a) >1 i yA s yB
se ncepe generarea segmentului din punctul
(x1 = xA, y1 = yA)
la fiecare pas se incrementeaz y cu 1, deci se
calculeaz punctele care au:
y1 = yA, y2 = y1+1,., yi+1 = yi+1,
deoarece xi = (yi b)/a, rezult c xi+1 = (yi+1 b)a
= xi+1/a.
pentru trecerea de la un punct la urmtorul:
y se incrementeaz cu 1
iar x se incrementeaz cu inversul pantei (1/a)
Grafica 3D UPB 2011-2012 22
Generarea segmentelor de dreapta
Dac abs(a) > 1 i yA > yB,
se ncepe generarea din punctul (x1 = xB, y1 = yB)
restul calculelor se continu la fel ca n cazul
precedent
Grafica 3D UPB 2011-2012 23
Generarea segmentelor de dreapta
Algoritmul incremental de generare a
primitivelor geometrice are mai multe variante
de implementare, n funcie de situaia n care
este aplicat:
Pentru segmente de dreapt, se adapteaz
algoritmul incremental astfel nct s se genereze
segmente fr ntreruperi, folosind numai operaii
cu numere ntregi (algoritmul Bresenham)
Pentru generarea poligoanelor, varianta de
algoritm incremental este algoritmul de baleiere
pe linii (scan-line)
Grafica 3D UPB 2011-2012 24
Generarea segmentelor de dreapta
Indiferent de algoritmul de conversie folosit pentru generarea
liniilor, trecerea de la spaiul bidimensional continuu (n care
poziia punctelor este reprezentat prin numere reale) la
reprezentarea n spaiul discret al imaginii este o aproximare prin
eantionare, care produce erori de reprezentare:
orice linie dreapt (cu excepia celor
orizontale sau verticale) apare zimat
(jagged), ca o scar de segmente
de dreapt succesive.
imaginea de scar este cu att mai pregnant cu ct rezoluia
display-ului (numrul de pixeli pe orizontal i pe vertical) este
mai mic
dac rezoluia crete, aspectul nedorit de scar este atenuat, dar
nu este eliminat
Netezirea liniilor se poate obine prin diferite metode de filtrare,
metode cunoscute sub numele de filtrare anti-aliasing
Grafica 3D UPB 2011-2012 25
Generearea poligoanelor
Metoda cea mai frecvent folosit pentru generarea mulimii
pixelilor prin care se aproximeaz o suprafa poligonal este
metoda de baleiere pe linii a poligonului (algoritmul scan-line).
Se consider poligonul ABCDE, care reprezint proiecia n
planul zS = 0 al sistemului de referin ecran 3D, a unei suprafee
ABCDE din spaiul tridimensional universal
x
y
x
i,1


y
i+1
= y
i
+1
y
i

x
i,2

x
i+1,2

x
i+1,1


B

A
C
D
E

y
1

M
i, 2


M
i+1, 2

M
i, 1

M
i+1,1

Grafica 3D UPB 2011-2012 26
Generearea poligoanelor
Metoda de baleiere pe linii a poligonului
Poligonul este baleiat cu o linie orizontal care ia valorile
succesive y1, y2,yi, yi+1.., unde y1 este valoarea
coordonatei y minim a vrfurilor poligonului, iar yi+1 = yi+1
Pentru fiecare poziie yi a liniei de baleiere se calculeaz
interseciile xi,1, xi,2 cu dou din laturile poligonului
Pixelii a cror adrese sunt cuprinse n intervalul (xi,1, yi),
(xi,2, yi) aparin poligonului i sunt prelucrai n mod
corespunztor

Pentru algoritmul simplu de generare a poligoanelor,
culoarea poligonului (cunoscut ca atribut a feei
corespunztoare a obiectului) este nscris n
bufferul de imagine la toate adresele cuprinse n
intervalul respectiv
Grafica 3D UPB 2011-2012 27
Generearea poligoanelor
Fie urmtoarele ecuaii ale laturilor stnga i dreapta
cu care se intersecteaz dreapta y = yi:
x = m1 y + n1
x = m2 y + n2
Pentru exemplul dat, intersecia dreptei y = yi are loc
cu laturile AB i BC, pentru care coeficienii din
ecuaiile de mai sus au valorile:
m1 = (xA xB) / (yA yB), n1 = xB m1 yB
m2 = (xC xB) / (yC yB), n2 = xC m2 yC
Interseciile corespunztoare sunt:
xi,1 = m1yi+ n1, xi,2 = m2yi + n2.
Grafica 3D UPB 2011-2012 28
Generearea poligoanelor
Coordonatele interseciilor liniei urmtoare de
baleiere y = yi+1, unde yi+1 = yi+1, se pot
calcula din coordonatele precedente folosind
coeficienii m1 i m2 ai laturilor intersectate:
xi+1, 1 = xi,1 + m1
xi+1, 2 = xi,2 + m2
Secvena de pixeli ai cror adrese sunt
cuprinse n intervalul (xi+1,1, yi+1), (xi+1,2,yi+1)
aparin poligonului pe linia de baleiere y = yi+1
i sunt tratai corespunztor
Grafica 3D UPB 2011-2012 29
Generearea poligoanelor
Algoritmul de baleiere pe linie se poate
implementa i pentru poligoane concave:
o linie de baleiere poate intersecta mai multe
perechi de laturi, rezultnd mai multe segmente
de interecie i deci mai multe secvene de pixeli
care aparin poligonului
x
i,1
x
i,3

x
i,4

x
i,2

Grafica 3D UPB 2011-2012 30
Generearea poligoanelor
n general poligoanele concave sau cu guri se
trateaz pe mai multe nivele:
acceleratoarele grafice implementeaz hardware automate
de generare a unor suprafee convexe simple (triunghiuri
sau trapeze).
descompunerea unui poligon convex n mai multe triunghiuri
este o operaie simpl care, de cele mai multe ori, este
preluat de biblioteca grafic, care conine funcii de generare
a poligoanelor convexe cu un numr oarecare de laturi.
descompunerea poligoanelor
concave n poligoane convexe
este tratat la nivelul programului
de aplicaie
Grafica 3D UPB 2011-2012 31
Generearea poligoanelor
Ca i n cazul liniilor, muchiile poligoanelor generate
prezint aspectul de scar de segmente, datorit
trecerii la spaiul discret al imaginii:





Algoritmii de filtrare pentru netezirea muchiilor
poligonului (algoritmi de anti-aliasing) se execut,
n general, concomitent cu algoritmul de generare
scan-line a poligonului

S-ar putea să vă placă și