12.07.2015 Views

osnovni koncepti grafičkog programiranja

osnovni koncepti grafičkog programiranja

osnovni koncepti grafičkog programiranja

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJADISPLEJ LISTADisplej lista je grupa komandi grafičke biblioteke koje supohranjene za kasnije izvršenje. Većina komandi grafičkebiblioteke mogu biti pohranjene u displej listu ili izdate utrenutačnom modu (immediate mode), ovaj mod prouzrokujeda se komande trenutačno izvršavaju. Time, skup komandigrafičke biblioteke se može imenovati, organizirati i raditi sadisplej listom na pogodan i efikasan način. Naprimjer,posmatrajmo translaciju slike kuće na monitoru. Ako slikakuće se sastoji od nekoliko stotina linija, morali bi da pišemotranslacione komande nekoliko stotina puta- jednaput zasvaku 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.1


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJADisplej lista OpenGL je dizajnirana da optimizira performansu,naročito putem mreže, ali nikada na trošak performanse napojedinačnoj mašini.Da bi se optimizirala performansa, displej lista kaširakomande a ne dinamičku bazu podataka. Drugim riječima,jedanput kada je displej lista kreirana, ona se ne možemodificirati. Ako bi displej liste bile modifikabilne, performansabi mogla biti reducirana zbog overheda ( dodatnih aktivnosti),koji bi bio potreban da se pretraži kroz displej listu i izvršimenadjment memorije. Kako bi dijelovi displej liste bilimjenjani, alokacija i dealokacija memorije bi mogla voditi kafragmentaciji memorije. Korištenje displej lista je isto tako brzokao i da se ne koriste.2


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAJedanput kada je displej lista definisana, slijedeće operacijese mogu primjeniti:- Višestruko izvršenje: Ista displej lista se može izvršitimnogo puta.- Hijerahijsko izvršenje: Hijerarhijska displej lista je ona kojaizvršava drugu displej listu pozivajući komandu za izvršenjedisplej listu-dijete, u okviru displej liste-roditelj.Hijerarhijska displej lista je korisna za objekat koji jesastavljen od komponenata, naročito ako neke od ovihkomponenata se koriste više od jedanput.Brisanje ( deletion): ovim se displej lista eliminira.3


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJATRANSFORMACIONA MATRICAKonverzija koordinata iz jednog koordinatnog sistema udrugi je bitna u izračunavanju lokacija projekcija tačaka naobjekat u prostoru. Prvo, mi treba da sračunamo koordinatetačaka na objektu za vanjski koordinatni sistem ( wcs) iznjegovog model koordinatnog sistema ( mcs). Tekućapozicija objekta je obićno specificirana kao: koliko je putaobjekat bio transliran i rotiran od svoje inicijalne pozicije,kod koje njegov modelni koordinantni sistem koincidira savanjskim kooridinatnim sistemom. Time, vanjske koordinatetačaka na objektu u tekučoj lokaciji se dobiju translacijom irotacijom odgovarajućih tačaka kod inicijalne pozicije, gdjenjegov model koordinatni sistem koincidira sa vanjskimkoordinatnim sistemom. Na taj način, vanjske koordinatetačaka na objektu kod tekuče lokacije, se dobiju satranslacijom i rotacijom odgovarajućih tačaka kod inicijalne4


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJApozicije gdje su njegove modelne koordinate iste kao ivanjske koordinate. Većina grafičkih biblioteka izvršavainterno ove transformacije, i grafički programer može trebatida obezbjedi samo dio translacije i rotacije svakog objekta.Medjutim, mi još uvjek moramo da razumijemo jasnotransformaciju da bi bili u stanju da crtamo objekte nanjihovim 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 primjenitina koordinate tačaka za ove translacije i rotacije u nastavku.Kada smo dobili vanjske koordinate svih tačaka jednogobjekta u njegovoj tekučoj poziciji, mi treba da izvedemokoordinate istih tačaka u odnosu na koordinatni sistemgledanja ( vcs). Ova konverzija koordinata izmedju različitihkoordinatnih sistema se naziva mapiranje. Mapiranje5izmedju vanjskog koordinatnog sistema i k.s gledanja ( vcs)


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAse obićno realizuje interno od strane grafičke bibliotekekada programer obezbjedi informaciju kao što je lokacijatačke gledanja( viewpoint), lokacija gledanja ( viewsite), ismjer 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, odsvoje početne pozicije kod koje njegov model koordinatnisistem koincidira sa vanjskim koordinatnim sistemom ( wcs),( vidjeti na narednoj slici), vanjske koordinate tačke ( wcs) naobjektu u novoj poziciji( X w , Y w , Z w ) se dobiju kao:( 3.3)6


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAU ovoj jednačini ( 3.3), X m , Y m i Z m su takodjer modelnekoordinate od iste tačke. Jednačina (3.3) se može izraziti uslijedećoj formi, koristeći matrične operacije :7


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAJednačina (3.4) se može lako verificirati da je ista kao ijednačina (3.3) jednostavnom ekspanzijom. Dodatna operacijau jednačini (3.3) se može izraziti kao operacija multiplikacije ujednačini ( 3.4) korištenjem homogenih koordinata kojepredstavljaju trodimenzionalni vektor sa četiri skalara umjestotri . Matrica koja se koristi da transformira homogene koordinatese naziva homogena transformaciona matrica. Zbog toga,transformaciona matrica na desnoj strani jednačine (3.4) ,označena kao Trans( a.b.c) je homogena transformacionamatrica za translaciju. Ako tačka u dvije dimenzije treba dabude transformirana, ili translirana kao u ovom slučaju,homogena transformaciona matrica će se reducirati na 3 x 3matricu eliminišući treči red i treču kolonu iz 4 x 4 homogenetransformacione matrice. Biće primjenjena na koordinate tačkekoja je predstavljena sa 3 x 1vektorom kolonom, dobijenimeliminacijom z koordinata iz 4 x 1 trodimenzionalnih homogenih 8


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAkoordinata.ROTACIJAPredpostavimo da je objekat rotiran za q oko X osevanjskog koordinatnog sistema( wcs) zajedno sa svojimmodelnim koordinatnim sistemom ( koji ponovno koincidirasa vanjskim k.s kod početne pozicije, kao što je prikazanona narednoj slici). Vanjske koordinate tačke na objektu unovoj poziciji, ( X w , Y w , Z w ) , se mogu dobiti iz svojihoriginalnih koordinata, ( X m , Y m , Z m ) , kako slijedi: Ovdje (X m , Y m , Z m ) su koordinate tačke u odnosu na modelnikoordinatni sistem, i time su one jednake sa svojimvanjskim koordinatama prije rotacije.9


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJARotacija oko x oseRelacija izmedju ( X w , Y w , Z w ) i ( X m , Y m , Z m ) postajejasnija kada se prethodna slika projektuje na yz ravan kakoje prikazano na narednoj slici:10


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAIz ove slike se lako mogu dobiti slijedeće jednačine:11


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAjednač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.12


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAHomogena 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).13


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJATransformacione matrice opisane u ovom poglavlju suobićno izvedene iz prodruženih rutina u grafičkimbibliotekama. Posmatrajmo neke primjere da pojasnimoobjašnjenja za transformacionu matricu.Objekat u prostoru se translira za 5 jedinica u y smjeruvanjskog koordinatnog sistema ( wcs), i nakon toga rotira90 stepeni oko x ose vanjskog koord. sistema ( wcs). Akotačka na objektu ima koordinate ( 0,0,1) u odnosu na njenmodelni koord. sistem ( mcs), koje će biti vanjskekoordinate iste tačke nakon translacije i rotacije?14


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAOdgovorKoordinate ( X w’ , Y w’ , Z w’ ) nakon translacije se mogu dobitisa:Nakon toga kada se primjeni rotacija:Dakle, koordinate nove tačke će biti ( 0, -1, 5). Primjetimo dajednačine ( a) i (b) se mogu objediniti kako slijedi:Jednačina (c) je mnogo praktičniji izraz, naročito kadakoordinate brojnih tačaka se trebaju izračunati.15


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAU tom slučaju, transformacione matrice Rot( x,90) iTrans(0,5,0) , su unaprijed pomnožene da dajuekvivalentnu transformacionu matricu, i nakon togarezultirajuča matrica se primjenjuje na sve tačke koje suuključene. Ovaj proces računanja ekvivalentnetransformacione matrice sa množenjem pridruženihtransformacionih matrica u odgovarajučoj sekvenci senaziva sastavljanjem ( concatenation). Ovaj proces jejedan od beneficija korištenja homogenih koordinata, kojeomogućuju translaciju da se izrazi sa množenjem matricaumjesto sa dodavanjem.16


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAPrimjer br 2Objekat u prostoru je rotiran 90 stepeni oko ose koja jeparalelna sa x osom vanjskog koordinatnog sistema, iprolazi kroz tačku koja ima vanjske koordinate ( wcs) (0,0,1). Koje će biti vanjske koordinate ( wcs) iste tačkenakon rotacije?17


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ći18transformacije korak po korak, kao i u prethodnom primjeru.


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAEkspandirajući jednačinu (d) dobićemo:MAPIRANJEMapiranje uključuje izračunavanje koordinata tačke uodnosu na koordinatni sistem iz poznatih koordinata, od istetačke u odnosu na drugi koordinatni sistem.Posmatrajmo dva koordinatna sistema prikazana nanarednoj slici. Da bi to uradili, predpostavljamo da sukoordinate ( X 2 , Y 2 i Z 2 ) tačke P u odnosu na x 2 , y 2 i,z 2koordinatni sistem treba da budu sračunate u odnosu na19


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAx 1 y 1 z 1 koordinatni sistem.Nadalje, za ( X 2 , Y 2 , Z 2 ) se predpostavlja da su sračunateprimjenjujući transformacionu matricu T 1-2 na ( X 1 , Y 1 i Z 1 )kako slijedi:20


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAZamjenjujući T 1-2 sa njegovim elementima dozvoljavajednačini ( 3.11) da bude izražena kao:Da bi izveli elemente u jednačini (3.12) mi prvo zamjenjujemoX 1 = 0, Y 1 = 0, i Z 1 =0, i dobijemo:21


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJADakle, mi možemo reći da p x , p y i p z su dobijene kaokoordinate početka od x 1 y 1 z 1 koordinatnog sistema uodnosu na x 2 y 2 z 2 koordinatni sistem.Mi sada zamjenjujemo vrijednosti od X 1 = 1, Y 1 = 0 i Z 1 = 0 ujednačinu ( 3.13) i dobijamo:Oduzimajući jednačinu (3.13) od jednačine (3.14), mimožemo zaključiti da n x , n y i n z su respektivno , x 2 , y 2 i z 2komponente jediničnog vektora duž x 1 ose od x 1 y 1 z 1koordinatnog sistema. Dakle, n x , n y i n z se lako izvode izrelativne orjentacije izmedju dva koordinatna sistema kojasu uključena. Slično o x , o y i o z su x 2 , y 2 i z 2 komponenteod y 1 ose i a x , a y i a z su one od z 1 ose.22


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAvrijednost koordinata.Transformaciona matrica u jednačini ( 3.15) se koristi kadaobjekat se skalira u odnosu na koord. početak. Medjutim,često je poželjno da se skalira objekat u odnosu na tačku Pna objektu predstavljenu sa ( X p , Y p , Z p ). U ovom slučaju,translaciona transformacija, Trans(- X p , -Y p , -Z p ) seprimjenjuje prvo tako da se referentna tačka za skaliranjepomjera u koord. početak, nakon toga skalirajuća matrica ujednačini ( 3.15) se primjenjuje, i konačno Trans(X p , Y p , Z p )se primjenjuje da se pomjeri objekat natrag u svojuoriginalnu poziciju.Sa xy ravni kao ogledalom, zrcalna refleksija se možepostiči sa slijedećom transformacionom matricom, poštosamo znak z koordinate se treba reverzirati:24


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJATransformaciona matrica za druge zrcalne refleksije, sa yzravni ili xz ravni kao ogledalom, se može izvesti na istinačin.25


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAOTKLANJANJE 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).26


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJASlika prije nego što su skrivene linije otklonjeneSlika nakon što su skrivene linije otklonjene27


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJARazlozi za otklanjanje skrivenih linija i površina su ne samozbog bolje preglednosti i jasnije vidljivosti objekata na sceninego i da se uštedi vrijeme iscrtavanja od strane CPU (GPU ) ovih objekata jer crtanje pologonalnih lica kozumiraprocesorska vremena. Zato treba crtati i renderisati samoona lica i objekte koje vidimo. Površine i linije koje nevidimo su :- zasjenjene površine i linije- zadnja lica objekata ( back faces culling)- lica i površine van volumena gledanja ( tkz viewingfrustum culling .Takodjer da bi se izvršilo korektno renderisanje ( sjenćenje) potrebno je izračunati korektno i koje su površine vidljive akoje nisu. Kada više punih ( neprovidnih ) poligona pokrivaistu površinu ekrana , samo one koje su nabliže tački28


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAgledanja ( tj. oku posmatrača ) su vidljive i ostale trebaju bitiotklonjene kao što se vidi sa slijedeće slike :nekorektni prikaz scene korektan prikaz sceneDakle potrebno je:- odrediti koji su objekti vidljivi u oku posmatrača- odrediti koje boje koristiti da se oboje pikseli na ekranu29


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAU nastavku, ćemo pogledati nekoliko tipičnih algoritama zaeliminiranje skrivenih linija i površina, korištenjemsoftverskih algoritama kao i metoda za korištenje z-baferaza istu namjenu.Back-face algoritam otklanjanjaBack-face ( stražnje lice) algoritam , koristi osnovnu idejuda je lice objekta vidljivo ako njegov normalni vektor usmjeru van objekta je usmjeren prema posmatraču, a inačeje nevidljivo. Slućaj kada je lice nevidljivo i usmejeno nasuprotnu stranu od smjera posmatrača je prikazan nanarednoj slici:30


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAOdstranjivanje stražnjih lica je podržano u OpenGL. Ako ganadjemo nećemo ga iscrtavati niti renderisati pošto se licana sceni izložena različitim izvorima svjetla najčešće sjenčeradi realističnosti scene. Kako ćemo detektovati ovostražnje lice?Postupak je prikazan na slijedećoj slici:MF 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 F31


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJADva vektora u relaciji prema vidljivosti licaIf M . N > 0, tada je lice vidljivoIf M . N = 0, tada je lice prikazano kao linijaIf M . N < 0, tada je lice nevidljivo32


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJATakodjer se odstranjuju i svi objekti koji su van volumenagledanja ( viewing frustum ).Ovo odstranjivanje se realizuje preko 3D algoritmaodsjecanja ( napr. 3D clipping algorithm Liang – Barsky)33


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAOvi 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 objekta34


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAIsta situacija se pojavljuje sa više od jednim konveksnimobjektom kada lice jednog objekta može biti zasjenjenodrugim objektom mada je lice usmjereno ka posmatraču.Zbog toga back-face algoritam se može primjeniti samo najedan konveksan objekat. Nadalje, algoritam ne možemanipulirati sa objektom kao što je onaj pokazan nanarednoj slici, pošto normalni vektor usmjeren prema vanisvakog lica se ne može jednoznačno ( unambiguously)odrediti.Objekat čiji normalni vektor prema vani nije odredjen jednoznačno35


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAAko objekat ima neplanarna lica ( površine), vrijednost N zasvaku neplanarnu površ će se promjeniti, zavisno od togana koju tačku na licu je izabran, a znak od M . N će setakodjer promjeniti. Ovo znači da lice ima vidljivi dio inevidljvi dio u isto vrijeme. Zato, lice treba biti podjeljenoduž krive na licu koja slijedi tačke M . N = 0. Kriva duž kojeje M . N = 0 se naziva linija siluete (silhouette line). Kada selice podjeli duž linije siluete, znak M . N za podjeljenisegment se istražuje za bilo koju reprezentativnu tačkuizabranu iz svakog segmenta. Ovaj proces se može pojavitida je lagan, ali izračunavanje linija silueta nije jednostavanzadatak, i time najveća prednost back-face algoritma- tjjednostavnost implementacije je izgubljena.Nakon što su sva lica identificirana kao vidljiva ili nevidljiva,ivice vidljvih lica se prikazuju da generišu sliku crtanja linija36


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAsa otklonjenim sakrivenim linijama. Ako se želi slika saotklonjenim sakrivenim površinama, vidljive površine sejednostavno 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 ipune sa njihovim odgovarajučim bojama od najudaljenijeglica ka najbližem licu. Slikanjem površina ovimredoslijedom, najudaljenije površine se automatskisakrivaju od strane bližih površina ako će one zauzimati istiregion ekrana. Dakle, dubinski algoritam sortiranja jealgoritam otklanjanja sakrivenih površina. Rastojanjepovršine od posmatrača se mjeri sa z koordinatama tačaka37na površini, u odnosu na koordinatni sistem posmatranja.


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA38


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJATo znači, tačka sa većom Z v koordinatom se može reći daje bliža posmatraču. ( Medjutim u OpenGL tačka sa većomvrijednošću Z v koordinate je dalje od posmatrača poštoOpenGL koristi lijevoruki koordinatni sistem posmatrača (vcs).( Napomena : z koordinata u odnosu na koordinatnisistem posmatrača ( vcs) će se označiti sa Z v ) .Dakle, samo je potrebno da poredimo Z v koordinatepovršina koje treba nacrtati i prikazati površine u sekvencistartujuči od površine sa najmanjom Z v koordinatom.Poredjenje Z v koordinata izmedju dvaju površina bi bilojednostavno ako bi maksimalna Z v vrijednost jedne površinebila manja od minimuma Z v vrijednosti druge površine.Medjutim, u većini slučajeva, opseg Z v vrijednosti svihtačaka na površini prekriva Z 39v opseg druge površine.


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAOve dvosmislene situacije se mogu izbjeći razdjelujućisvaku od površina u dva ili nekoliko komada sve dok Z vopsezi se ne preklapaju. Postoji još jedan, jednostavannačin, da se prevazidje problem, kojeg je lakše iimplementirati. Kod ovog metoda, svaka površina objekatase unaprijed konvertuje u skup malih trouglova tako da Z vopseg svakog trougla se ne preklapa sa bilo kojim drugim, inakon toga svaki trougao se boji sa pridruženom bojom ukorektnoj sekvenci. Kako se veličine trouglova smanjuju,postoji manja vjerovatnoća da Z v opsezi će se preklopiti.Ova aproksimacija objekta ograničenog sa mnogo trouglovase zove trijangulacija ili konverzija faceta. ( triangulation orfacet conversion).40


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAz – 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, Z v 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.Z v 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.41


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJALica čiji su normalni vektori usmjereni od posmatrača sunevidljiva, tako da samo lica čiji su normalni vektoriusmjereni prema posmatraču se skupljaju i projektuju naekran. Medjutim, za razliku od algoritma dubinskogsortiranja, površine se projektuju u slučajnom redoslijedu.Razlog će postati jasniji kako idemo kroz slijedećuproceduru.Prvo, svaka proizvoljna površina se projektuje, i memorijskelokacije z- bafera koje odgovaraju pikselima pridruženim saprojektovanom slikom se setuju sa Z v vrijednostimaodgovarajućih tačaka na površini,42


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJApredstavljenoj 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, pohranjeneZ v vrijednosti ovih piksela se porede sa Z v vrijednostimatačaka na tekučoj površini, predstavljenoj sa istimpikselima. Ako pohranjene Z v 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 Z v 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 na43


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAekranu sa bojom najbliže površine, kao što je pokazano nanarednim slikama:Princip z-bafer metoda44


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJASumirajuć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 Z v kao i ranije. Dakle, ova operacija imaefekat postavljanja Z v vrijednosti korektno, bez prikazivanjapovršina. Nakon toga, granične ivice površina se projektujuna ekran. Dok se ove ivice projektuju, Z v vrijednosti pikselakoji predstavljaju ivice se porede sa Z v vrijednostima većpostavljenim od strane površina, i samo pikseli saoriginalnim Z v vrijednostima se ažuriraju. Na ovaj način,dijelovi graničnih ivica koji se zamagljeni od strane površina45


OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJAneće biti prikazani. Ova procedura daje korektno crtanjelinija – bez skrivenih linija. Medjutim, neke granične linijemogu postati isuviše tanke pošto neki od piksela svakegranične linije mogu biti zauzeti od strane površina kojedijele graničnu liniju. Mi možemo lako riješiti ovaj problempomjerajući čitav objekat bliže ka nama, u malim iznosima,kada projektujemo granične linije.46

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!