RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI...

46
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.

Transcript of RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI...

Page 1: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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.

Page 2: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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.

Page 3: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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.

Page 4: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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

Page 5: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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)

Page 6: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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)

Page 7: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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 :

Page 8: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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

Page 9: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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.

Page 10: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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:

Page 11: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

11

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Iz ove slike se lako mogu dobiti slijedeće jednačine:

Page 12: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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.

Page 13: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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).

Page 14: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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?

Page 15: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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.

Page 16: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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.

Page 17: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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?

Page 18: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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.

Page 19: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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

Page 20: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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:

Page 21: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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:

Page 22: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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.

Page 23: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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

Page 24: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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:

Page 25: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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.

Page 26: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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).

Page 27: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

27

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Slika prije nego što su skrivene linije otklonjene

Slika nakon što su skrivene linije otklonjene

Page 28: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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

Page 29: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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

Page 30: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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:

Page 31: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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

Page 32: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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

Page 33: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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)

Page 34: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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

Page 35: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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

Page 36: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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

Page 37: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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.

Page 38: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

38

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

Page 39: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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.

Page 40: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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).

Page 41: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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.

Page 42: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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,

Page 43: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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

Page 44: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

44

OSNOVNI KONCEPTI GRAFIČKOG PROGRAMIRANJA

ekranu sa bojom najbliže površine, kao što je pokazano na

narednim slikama:

Princip z-bafer metoda

Page 45: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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

Page 46: RAC- ARH -4 .pptpeople.etf.unsa.ba/~asalihbegovic/Arhitektura/LECTURE-5.pdf · 2 OSNOVNI KONCEPTI GRAFI ČKOG PROGRAMIRANJA Displej lista OpenGL je dizajnirana da optimizira performansu

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.