ra cunarska gra ka vidljivost -...
TRANSCRIPT
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
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