ra cunarska gra ka vidljivost -...

29
Raˇ cunarska grafika Vidljivost Vesna Marinkovi´ c Vesna Marinkovi´ c Raˇ cunarska grafika Vidljivost 1 / 29

Upload: vuxuyen

Post on 24-Mar-2019

216 views

Category:

Documents


0 download

TRANSCRIPT

Racunarska grafikaVidljivost

Vesna Marinkovic

Vesna Marinkovic Racunarska grafika Vidljivost 1 / 29

Problem vidljivosti

Problem vidljivosti

Renderovati ili ne, pitanje je sad...

Vesna Marinkovic Racunarska grafika Vidljivost 2 / 29

Problem vidljivosti

Klasifikacija algoritama za utvrđivanje vidljivosti

Problem vidljivosti je fundamentalni problem u racunarskoj grafici

Dva smera pristupa problemu

određivanje vidljivih povrsi (visible surface derermination)odbacivanje skrivenih povrsi (hidden surface removal)

Algoritmi za određivanje vidljivosti se na osnovu odnosa kvaliteta ibrzine mogu klasifikovati na:

tacne (precizne) – garantuju dobijanje tacnog rezultatakonzervativne – odbacuju se delovi scene koji sigurno nisu vidljivi, cilj jepovecati efikasnostpriblizne – efikasniji, ali mogu da pogrese “u oba smera” (nesto se vidiiako nije vidljivo i obratno)

Cesto se vrsi kombinovanje prva dva pristupa

Vesna Marinkovic Racunarska grafika Vidljivost 3 / 29

Problem vidljivosti

Klasifikacija algoritama za utvrđivanje vidljivosti

Algoritmi koji garantuju tacnostrej kasting algoritamalgoritam zasnovan na baferu dubine

Konzervativni algoritmiodbacivanje zadnje strane (nalicja) objekta – kod cvrstih, neprozirnihtelaodbacivanje dela van frustuma pogledablokirajuce odbacivanje

Vesna Marinkovic Racunarska grafika Vidljivost 4 / 29

Problem vidljivosti

Odbacivanje zadnje strane objekta

Kako odrediti zadnju stranu objekta?Pretpostavimo da je posmatrac u tacki Q van zatvorene mrezepoligonaNeka je P neko teme poligona i n vektor normale tog poligonaPoligon je sa prednje strane u odnosu na Q ako se Q nalazi upozitivnoj poluravni poligona: (Q − P) · n > 0Poligon je sa zadnje strane u odnosu na Q ako se Q nalazi unegativnoj poluravni poligona: (Q − P) · n < 0Poligon je na konturi krive koja razdvaja prednju i zadnju stranu akoje: (Q − P) · n = 0

Vesna Marinkovic Racunarska grafika Vidljivost 5 / 29

Problem vidljivosti

Jos jedna klasifikacija algoritama za utvrđivanje vidljivosti

Image-precision

za svaki piksel određuje se koji od objekata je vidljivza svaki piskel određuje se objekat najblizi posmatracu i piksel se bojiodgovarajucom bojom

Object-precision

za svaki objekat se određuje deo objekta koji je vidljivobjekti se međusobno porede i eliminisu se kompletni objekti ili delovikoji nisu vidljivi

Vesna Marinkovic Racunarska grafika Vidljivost 6 / 29

Problem vidljivosti

Primarna vidljivost

Primarna vidljivost je vidljivost između tacke sa otvora kamere i tackena sceniDaje informaciju koje povrsi emituju ili razbacuju svetlost ka kameri ione su jedine povrsi koje direktno uticu na slikuTacke koje nisu vidljive iz oka kamere mogu da uticu na sliku –primarna vidljivost nije dovoljna!Vidljivost se definise ne samo za oko kamere i tacku sa scene vec zaproizvoljan par tacaka

Vesna Marinkovic Racunarska grafika Vidljivost 7 / 29

Problem vidljivosti

Funkcija vidljivosti

Funkcija vidljivosti V (P,Q) za tacke P i Q na sceni ima vrednost 1ako ne postoji presek između scene i otvorene duzi (P,Q), a inace jeV (P,Q) = 0

Nekada je pogodnije razmatrati funkciju blokiranjaH(P,Q) = 1− V (P,Q)

Za funkciju vidljivosti vazi svojstvo simetricnosti: V (P,Q) = V (Q,P)

V (P,A) = 1, V (P,B) = V (P,C ) = V (P,D) = 0

Vesna Marinkovic Racunarska grafika Vidljivost 8 / 29

Problem vidljivosti

Upit preseka

Upit preseka je zadatak određivanja prve tacke preseka zraka sapocetkom u tacki P u smeru ω

Takva tacka (oznacimo je sa X ) razdvaja zrak na dva dela

Mozemo definisati funkciju vidljivosti f kao funkciju rastojanja odtacke PNeka je f (t) = V (P,P + ωt)

za 0 ≤ t ≤ |X − P| vazi f (t) = 1za t > |X − P| vazi f (t) = 0

Izracunavanje funkcije vidljivosti se svodi na resavanje upita preseka

Vesna Marinkovic Racunarska grafika Vidljivost 9 / 29

Problem vidljivosti

Rej kasting (rej trejsing) algoritam

Rej kasting algoritam utvrđuje da li je neka povrs vidljiva pracenjemimaginarnog zraka svetlosti od oka kamere do objekta na sceniZa dato oko kamere i prozor proizvoljne ravni pogleda (koji jepodeljen pravilnom mrezom tako da elementi odgovaraju pikselimapotrebne rezolucije) za svaki piksel se prati po jedan zrak od centraprojekcije kroz sam piksel do najblizeg objekta na sceniBoja piksela se postavlja na boju najblizeg objektaTipican primer image-precision algoritma

centar projekcije

prozor

Vesna Marinkovic Racunarska grafika Vidljivost 10 / 29

Problem vidljivosti

Rej kasting (rej trejsing) algoritam

Rej kasting algoritam predstavlja direktan odgovor na upit preseka

Optimizacije algoritma

optimizacija izracunavanja presekakoristi se koherentnost da se izbegnu nepotrebna izracunavanja presekakoristi se hijerarhijsko uređenje da se izbegnu nepotrebna izracunavanjapreseka

Direktna primena algoritma bila bi linearne slozenosti po brojuobjekata za svaki zrak

Raj kasting algoritam koristi napredne (prostorne) strukture podatakada bi se popravila slozenost algoritma

Vesna Marinkovic Racunarska grafika Vidljivost 11 / 29

Problem vidljivosti

Binarno stablo prostornog particionisanja

Binarno stablo prostornog particionisanja (BSP stablo) je strukturapodataka koja se koristi za uređivanje geometrijskih primitiva naosnovu njihovog polozaja i dometa

Algoritam za nalazenje prvog preseka između zraka i primitivezasnovan na BSP stablu ima u proseku logaritamsku slozenost ufunkciji broja primitiva

Moze se iskoristiti da ubrza rej kasting algoritam

Vesna Marinkovic Racunarska grafika Vidljivost 12 / 29

Problem vidljivosti

Binarno stablo prostornog particionisanja

Svaki unutrasnji cvor odgovara jednoj ravni razdvajanja (koja nije deogeometrije scene), a list geometrijskoj primitivi na sceniRavan razdvajanja deli prostor na dva poluprostora: pozitivnipoluprostor i negativni poluprostorPozitivni poluprostor sadrzi sve tacke sa ravni razdvajanja, kao i tackesa one strane ravni razdvajanja kojoj pripada vektor normale te ravni,a negativni poluprostor sve tacke sa ravni razdvajanja i sa stranesuprotne od vektora normale ravni

Vesna Marinkovic Racunarska grafika Vidljivost 13 / 29

Problem vidljivosti

Binarno stablo prostornog particionisanja

Oba poluprostora bice dalje podeljena dodatnim ravnima, sve doksvaka primitiva ne bude razdvojena od ostalih barem jednom ravni

Unutrasnji cvor BSP stabla ima najvise dva sina, koje oznacavamopozitivnim i negativnim

Algoritam konstrukcije stabla garantuje da pozitivno podstablo sadrzisamo primitive koje su u pozitivnom poluprostoru u odnosu na turavan, a negativno samo one koje su u negativnom poluprostoru

Ako primitiva sa scene preseca ravan razdvajanja, onda je algoritamdeli na dve primitive u odnosu na tu ravan

Vesna Marinkovic Racunarska grafika Vidljivost 14 / 29

Problem vidljivosti

Ilustracija algoritma

Vesna Marinkovic Racunarska grafika Vidljivost 15 / 29

Problem vidljivosti

Pseudokod algoritma

function V(P,Q):

return !sece(P,Q,cvor)

function sece(P,Q,cvor):

ako je cvor list:

return (da li PQ sece primitivu u cvoru cvor)

blizi = cvor.pozitivniSin

dalji = cvor.negativniSin

if P je u negativnom poluprostoru cvora:

// negativna strana ravni je bliza tacki P

zameni blizi, dalji

if sece(P,Q,blizi):

// zaustavlja se ranije jer je pronadjen presek

return true

if P i Q su u istom poluprostoru u cvoru:

// segment PQ se ne pruza u dalji poluprostor

return false

// nakon pretrage blize strane, rekurzivno trazimo presek u daljoj strani

return sece(P,Q,dalji)

Vesna Marinkovic Racunarska grafika Vidljivost 16 / 29

Problem vidljivosti

Bafer dubine

Bafer dubine (ili z-bafer) je dvodimenzioni niz koji odgovara slici kojase renderuje

U najjednostavnijoj varijanti, bafer dubine za svaki piskel sadrzi pojedan uzorak boje i po jedan skalar koji daje neku meru rastojanjacentra projekcije od povrsi koja boji piksel

Vesna Marinkovic Racunarska grafika Vidljivost 17 / 29

Problem vidljivosti

Bafer dubine

Primene bafera dubine prilikom određivanja vidljivosti

dok se scena renderuje, bafer dubine sadrzi implicitnu informaciju outvrđivanju vidljivih povrsi. Nova povrs moze da pokrije uzorak samoako je njena dubina u odnosu na kameru manja od one sadrzane ubaferu dubinenakon sto se scena renderuje, bafer dubine opisuje prvi presek sascenom za svaki zrak iz centra projekcijenakon sto se scena renderuje, bafer dubine moze da direktno izracunafunkciju vidljivosti za tacku Q u odnosu na centar projekcije na sledecinacin: V ((0, 0, 0),Q) = 1 akko je vrednost dubine u tacki projekcije Qmanja od dubine Q

Vesna Marinkovic Racunarska grafika Vidljivost 18 / 29

Problem vidljivosti

z-bafer algoritam

Catmull, 1974.

Pripada grupi image-precision algoritama

Zahteva postojanje z-bafera za cuvanje z-vrednosti za svaki piksel

Sve vrednosti u frejm baferu su incijalizovane na boju pozadine, a svevrednosti u z-baferu su inicijalizovane na -1 (kao na z-koordinatuzadnje ravni odsecanja). Maksimalna moguca vrednost u z-baferu jez-koordinata prednje ravni odsecanja

Na sve poligone (nije bitan poredak) koji reprezentuju scenuprimenjuje se algoritam scan-konverzije

Prilikom scan-konverzije za tacku (x , y), ako ta tacka nije odposmatraca dalja od tacke koja je trenutno u baferu, onda vrednostite tacke zamenjuju postojece vrednosti u baferima

Vesna Marinkovic Racunarska grafika Vidljivost 19 / 29

Problem vidljivosti

Pseudokod algoritma

Procedure zBuffer

var

pz: integer;

begin

for y:=0 to YMAX do

for x:=0 to XMAX do

begin

WritePixel(x,y,background_value);

WriteZ(x,y,-1)

end

za svaki poligon uradi sledece

za svaki piksel u projekciji poligona uradi sledece

begin

pz := z-vrednost poligona u tacki sa koordinatama (x,y);

if pz>=ReadZ(x,y) then

begin { ova tacka nije dalja }

WriteZ(x,y,pz);

WritePixel(x,y,boja poligona u tacki (x,y))

end

end

end.

Vesna Marinkovic Racunarska grafika Vidljivost 20 / 29

Problem vidljivosti

Primer rada z-bafer algoritma

Vesna Marinkovic Racunarska grafika Vidljivost 21 / 29

Problem vidljivosti

Karakteristike z-bafer algoritma

Nije potrebno sortiranje objekata pre primene algoritma

Poligoni se pojavljuju na slici redom kojim se obrađuju

z-bafer algoritam ne zahteva nuzno da primitivne povrsi budu poligoni

z-bafer podaci (zajedno za oba bafera) mogu da budu cuvani zajednosa generisanom slikom i da se toj sceni naknadno doda novi objekat

Vesna Marinkovic Racunarska grafika Vidljivost 22 / 29

Problem vidljivosti

Algoritmi sa listama prioriteta

Algoritmi sa listama prioriteta implicitno resavaju problem vidljivostitako sto renderuju elemente scene u redosledu od udaljenijih ka blizim

Zaklonjeni objekti imaju visi prioritet te se prvi renderuju i bicenaknadno sakriveni objektima koji se kasnije renderuju

Danas se ovi algoritmi ne koriste cesto jer su razvijene bolje alternative

Jednostavnost implicitnog utvrđivanja vidljivosti koriscenjem prioritetacini ih korisnim za neke specijalne namene

Vesna Marinkovic Racunarska grafika Vidljivost 23 / 29

Problem vidljivosti

Slikarev algoritam

Proces stvaranja slike: slikar prvo slika nebo, preko neba planine kojezaklanjaju nebo, zatim kucu ispred planina, a ispred kuce drvo

Prema analogiji sa ovim postupkom, ovakav algoritam se uracunarskoj grafici naziva slikarev algoritam

Vesna Marinkovic Racunarska grafika Vidljivost 24 / 29

Problem vidljivosti

Slikarev algoritam

Zaklanjanje i vidljivost se postizu tako sto se boje daljih tacaka“pregaze” bojama blizih tacaka

Ovu ideju mozemo primeniti na:

pojedinacne piksele – neefikasno ali tacnocele primitive, npr. trouglove – efikasnije, ali postoje situacije kada ovonije moguce uraditi

Moze se dozvoliti podela primitiva tamo gde se njihove projekcije seku

Vesna Marinkovic Racunarska grafika Vidljivost 25 / 29

Problem vidljivosti

Algoritam sortiranja dubine

Modifikacija slikarevog algoritma koja garantuje ispravno renderovanje

Pripada grupi object-precision algoritama

Algoritam se sastoji od cetiri koraka:1 svakom poligonu dodeliti kljuc sortiranja koji je jednak z- vrednosti

temena koje je najdalje od oblasti za prikaz2 sortirati sve poligone od najudaljenijeg do najblizeg prema vrednosti

kljuca3 otkriti slucajeve kada dva poligona imaju dvosmisleno uređenje –

ovakve poligone deliti sve dok delovi nemaju eksplicitno uređenje ipostaviti ih na pravo mesto u sortiranoj listi

4 renderovati poligone u redosledu prioriteta, od najudaljenijeg donajblizeg

Vesna Marinkovic Racunarska grafika Vidljivost 26 / 29

Problem vidljivosti

Algoritam sortiranja dubine – testovi

Poligoni se obrađuju jedan po jedan, od najudaljenijeg ka najblizem

Za tekuci poligon P koji je najdalji od posmatraca mora da se ispitasvaki poligon Q za koji se z koordinate preklapaju sa z koordinatamapoligona P, da bismo bili sigurni da poligon P ne moze da zakloni Q ida se poligon P stoga moze iscrtati pre poligona Q

Na poligone P i Q se primenjuje sledeca lista testova1 da li se x koordinate dva poligona ne preklapaju (tj. ne postoje tacke u

P i Q sa istom x koordinatom)?2 da li se y koordinate dva poligona ne preklapaju (tj. ne postoje tacke u

P i Q sa istom y koordinatom)?3 da li je citav P sa suprotne strane ravni poligona Q u odnosu na

posmatraca?4 da li je citav Q sa iste strane ravni poligona P kao i posmatrac?5 da li su projekcije poligona P i Q na projekcionu ravan disjunktne?

Vesna Marinkovic Racunarska grafika Vidljivost 27 / 29

Problem vidljivosti

Algoritam sortiranja dubine – testovi

Ako bar jedan od testova uspe, onda se poligon P isrtava i sledecipoligon dobija ulogu poligona P

Ako nijedan od ovih testova ne uspe, onda se poligoni P i Qpotencijalno preklapaju, te proveravamo da li se poligon Q mozeiscrtati pre poligona P

Testove 1, 2 i 5 ne treba ponavljati, a testove 3 i 4 treba ponoviti sazamenjenim ulogama poligona P i Q:

3 da li je citav Q sa suprotne strane ravni poligona P u odnosu naposmatraca?

4 da li je citav P sa iste strane ravni poligona Q kao i posmatrac?

Ako jedan od ovih testova uspe, onda poligoni Q i P zamenjuju uloge

Vesna Marinkovic Racunarska grafika Vidljivost 28 / 29

Problem vidljivosti

Algoritam sortiranja dubine – testovi

(a) (b) (c)

x

zx

y

x

y

Slika (a) ilustruje situaciju kada uspeva test 3

Za poligone sa slike (b) ne uspeva nijedan test

Tri poligona sa slike (c) ilustruju mogucnost beskonacne petlje

Vesna Marinkovic Racunarska grafika Vidljivost 29 / 29