RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI...
Transcript of RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI...
1
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
DISPLEJ LISTA
Displej lista je grupa komandi grafičke biblioteke koje su
pohranjene za kasnije izvršenje. Većina komandi grafičke
biblioteke mogu biti pohranjene u displej listu ili izdate u
trenutačnom modu (immediate mode), ovaj mod prouzrokuje
da se komande trenutačno izvršavaju. Time, skup komandi
grafičke biblioteke se može imenovati, organizirati i raditi sa
displej listom na pogodan i efikasan način. Naprimjer,
posmatrajmo translaciju slike kuće na monitoru. Ako slika
kuće se sastoji od nekoliko stotina linija, morali bi da pišemo
translacione komande nekoliko stotina puta- jednaput za
svaku liniju- ako linije slike postoje kao nezavisni entiteti.
Medjutim, mi treba da pišemo istu komandu samo jedanput,
ako bi grafički entiteti za sliku bili definisani kao displej lista.
2
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
Displej lista OpenGL je dizajnirana da optimizira performansu,
naročito putem mreže, ali nikada na trošak performanse na
pojedinačnoj mašini.
Da bi se optimizirala performansa, displej lista kašira
komande a ne dinamičku bazu podataka. Drugim riječima,
jedanput kada je displej lista kreirana, ona se ne može
modificirati. Ako bi displej liste bile modifikabilne, performansa
bi mogla biti reducirana zbog overheda ( dodatnih aktivnosti),
koji bi bio potreban da se pretraži kroz displej listu i izvrši
menadjment memorije. Kako bi dijelovi displej liste bili
mjenjani, alokacija i dealokacija memorije bi mogla voditi ka
fragmentaciji memorije. Korištenje displej lista je isto tako brzo
kao i da se ne koriste.
3
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
Jedanput kada je displej lista definisana, slijedeće operacije
se mogu primjeniti:
- Višestruko izvršenje: Ista displej lista se može izvršiti
mnogo puta.
- Hijerahijsko izvršenje: Hijerarhijska displej lista je ona koja
izvršava drugu displej listu pozivajući komandu za izvršenje
displej listu-dijete, u okviru displej liste-roditelj.
Hijerarhijska displej lista je korisna za objekat koji je
sastavljen od komponenata, naročito ako neke od ovih
komponenata se koriste više od jedanput.
Brisanje ( deletion): ovim se displej lista eliminira.
4
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
TRANSFORMACIONA MATRICA
Konverzija koordinata iz jednog koordinatnog sistema u
drugi je bitna u izračunavanju lokacija projekcija tačaka na
objekat u prostoru. Prvo, mi treba da sračunamo koordinate
tačaka na objektu za vanjski koordinatni sistem ( wcs) iz
njegovog model koordinatnog sistema ( mcs). Tekuća
pozicija objekta je obićno specificirana kao: koliko je puta
objekat bio transliran i rotiran od svoje inicijalne pozicije,
kod koje njegov modelni koordinantni sistem koincidira sa
vanjskim kooridinatnim sistemom. Time, vanjske koordinate
tačaka na objektu u tekučoj lokaciji se dobiju translacijom i
rotacijom odgovarajućih tačaka kod inicijalne pozicije, gdje
njegov model koordinatni sistem koincidira sa vanjskim
koordinatnim sistemom. Na taj način, vanjske koordinate
tačaka na objektu kod tekuče lokacije, se dobiju sa
translacijom i rotacijom odgovarajućih tačaka kod inicijalne
5
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
pozicije gdje su njegove modelne koordinate iste kao i
vanjske koordinate. Većina grafičkih biblioteka izvršava
interno ove transformacije, i grafički programer može trebati
da obezbjedi samo dio translacije i rotacije svakog objekta.
Medjutim, mi još uvjek moramo da razumijemo jasno
transformaciju da bi bili u stanju da crtamo objekte na
njihovim korektnim lokacijama bez metode probe i greške,
naročito kada se objekti kreću na komplikovan način.
Mi opisujemo transformacionu matricu koju treba primjeniti
na koordinate tačaka za ove translacije i rotacije u nastavku.
Kada smo dobili vanjske koordinate svih tačaka jednog
objekta u njegovoj tekučoj poziciji, mi treba da izvedemo
koordinate istih tačaka u odnosu na koordinatni sistem
gledanja ( vcs). Ova konverzija koordinata izmedju različitih
koordinatnih sistema se naziva mapiranje. Mapiranje
izmedju vanjskog koordinatnog sistema i k.s gledanja ( vcs)
6
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
se obićno realizuje interno od strane grafičke biblioteke
kada programer obezbjedi informaciju kao što je lokacija
tačke gledanja( viewpoint), lokacija gledanja ( viewsite), i
smjer up vektora, i to za sve u vanjskom k.s.
TRANSLACIJAKada se objekat translira za a,b i c u x, y i z pravcima, od
svoje početne pozicije kod koje njegov model koordinatni
sistem koincidira sa vanjskim koordinatnim sistemom ( wcs),
( vidjeti na narednoj slici), vanjske koordinate tačke ( wcs) na
objektu u novoj poziciji( Xw, Yw, Zw ) se dobiju kao:
( 3.3)
7
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
U ovoj jednačini ( 3.3), Xm, Ym i Zm su takodjer modelne
koordinate od iste tačke. Jednačina (3.3) se može izraziti u
slijedećoj formi, koristeći matrične operacije :
8
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
Jednačina (3.4) se može lako verificirati da je ista kao i
jednačina (3.3) jednostavnom ekspanzijom. Dodatna operacija
u jednačini (3.3) se može izraziti kao operacija multiplikacije u
jednačini ( 3.4) korištenjem homogenih koordinata koje
predstavljaju trodimenzionalni vektor sa četiri skalara umjesto
tri . Matrica koja se koristi da transformira homogene koordinate
se naziva homogena transformaciona matrica. Zbog toga,
transformaciona matrica na desnoj strani jednačine (3.4) ,
označena kao Trans( a.b.c) je homogena transformaciona
matrica za translaciju. Ako tačka u dvije dimenzije treba da
bude transformirana, ili translirana kao u ovom slučaju,
homogena transformaciona matrica će se reducirati na 3 x 3
matricu eliminišući treči red i treču kolonu iz 4 x 4 homogene
transformacione matrice. Biće primjenjena na koordinate tačke
koja je predstavljena sa 3 x 1 vektorom kolonom, dobijenim
eliminacijom z koordinata iz 4 x 1 trodimenzionalnih homogenih
9
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
koordinata.
ROTACIJAPredpostavimo da je objekat rotiran za q oko X ose
vanjskog koordinatnog sistema( wcs) zajedno sa svojim
modelnim koordinatnim sistemom ( koji ponovno koincidira
sa vanjskim k.s kod početne pozicije, kao što je prikazano
na narednoj slici). Vanjske koordinate tačke na objektu u
novoj poziciji, ( Xw, Yw, Zw ) , se mogu dobiti iz svojih
originalnih koordinata, ( Xm, Ym, Zm) , kako slijedi: Ovdje (
Xm, Ym, Zm) su koordinate tačke u odnosu na modelni
koordinatni sistem, i time su one jednake sa svojimvanjskim koordinatama prije rotacije.
10
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
Rotacija oko x ose
Relacija izmedju ( Xw, Yw, Zw ) i ( Xm, Ym, Zm) postaje
jasnija kada se prethodna slika projektuje na yz ravan kako
je prikazano na narednoj slici:
11
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
Iz ove slike se lako mogu dobiti slijedeće jednačine:
12
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
jednačine ( 3.5), (3.6) i (3.7) se mogu izraziti u matričnomobliku kao:
Matrica na desnoj strani jednačine (3.8) je homogenatransformacija matrice za rotaciju oko x ose i zato jeoznačena kao Rot (x,q ) . Ova homogena transformacionamatrica će takodjer biti reducirana na 3 x 3 zadvodimenzionalni objekat, kao i za translaciju.
13
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
Homogena transformaciona matrica za rotaciju oko y ili zose se može izvesti slično i izraziti kao:
Razmatrali smo transformacione matrice pridružene sarotacijama oko jedne od osa vanjskog k.s. ( wcs). Mimožemo zaključiti da rotacija oko bilo koje arbitrarne ose sepostiže kombinacijom rotacija oko x, y i z osa. Time,transformaciona matrica za arbitrarnu osu se dobijekombinujući matrice u jednačinama ( 3.8) – ( 3.10).
14
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
Transformacione matrice opisane u ovom poglavlju su
obićno izvedene iz prodruženih rutina u grafičkim
bibliotekama. Posmatrajmo neke primjere da pojasnimo
objašnjenja za transformacionu matricu.
Objekat u prostoru se translira za 5 jedinica u y smjeru
vanjskog koordinatnog sistema ( wcs), i nakon toga rotira
90 stepeni oko x ose vanjskog koord. sistema ( wcs). Ako
tačka na objektu ima koordinate ( 0,0,1) u odnosu na njen
modelni koord. sistem ( mcs), koje će biti vanjske
koordinate iste tačke nakon translacije i rotacije?
15
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
OdgovorKoordinate ( Xw
’, Yw’, Zw
’) nakon translacije se mogu dobiti
sa:
Nakon toga kada se primjeni rotacija:
Dakle, koordinate nove tačke će biti ( 0, -1, 5). Primjetimo da
jednačine ( a) i (b) se mogu objediniti kako slijedi:
Jednačina (c) je mnogo praktičniji izraz, naročito kada
koordinate brojnih tačaka se trebaju izračunati.
16
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
U tom slučaju, transformacione matrice Rot( x,90) i
Trans(0,5,0) , su unaprijed pomnožene da daju
ekvivalentnu transformacionu matricu, i nakon toga
rezultirajuča matrica se primjenjuje na sve tačke koje su
uključene. Ovaj proces računanja ekvivalentne
transformacione matrice sa množenjem pridruženih
transformacionih matrica u odgovarajučoj sekvenci se
naziva sastavljanjem ( concatenation). Ovaj proces je
jedan od beneficija korištenja homogenih koordinata, koje
omogućuju translaciju da se izrazi sa množenjem matrica
umjesto sa dodavanjem.
17
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
Primjer br 2Objekat u prostoru je rotiran 90 stepeni oko ose koja je
paralelna sa x osom vanjskog koordinatnog sistema, i
prolazi kroz tačku koja ima vanjske koordinate ( wcs) (
0,0,1). Koje će biti vanjske koordinate ( wcs) iste tačke
nakon rotacije?
18
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAOdogovorDiskutirali smo rotacije samo oko osa koje prolaze krozkoord. početak, tako da moramo zajedno pomjeriti iobjekat i osu rotacije. Osa rotacije mora proći kroz koord.početak dok ista relativna pozicija se održava izmedjuobjekta i ose rotacije. Dakle, objekat je transliran za ( 0,-3,-2) zajedno sa rotacijom ose tako da rotaciona osa koincidirasa x osom od vanjskog koordinatnog sistema ( wcs). Nakontoga objekat se rotira oko x ose za 90 stepeni. Sada seobjekat ponovo translira, za ( 0,3,2), da se vrati naoriginalnu poziciju.
Ove operacije se mogu izraziti kao:
Primjetimo sekvencu transformacionih matrica u jednačini(d). Razultat se može lako verificirati primjenjujućitransformacije korak po korak, kao i u prethodnom primjeru.
19
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
Ekspandirajući jednačinu (d) dobićemo:
MAPIRANJEMapiranje uključuje izračunavanje koordinata tačke u
odnosu na koordinatni sistem iz poznatih koordinata, od iste
tačke u odnosu na drugi koordinatni sistem.
Posmatrajmo dva koordinatna sistema prikazana na
narednoj slici. Da bi to uradili, predpostavljamo da su
koordinate ( X2, Y2 i Z2 ) tačke P u odnosu na x2, y2 i,z2
koordinatni sistem treba da budu sračunate u odnosu na
20
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
x1y1z1 koordinatni sistem.
Nadalje, za ( X2, Y2 , Z2 ) se predpostavlja da su sračunate
primjenjujući transformacionu matricu T1-2 na ( X1, Y1 i Z1 )
kako slijedi:
21
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
Zamjenjujući T1-2 sa njegovim elementima dozvoljava
jednačini ( 3.11) da bude izražena kao:
Da bi izveli elemente u jednačini (3.12) mi prvo zamjenjujemo
X1 = 0, Y1 = 0, i Z1=0, i dobijemo:
22
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJADakle, mi možemo reći da px, py i pz su dobijene kaokoordinate početka od x1y1z1 koordinatnog sistema uodnosu na x2y2z2 koordinatni sistem.
Mi sada zamjenjujemo vrijednosti od X1= 1, Y1= 0 i Z1= 0 ujednačinu ( 3.13) i dobijamo:
Oduzimajući jednačinu (3.13) od jednačine (3.14), mimožemo zaključiti da nx , ny i nz su respektivno , x2 , y2 i z2
komponente jediničnog vektora duž x1 ose od x1y1z1
koordinatnog sistema. Dakle, nx , ny i nz se lako izvode izrelativne orjentacije izmedju dva koordinatna sistema kojasu uključena. Slično ox , oy i oz su x2 , y2 i z2 komponente
od y1 ose i ax , ay i az su one od z1 ose.
23
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJADruge transformacione matrice
Pored transformacionih matrica opisanih u prethodnomtekstu, transformacione matrice za skaliranje i zaogledalsku refleksiju se takodjer često koriste. Da bi seskalirao jedan objekat prema gore ili dolje, sx puta u xpravcu, sy u y, i sz puta u z pravcu, slijedećatransformaciona matrica se primjenjuje:
Kao i za translaciju i rotaciju dvodimenzionalnih objekata,skalirajuća transformaciona matrica se takodjer reducira na3x3 matricu. Isti efekat skaliranja se može dobitimjenjanjem velićine viewporta ili prozora bez da se mjenja
24
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
vrijednost koordinata.
Transformaciona matrica u jednačini ( 3.15) se koristi kada
objekat se skalira u odnosu na koord. početak. Medjutim,
često je poželjno da se skalira objekat u odnosu na tačku P
na objektu predstavljenu sa ( Xp, Yp, Zp ). U ovom slučaju,
translaciona transformacija, Trans(- Xp, -Yp, -Zp ) se
primjenjuje prvo tako da se referentna tačka za skaliranje
pomjera u koord. početak, nakon toga skalirajuća matrica u
jednačini ( 3.15) se primjenjuje, i konačno Trans(Xp, Yp, Zp )
se primjenjuje da se pomjeri objekat natrag u svoju
originalnu poziciju.
Sa xy ravni kao ogledalom, zrcalna refleksija se može
postiči sa slijedećom transformacionom matricom, pošto
samo znak z koordinate se treba reverzirati:
25
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
Transformaciona matrica za druge zrcalne refleksije, sa yz
ravni ili xz ravni kao ogledalom, se može izvesti na isti
način.
26
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
OTKLANJANJE SKRIVENIH LINIJA I POVRŠINAKada je jedan objekat u prostoru projektovan na ekran,prikazujući samo vidljive linije i površine će dovesti dopovećanja jasnoće slike. Otklanjanje skrivenih linija ( hiddenline removal) sprječava prikaz segmenata linije da postanuloše vidljivi, otklanjanje skrivenih površina ( hidden-surfaceremoval), spriječava prikaz bilo kojeg dijela površine koji jezaklonjen ( obscured). Naredne dvije slike ilustriraju slikeobjekta prije i nakon otklanjanja skrivenih linija. Očito,razumjevanje slike je mnogo lakše, sa otklonjenimsakrivenim linijama.
Objavljeni su mnogi softverski algoritmi za otklanjanjeskrivenih linija i/ili površina. Oni pokušavaju da poboljšajuračunarsku efikasnost ili da prošire dijapazon oblikaobjekata sa kojima se može manipulirati. Medjutim,otklanjanje skrivenih linija i/ili površina ima tendenciju da senajbolje ostvaruje kada se iskoristi prednost hardveragrafičkog uredjaja koji se naziva z-bafer ( buffer).
27
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
Slika prije nego što su skrivene linije otklonjene
Slika nakon što su skrivene linije otklonjene
28
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
Razlozi za otklanjanje skrivenih linija i površina su ne samo
zbog bolje preglednosti i jasnije vidljivosti objekata na sceni
nego i da se uštedi vrijeme iscrtavanja od strane CPU (
GPU ) ovih objekata jer crtanje pologonalnih lica kozumira
procesorska vremena. Zato treba crtati i renderisati samo
ona lica i objekte koje vidimo. Površine i linije koje ne
vidimo su :
- zasjenjene površine i linije
- zadnja lica objekata ( back faces culling)
- lica i površine van volumena gledanja ( tkz viewing
frustum culling .
Takodjer da bi se izvršilo korektno renderisanje ( sjenćenje
) potrebno je izračunati korektno i koje su površine vidljive a
koje nisu. Kada više punih ( neprovidnih ) poligona pokriva
istu površinu ekrana , samo one koje su nabliže tački
29
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
gledanja ( tj. oku posmatrača ) su vidljive i ostale trebaju biti
otklonjene kao što se vidi sa slijedeće slike :
nekorektni prikaz scene korektan prikaz scene
Dakle potrebno je:
- odrediti koji su objekti vidljivi u oku posmatrača
- odrediti koje boje koristiti da se oboje pikseli na ekranu
30
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
U nastavku, ćemo pogledati nekoliko tipičnih algoritama za
eliminiranje skrivenih linija i površina, korištenjem
softverskih algoritama kao i metoda za korištenje z-bafera
za istu namjenu.
Back-face algoritam otklanjanjaBack-face ( stražnje lice) algoritam , koristi osnovnu ideju
da je lice objekta vidljivo ako njegov normalni vektor u
smjeru van objekta je usmjeren prema posmatraču, a inače
je nevidljivo. Slućaj kada je lice nevidljivo i usmejeno na
suprotnu stranu od smjera posmatrača je prikazan na
narednoj slici:
31
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
Odstranjivanje stražnjih lica je podržano u OpenGL. Ako ga
nadjemo nećemo ga iscrtavati niti renderisati pošto se lica
na sceni izložena različitim izvorima svjetla najčešće sjenče
radi realističnosti scene. Kako ćemo detektovati ovo
stražnje lice?
Postupak je prikazan na slijedećoj slici:
F je lice objekta kojeg želimo testirati da li je stražnje lice.
P je tačka na FFormirati vektor posmatranja od tačke gledanja - MN je normalni vektor na lice F
M
32
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
Dva vektora u relaciji prema vidljivosti lica
If M . N > 0, tada je lice vidljivo
If M . N = 0, tada je lice prikazano kao linija
If M . N < 0, tada je lice nevidljivo
33
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
Takodjer se odstranjuju i svi objekti koji su van volumena
gledanja ( viewing frustum ).
Ovo odstranjivanje se realizuje preko 3D algoritma
odsjecanja ( napr. 3D clipping algorithm Liang – Barsky)
34
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
Ovi uslovi otkrivanja stražnjih lica se mogu lako primjenitina objekat ograničen sa planarnim licima, pošto normalnivektor N konstantan bilo gdje na licu. Medjutim, ovi uslovise ne mogu primjeniti na konkavni objekat, pošto lice kojeje okrenuto prema posmatraču može biti zaklonjeno (obscured) od strane drugog lica od istog objekta, kao štoje to pokazano na narednoj slici.
Primjer konkavnog objekta
35
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
Ista situacija se pojavljuje sa više od jednim konveksnim
objektom kada lice jednog objekta može biti zasjenjeno
drugim objektom mada je lice usmjereno ka posmatraču.
Zbog toga back-face algoritam se može primjeniti samo na
jedan konveksan objekat. Nadalje, algoritam ne može
manipulirati sa objektom kao što je onaj pokazan na
narednoj slici, pošto normalni vektor usmjeren prema vani
svakog lica se ne može jednoznačno ( unambiguously)
odrediti.
Objekat čiji normalni vektor prema vani nije odredjen jednoznačno
36
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
Ako objekat ima neplanarna lica ( površine), vrijednost N za
svaku neplanarnu površ će se promjeniti, zavisno od toga
na koju tačku na licu je izabran, a znak od M . N će se
takodjer promjeniti. Ovo znači da lice ima vidljivi dio i
nevidljvi dio u isto vrijeme. Zato, lice treba biti podjeljeno
duž krive na licu koja slijedi tačke M . N = 0. Kriva duž koje
je M . N = 0 se naziva linija siluete (silhouette line). Kada se
lice podjeli duž linije siluete, znak M . N za podjeljeni
segment se istražuje za bilo koju reprezentativnu tačku
izabranu iz svakog segmenta. Ovaj proces se može pojaviti
da je lagan, ali izračunavanje linija silueta nije jednostavan
zadatak, i time najveća prednost back-face algoritma- tj
jednostavnost implementacije je izgubljena.
Nakon što su sva lica identificirana kao vidljiva ili nevidljiva,
ivice vidljvih lica se prikazuju da generišu sliku crtanja linija
37
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
sa otklonjenim sakrivenim linijama. Ako se želi slika sa
otklonjenim sakrivenim površinama, vidljive površine se
jednostavno ispune sa izabranim bojama.
Sortiranje dubine ili slikarev algoritamOsnovni princip dubinskog sortiranja ( ili slikarevog )
algoritma se može iskazati na slijedeći način:
Površine objekata se sortiraju po rastojanju od posmatrača i
pune sa njihovim odgovarajučim bojama od najudaljenijeg
lica ka najbližem licu. Slikanjem površina ovim
redoslijedom, najudaljenije površine se automatski
sakrivaju od strane bližih površina ako će one zauzimati isti
region ekrana. Dakle, dubinski algoritam sortiranja je
algoritam otklanjanja sakrivenih površina. Rastojanje
površine od posmatrača se mjeri sa z koordinatama tačaka
na površini, u odnosu na koordinatni sistem posmatranja.
38
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
39
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
To znači, tačka sa većom Zv koordinatom se može reći da
je bliža posmatraču. ( Medjutim u OpenGL tačka sa većom
vrijednošću Zv koordinate je dalje od posmatrača pošto
OpenGL koristi lijevoruki koordinatni sistem posmatrača (
vcs).
( Napomena : z koordinata u odnosu na koordinatni
sistem posmatrača ( vcs) će se označiti sa Zv ) .
Dakle, samo je potrebno da poredimo Zv koordinate
površina koje treba nacrtati i prikazati površine u sekvenci
startujuči od površine sa najmanjom Zv koordinatom.
Poredjenje Zv koordinata izmedju dvaju površina bi bilo
jednostavno ako bi maksimalna Zv vrijednost jedne površine
bila manja od minimuma Zv vrijednosti druge površine.
Medjutim, u većini slučajeva, opseg Zv vrijednosti svih
tačaka na površini prekriva Zv opseg druge površine.
40
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
Ove dvosmislene situacije se mogu izbjeći razdjelujući
svaku od površina u dva ili nekoliko komada sve dok Zv
opsezi se ne preklapaju. Postoji još jedan, jednostavan
način, da se prevazidje problem, kojeg je lakše i
implementirati. Kod ovog metoda, svaka površina objekata
se unaprijed konvertuje u skup malih trouglova tako da Zv
opseg svakog trougla se ne preklapa sa bilo kojim drugim, i
nakon toga svaki trougao se boji sa pridruženom bojom u
korektnoj sekvenci. Kako se veličine trouglova smanjuju,
postoji manja vjerovatnoća da Zv opsezi će se preklopiti.
Ova aproksimacija objekta ograničenog sa mnogo trouglova
se zove trijangulacija ili konverzija faceta. ( triangulation or
facet conversion).
41
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
z – Bafer metodz- bafer metod je baziran na istom principu kao i algoritamsortiranja po dubini, po tome što je bilo koji region ekranazaposjednut sa entitetom koji je najbliži posmatraču. Ovdje,entiteti impliciraju tačke, krive ili površine. Ovaj metoduključuje korištenje hardverske memorije koja se naziva z-bafer koja pohranjuje, za svaki piksel, Zv vrijednost entitetačija projekcija je predstavljena sa pikselom( tako da jepotrebno u video RAM memoriji drzati i frame buffer i z-buffer). U z-bafferu na svakoj (x,y) koordinati pikselaprijekcione ravni se pohranjuje ,z koordinata entiteta koji seprocesira.
Zv vrijednost ( tj. koordinata u koordinatnom sistemuposmatranja (vcs) je mjera rastojanja entiteta odposmatrača. Zbog toga, z-bafer zahtjeva odredjenu kolićinumemorijskog prostora koja je potrebna da pohrani tolikorealnih varijabli koliko ima piksela.
42
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
Lica čiji su normalni vektori usmjereni od posmatrača su
nevidljiva, tako da samo lica čiji su normalni vektori
usmjereni prema posmatraču se skupljaju i projektuju na
ekran. Medjutim, za razliku od algoritma dubinskog
sortiranja, površine se projektuju u slučajnom redoslijedu.
Razlog će postati jasniji kako idemo kroz slijedeću
proceduru.
Prvo, svaka proizvoljna površina se projektuje, i memorijske
lokacije z- bafera koje odgovaraju pikselima pridruženim sa
projektovanom slikom se setuju sa Zv vrijednostima
odgovarajućih tačaka na površini,
43
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
predstavljenoj sa pikselima. U ovom trenutku, pikseli suobojeni bojom te površine. Nakon toga se projektujeslijedeća površina, i pridruženi pikseli se boje sa bojom ovepovršine ako ovi pikseli nisu bili obojeni sa prethodnompovršinom. Ako se neki pikseli već bili obojeni, pohranjeneZv vrijednosti ovih piksela se porede sa Zv vrijednostimatačaka na tekučoj površini, predstavljenoj sa istimpikselima. Ako pohranjene Zv vrijednosti piksela su veće odnjene tekuče vrijednosti ( tj. tačka na prethodnoj površini jebliže nego ona na tekučoj površini ka posmatraču), onda jeboja piksela rezervisana. Inače, ona će biti obojena sabojom tekuče površine. Sve Zv vrijednosti piksela seinicijaliziraju na vrijednosti rastojanja do udaljene ravni ( farplane), od posmatrača tako da pikseli za prvu površinu seautomatski setuju na boju prve ravni. Ponavljanje isteprocedure za sve površine koje su uključene, će obojitisvaki piksel na
44
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
ekranu sa bojom najbliže površine, kao što je pokazano na
narednim slikama:
Princip z-bafer metoda
45
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
Sumirajući prethodni opis, z-bafer metod se bazično koristiza otklanjanje skrivenih površina, kao i metod dubinskogsortiranja. Medjutim, crtanje linija bez skrivenih linija semože takodjer generisati korištenjem z-bafer metoda samalim modifikacijama , kako slijedi:
Prvo, sve površine se projektuju na ekran bojenjempridruženih piksela se pozadinskom bojom ( backgroundcolor). U ovom koraku, z-bafer se postavlja sa korektnimvrijednostima Zv kao i ranije. Dakle, ova operacija imaefekat postavljanja Zv vrijednosti korektno, bez prikazivanjapovršina. Nakon toga, granične ivice površina se projektujuna ekran. Dok se ove ivice projektuju, Zv vrijednosti pikselakoji predstavljaju ivice se porede sa Zv vrijednostima većpostavljenim od strane površina, i samo pikseli saoriginalnim Zv vrijednostima se ažuriraju. Na ovaj način,dijelovi graničnih ivica koji se zamagljeni od strane površina
46
OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA
neće biti prikazani. Ova procedura daje korektno crtanje
linija – bez skrivenih linija. Medjutim, neke granične linije
mogu postati isuviše tanke pošto neki od piksela svake
granične linije mogu biti zauzeti od strane površina koje
dijele graničnu liniju. Mi možemo lako riješiti ovaj problem
pomjerajući čitav objekat bliže ka nama, u malim iznosima,
kada projektujemo granične linije.