149
OSNOVNI PRINCIPI KOMPJUTERSKE GRAFIKE Selma Rizvić, Vensada Okanović

OSNOVNI PRINCIPI KOMPJUTERSKE GRAFIKE Selma Rizvić ...srizvic/Racunarska_grafika_knjiga_rukopi… · komponente. Kada se smjesti u memoriju, rasterska slika se može prikazati tako

  • Upload
    others

  • View
    6

  • Download
    1

Embed Size (px)

Citation preview

  • OSNOVNI PRINCIPI KOMPJUTERSKE GRAFIKE

    Selma Rizvić, Vensada Okanović

  • 2

    UVOD

    Kompjuterska grafika je svuda oko nas. Danas je život nemoguće zamisliti bez televizije, Interneta, smartphona i ostalih uređaja u čije displeje satima gleda većina ljudi, žena i djece. Svaki od ovih uređaja posjeduje displej na kojem se slika prikazuje pomoću alata i algoritama kompjuterske grafike. Osnovna namjena ove knjige je da posluži kao udžbenik studentima III godine dodiplomskog studija Elektrotehničkog fakulteta u Sarajevu iz predmeta Računarska grafika. Međutim, nadamo se da će biti interesantna i drugim čitaocima koje ova oblast zanima. Primijetićete da kompjuterska grafika ovdje nije opisana kroz grafičko programiranje. Smatramo da je ta oblast toliko široka da zaslužuje posebnu knjigu. Naš cilj je da se čitaoci upoznaju sa osnovnim principima kompjuterske grafike, kako bi kasnije samostalno mogli istraživati neke od njenih mnogobrojnih podoblasti. U knjizi opisujemo osnove rasterske i vektorske grafike, osnovne tehnike 3D modeliranja, teoriju boje i osnove grafičkog dizajna, interakciju čovjek računar i razvoj korisničkih interfejsa, osnove razvoja kompjuterskih igara, te HTML5, Spider GL i Unity 3D kao alatke za implementaciju interaktivne grafike na Internetu.

  • 3

    1. RASTERSKA I VEKTORSKA GRAFIKA

    Većina slika u kompjuterskoj grafici su predstavljene korisniku na nekoj vrsti rasterskog displeja [1]. Rasterski displeji prikazuju slike kao četverougaone nizove pixela. (Skraćenica PIXEL potiče od "picture element", tj osnovni element slike.) Kao primjer možemo uzeti kompjuterski ekran ili televizor, koji imaju četverougaoni niz malih ćelija koje emituju svjetlo i mogu se individualno postaviti u različite boje, da bi kreirale sliku. Različite boje se postižu miješanjem odgovarajućih intenziteta crvene, zelene i plave svjetlosti. Većina printera, kao što su laserski printeri i ink-jet printeri, su također rasterski uređaji. Oni su bazirani na skeniranju: ne postoji fizička mreža pixela, ali se slika izrađuje sekvencijalno otiskivanjem inka na odgovarajuće tačke mreže. Boja kod printera je složenija jer uključuje mješavine barem četiri pigmenta. Rasteri preovladavaju i kod ulaznih uređaja za sliku. Digitalna kamera sadrži senzor slike koji se sastoji od mreže pixela osjetljivih na svjetlo, od kojih svaki bilježi boju i intenzite svjetla koje pada na njega. Desktop skener sadrži linearni niz pixela koji prelazi preko stranice koja se skenira, vršeći veliki broj mjerenja po sekundi da bi proizveo mrežu pixela. Obzirom da su rasteri tako česti kod uređaja, rasterske slike su najpogodniji način za smještanje i procesiranje slike. Rasterska slika je 2D niz koji smješta vrijednost svakog pixela, obično boju kao kombinaciju iznosa crvene, zelene i plave komponente. Kada se smjesti u memoriju, rasterska slika se može prikazati tako da vrijednost svakog smještenog pixela predstavlja boju odgovarajućeg pixela na ekranu. Medjutim, ne želimo uvijek prikazivati sliku na ovaj način. Nekad želimo promijeniti veličinu ili orijentaciju slike, korigovati boje ili sliku postaviti u pokretni 3D prostor. Čak i na televiziji slika rijetko ima onoliko pixela koliko je prikazano. Ova razmatranja prekidaju direktnu vezu između pixela slike i pixela displeja. Najbolje je razmišljati o rasterskoj slici kao opisu slike za prikaz koji je nezavisan od uređaja, a uređaj kao način aproksimiranja tog idealnog opisa.

  • 4

    Postoje i drugi načini predstavljanja slike osim niza pixela. Vektorska slika se opisuje smještanjem opisa oblika - obojenih područja ograničenih linijama ili krivima - bez referenci na neku posebnu mrežu pixela. U osnovi ovo predstavlja smještanje INSTRUKCIJA za prikaz slike a ne pixela koji su potrebni za njeno predstavljanje. Glavna prednost vektorskih slika je da ne zavise od rezolucije i da se mogu jednako dobro prikazati i na uređajima visoke i niske rezolucije. Mana je što one moraju biti rasterizirane prije prikaza. Vektorske slike se često koriste za tekst, dijagrame, mehaničke crteže i druge aplikacije gdje je preciznost i jasnoća važnija i nisu zastupljene fotografije i kompleksna sjenčenja.

    1.1. Displeji 1.1.1 Katodna cijev (CRT) Kompjuterski displej ili monitor je najvažniji uređaj na kompjuteru. On omogućava vizuelni izlaz iz kompjutera prema korisniku. U kontekstu kompjuterske grafike, sve se nalazi na displeju. Jedna od najvažnijih tehnologija za gradnju kompjuterskih dipleja je CRT (Cathode Ray Tube) ili katodna cijev.

    Slika 1. Katodna cijev Kao što je prikazano na slici 1, katodna cijev se sastoji od elektronskog topa koji emituje snop elektrona (katodne zrake), sistema za skretanje i fokusiranje koji usmjerava fokusirani snop elektrona prema određenoj poziciji na fosforom premazanom ekranu i fosforno premazanog ekrana koji emituje malu tačku svjetla proporcionalnu intenzitetu snopa koji ga pogađa. Svjetlo koje emituje ekran je ono koje vidimo na monitoru. Tačka koja može biti osvijetljena elektronskim snopom naziva se pixel. Intenzitet svjetla koje se emituje može se mijenjati variranjem broja elektrona koji pogađaju ekran. Veći broj elektrona daće svjetliju boju na mjestu odgovarajućeg pixela. Crno-bijeli monitor ima samo jedan fosfor za svaki pixel. Boja pixela može biti postavljena na crnu (nijedan elektron ne pogađa fosfor), bijelu (maksimalni broj elektrona pogađa fosfor) ili na bilo koju vrijednost između.

  • 5

    Kolor CRT monitor ima 3 različita obojena fosfora za svaki pixel. Svaki pixel ima crveni, zeleni i plavi fosfor uređen u trougaonu grupu. Postoje tri elektronska topa i svaki od njih generiše snop elektrona da pobudi jednu od fosfornih tačaka kao što je prikazano na slici 2. Zavisno od proizvođača displeja, pixeli mogu biti okrugle tačke ili mali kvadrati.

    Slika 2: Kolor CRT koristi crvene, zelene i plave trijade piksela Kako se tačke nalaze međusobno veoma blizu, ljudsko oko ih fuzionira u jednu tačku koja je kolor kombinacija tri osnovne komponente boje (R,G i B). 1.1.2. LCD displeji (Liquid Crystal Display) U zadnje vrijeme sve češće se koristi LCD tehnologija u proizvodnji kompjuterskih displeja (slika 3). LCD ili liquid crystal display je tehnologija koja proizvodi slike na ravnoj površini odsjajem svjetla kroz tečni kristal i kolor filtere. Ovi displeji zauzimaju manje prostora, troše manje energije i proizvode manje topline od klasičnih CRT monitora.

  • 6

    Slika 3. LCD display

    Slika 4. Struktura LCD displeja Otkriveni 1888, tečni kristali su tečne hemijske supstance čije molekule mogu biti precizno poravnate kada su izložene električnim poljima. Kada su poravnati na odgovarajući način, tečni kristali propuštaju svjetlo. LCD ekran je višeslojan. Fluorescentni izvor svjetla koji se zove backlight izgleda kao kriška hljeba (slika 4). Ovo svjetlo prolazi kroz prva dva polarizirajuća filtera. Polarizovano svjetlo zatim prolazi kroz sloj koji sadrži hiljade mjehurića tečnog kristala poredanih u majušne kontejnere koji se nazivaju ćelije. Ćelije su poredane u redove preko ekrana, jedna ili više ćelije čine jedan pixel. Električni vodovi oko ivice LCD ekrana kreiraju električno polje koje uvrće molekule kristala i poravnava svjetlo sa drugim polarizirajućim kristalom i omogućava mu prolaz. Kod kolor LCD ekrana, svaki pixel je načinjen od tri ćelije tečnog kristala. Svaka od te tri ćelije ima ispred sebe crveni, zeleni ili plavi kolor filter. Svjetlo koje prolazi kroz ćelije sa filterom kreira boje koje vidimo na ekranu. Povremeno mehanizam koji šalje električnu struju na jedan ili više pixela nije aktivan, pa se vidi kompletno crn pixel. Skoro svi moderni kolor LCD-ovi koriste tanki film trazistor, poznat kao aktivna matrica, za aktiviranje svake ćelije. Kako LCD adresira svaki pixel individualno, oni

  • 7

    imaju oštriju sliku od CRT-ova, koji, kad nisu dobro fokusirani, bluriraju različite pixele u slici. Frame baferi Svjetlost koja se na ekranu generiše pomoću snopa elektrona na CRT nestaje brzo – za 10 do 60 mikrosekundi. Da bismo sliku na ekranu zadržali izvjesno vrijeme, ona mora biti ponovo iscrtana prije nego što nestane sa ekrana. Ovo se zove osvježavanje ekrana (refreshing). Većina displej sistema koriste raster scan tehnologiju da bi izvršili proces osvježavanja. U ovoj tehnologiji, snop elektrona se diskretno usmjerava preko ekrana, jedan po jedan red, s desna na lijevo, počevši od gornjeg lijevog ugla ekrana. Kada snop dostigne najdonji red, proces se ponavlja, osvježavajući ekran. Raster scan sistemi koriste memorijski bafer koji se zove frame bafer (ili refresh bafer) u kome se smještaju intenziteti pixela. Osvježavanje ekrana se vrši korištenjem informacije koja je smještena u bafer. Frame bafer možemo zamisliti kao dvodimenzionalni niz. Svaki element niza čuva intenzitet pixela na ekranu koja odgovara njegovoj poziciji. Za monohromske displeje, frame bafer ima samo jedan bit za svaki pixel. Displej kontroler stalno čita iz frejm bafera i usmjerava elektronski snop samo ako je bit u baferu osvijetljen. Double buffering Postoje dva bafera za crtanje po ekranu, Jedan bafer, tzv. foreground bafer se prikazuje na ekranu. Drugi bafer, background bafer se koristi za čuvanje slike. Kada je slika kompletna, dva bafera se zamjenjuju, tako da se onaj koji je prikazivao sada koristi za crtanje i obratno. Zamjena se vrši skoro trenutno. Kako je slika već iscrtana u trenutku prikazivanja na ekranu, rezultujuća animacija izgleda glatko i ne vide se nekompletne slike. 1.1.3. Touch screen displeji Ova vrsta displeja je postala popularna u zadnjih deset godina, jer je njihova cijena postala pristupačna. Postoje četiri osnovna sistema za prepoznavanje dodira:

    • Rezistivni • Kapacitivni • Površinski akustični talasi • Infrared LED displeji

    Rezistivni sistemi Ovaj sistem se sastoji od providne ploče pokrivene provodljivim i otpornim metalnim slojem (slika 5). Ova dva sloja se drže odvojenim pomoću “spacera”, a sloj otporan na ogrebotine se postavlja na vrh cijelog setupa. Električni naboj teče kroz dva sloja dok je monitor operativan. Kada korisnik dotakne ekran, dva sloja se dotaknu na tom mjestu. Promjena u električnom polju se bilježi i računaju koordinate tačke kontakta. Na osnovu tih koordinata driver prevodi dodir u komandu operativnom sistemu.

  • 8

    Slika 5. Slojevi touch screen displeja Prednost sistema je što registruje dodir bilo kojim objektom, a mana je što zahtijeva pritisak, a ne samo dodir, te ne podržava povlačenje ili višestruki dodir. Kapacitivni sistemi Kod kapacitivnih sistema sloj koji drži električni naboj je smješten na providnu ploču monitora. Kada korisnik dotakne monitor prstom, dio naboja se prebaci na korisnika, tako da naboj kapacitivnog sloja opadne (slika 6). Ova promjena se bilježi u električnim kolima koja su smještena na svakom uglu monitora. Iz relativne razlike naboja svakog ugla kompjuter računa tačnu poziciju dodira i prosljedjuje tu informaciju driveru. Prednost ovog sistema je mogućnost registrovanja višestrukih dodira. Mana kapacitivnih sistema je da ne rade ako je korisnik u rukavicama ili vrši dodir nekim drugim objektom koji nije prst.

    Slika 6. Kapacitivni sistem touch screen displeja Površinski akustični talasi Kod površinskih akustičnih talasa dva transducera (prijemnik i otpremnik) su smještena duž x i y ose providne ploče monitora. Na providnoj ploči se takodjer nalaze reflektori koji reflektuju električni signal sa jednog transducera na drugi (slika 7). Prijemnik može signalizirati kao je talas poremećen dodirom i može odrediti lokaciju tog dodira. Ovaj setup nema metalnih slojeva na ekranu, propuštajući 100% svjetla i perfektan kvalitet slike.

  • 9

    Slika 7. Touch screen sistemna bazi površinskih akustičnih talasa Ovi sistemi registruju dodir načinjen bilo kojim objektom, osim malih i tvrdih objekata kao što je vrh olovke. Oni su najskuplji od sva tri sistema. Infrared LED Četvrta grupa touch screen displeja ima ekrane okružene infrared LED (light emitting diode) elementima, od kojih svaka ima odgovarajući fotodetektor instaliran na mrežu preko površine ekrana (slika 8). Dodir ekrana prekida infracrvene zrake, a koordinate dodira se odredjuju na bazi pozicije LED-ova čiji zrak je prekinut. Zbog ovoga infrared sistemi podržavaju dodir bilo kojim objektom i pogodni su za instalaciju vani.

    Slika 8. Infrared LED displeji

  • 10

    Postoje sistemi koji mogu registrovati desetine istovremenih dodira zahvaljujući infracrvenim LED-ovima i kamerama montiranim pozadi, kakvi su Microfost Surface table uređaji (slika 9).

    Slika 9. Microsoft Surface table

  • 11

    1.2. Rasterska grafika Kako je već navedeno, slika se može podijeliti u pravilno raspoređene elemente fiksne veličine koji se nazivaju pikseli. Za svaki od tih elemenata određena je boja ili tonalitet (nivo osvijetljenosti). Ljudsko oko ne primjećuje pixele koji su dovoljno mali i gusto postavljeni nego ih veže u kontinualnu sliku. Ova osobina ljudskog oka se naziva prostorna integracija i ima veoma značajnu ulogu u digitalizaciji slike, ne samo u računarskoj grafici, nego i u medijima kao što su fotografija i filmska traka koje obično smatramo analognim i kontinualnim. Parameri pixela koji su potrebni da bi se slika zapisala na digitalnom mediju su njegova pozicija i vrijednost boje ili tona. Nadalje, svakoj boji koju ima pixel može se dodijeliti jedinstven broj. Ova informacija se predstavlja, u skladu sa brojem boja koje se žele prikazati, pomoću određenog broja bita. Tako se jednim bitom mogu opisati dvije boje. Broj bita koji se koristi za opis boje naziva se dubina boje. Ako želimo prikazati veći broj boja, to zahtijeva i veći memorijski prostor za prikazivanje. Danas su u upotrebi sljedeći formati rasterskih slika:

    Dubina boje Broj boja koje se mogu prikazati 1 2 4 16 8 256 16 64K 24 16M 32 4G Tabela 1. Dubina boje Kada se smještaju u računar, rasterske slike postaju nizovi podataka o boji pixela. Rekonstrukcija takve slike podrazumijeva interpretaciju na isti način kao što je vršeno pohranjivanje. To znači da se treba zabilježiti i način pohranjivanja. Na ovaj način se izbjegava pamćenje lokacije svakog pojedinog pixela. Obično se slika sprema red po red, s lijeva nadesno i odozgo prema dolje. Ovi redovi pixela zovu se raster-scan linije. Da bi se rekonstruisala ovako spremljena slika potrebno je znati: - dužinu raster-scan linije (broj pixela u rasteru po horizontali) - broj raster-scan linija (broj pixela u rasteru po vertikali) - dubinu boje Prilikom štampanja rasterske slike važna veličina je i dimenzija rastera u jedinicama dužine koja se zove rezolucija. Rezolucija je broj pixela u rasteru po jedinici dužine. Ona se načešće izražava u “dpi” (dots per inch – broj tačaka po inču). Ako sliku posmatramo primarno kroz karakteristike pixela, a sekundarno kroz način njihovog kombiniranja u kreiranju slike, vidjećemo kolor sliku kao kolekciju nivoa (layer-a) jednostavnijih slika, odnosno kanala.

  • 12

    Boja pixela je funkcija od tri komponente – crvene, zelene i plave (Red, Green, Blue). Kombinacijom različitih intenziteta ove tri komponente dobijamo čitav spektar boja za svaki pixel. Ako posmatramo jednu komponentu boje (npr. crvenu), svakog pixela u slici, dobićemo specifični kanal kompletne slike. Tako možemo svaku sliku posmatrati kao kombinaciju crvenog, zelenog i plavog kanala. Vrijednosti pixela Kao što se navodi u [1], do sada smo opisivali vrijednosti pixela kao realne brojeve koji predstavljaju intenzitet na pojedinoj tački slike, moguće rastavljen na vrijednosti za crvenu, zelenu i plavu komponentu. Ovo implicira da bi slike trebale biti nizovi floating point brojeva sa ili jednim (za grayscale ili crno bijele slike) ili 3 (za RGB kolor slike) 32-bitna floating point broja po pixelu. Ovaj format se ponekad koristi kada je potrebna takva preciznost, ali slike sadrže mnogo pixela, a memorija i bandwidth za smještanje i prenos slike su ograničeni. Samo jedna fotografija od 10 megapixela će potrošiti oko 115 MB RAM-a u ovom formatu. Za slike koje treba da se prikažu direktno zahtijeva se manji opseg. Svaki uređaj ima ograničen maksimalni intenzitet svjetla koje prikazuje, tako da je u mnogim kontekstima dovoljno da vrijednosti pixela imaju ograničen opseg, obično izmedju 0 i 1. Npr. moguće vrijednosti u 8-bitnoj slici su 0, 1/255, 2/255 ..., 254/255, 1. Slike smještene pomoću floating point brojeva koje omogućavaju široki opseg vrijednosti se često zovu high dynamic range (HDR) slike, da bi se razlikovale od ograničenog opsega ili low dynamic range slika koje se smještaju pomoću integera. Ovo su neki pixel formati sa tipičnim aplikacijama: • 1-bit grayscale—tekst i druge slike gdje nisu poželjne nijanse sive a zahtijeva se visoka rezolucija; • 8-bit RGB fixed-range color (24 bita po pixelu)—web i email aplikacije, amaterske fotografije; • 8- or 10-bit fixed-range RGB (24–30 bits/pixel)—digitalni interfejsi kompjuterskih displeja; • 12- to 14-bit fixed-range RGB (36–42 bits/pixel)—raw slike sa kamere za profesionalnu fotografiju; • 16-bit fixed-range RGB (48 bits/pixel)—profesionalna fotografija i štampa; međuformat za procesiranje slika sa ograničenim opsegom; • 16-bit fixed-range grayscale (16 bits/pixel)—radiologija i medicinska dijagnostika; • 16-bit “half-precision” floating-point RGB—HDR slike; međuformat za real time rendering; • 32-bit floating-point RGB—međuformat opće upotrebe za rendering i procesiranje HDR slika. Reduciranje broja bita koji se koriste za smještanje slike vodi stvaranju dvije vrste artifakta odnosno grešaka u slikama. Prvo, kodiranje slika sa vrijednostima ograničenog opsega proizvodi odsijecanje kada pixeli koji bi inače bili svjetliji od maksimalnog opsega poprime vrijednost maksimalnog opsega. Npr. fotografija sunčanog predjela može da sadrži refleksije koje su svjetlije od bijelih površina; one će biti odsječene kada se slika konvertuje u ograničeni opseg da bi se prikazala.

  • 13

    Drugo, pojavljuju se tzv. artifakti kvantizacije kada potreba da se zaokruže vrijednosti pixela na najbližu prikazivu vrijednost uvede vidljive skokove u intenzitetu ili boji. Ovo je posebno neugodno kod animacije ili videa, a može proći neprimijećeno kod statičnih slika. Digitalni formati zapisa slike Kada smo digitalizirali sliku u memoriji računara, moramo naći način kako ćemo tu sliku zapisati na disk. Postoji veliki broj različitih formata koje možemo izabrati. Svaki od tih formata ima svoje mane i prednosti. Različiti formati variraju u mogućnostima da podrže pojedine važne osobine pa ćemo u nastavku iznijeti neke karakteristike pojedinih formata. Kompresija Kako slike velike rezolucije mogu zauzeti veliki prostor na disku, često je potrebno da se oni kompresuju. Postoji određeni broj tehnika za kompresiju, od kojih neke narušavaju kvalitet slike, a neke ne. Ako šema za kompresiju koja se koristi za smještanje slike može biti potpuno obrnuta, tako da je dekompresovana slika digitalno identična kompresovanoj, kaže se da je šema za kompresiju bez gubitaka. Ako je to nemoguće, radi se o kompresiji sa gubicima. Skoro uvijek postoji mogućnost da se zamijeni kvalitet slike za efikasnost u prostoru. Međutim, postoji nekoliko metoda za kompresiju bez gubitaka i jedan od njih je tehnika poznata kao run-length encoding (RLE) Run-length encoding RLE je tehnika koja omogućava značajan nivo kompresije. Razmotrimo sliku koja ima bijeli plus na crnoj pozadini. Slika 10. Bijeli plus na crnoj pozadini Slika je izuzetno male veličine (12x12), uvećana da bi se vidjeli pojedinačni pixeli. Također, da bismo pojednostavili razmatranje, smatraćemo da je slika crno-bijela, što znači da je potreban samo jedan bit informacije da odredimo boju pixela. U ovom

  • 14

    slučaju, 0 će biti crni, a 1 bijeli pixel. Na taj način numerička reprezentacija ove slike izgleda ovako: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Kao što vidimo, koristimo 144 karaktera u obliku matrice da predstavimo ovu sliku. RLE radi na principu analiziranja slike i zamjenjivanja redundantnih informacija sa efikasnijom reprezentacijom. Npr, prva linija naše slike je je string od 12 nula. Ovo se može zamijeniti sa jednostavnom notacijom 12:0. Sada smo sveli opis prve linije sa 12 karaktera na 4. Koristeći ovu konvenciju, možemo zakodirati cijelu sliku na sljedeći način: 12:0 12:0 5:0, 2:1, 5:0 5:0, 2:1, 5:0 5:0, 2:1, 5:0 2:0, 8:1, 2:0 2:0, 8:1, 2:0 5:0, 2:1, 5:0 5:0, 2:1, 5:0 5:0, 2:1, 5:0 12:0 12:0 Totalni broj karaktera koje smo koristili za predstavljanje slike je sada 104. Reducirali smo količinu informacija za smještanje slike skoro za 30%, a originalna slika se može restaurirati bez ikakvih gubitaka. Odmah se može primijetiti da ovaj metod ne proizvodi uvijek istu količinu kompresije u zavisnosti od slike. Ako je slika potpuno bijela, količina kompresije bi bila ogromna, ali ako imamo sliku kao što je sljedeća, ova šema za kompresiju bi dala sljedeće rezultate

  • 15

    Slika 11. 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0, 1:1, 1:0 Na ovaj način bismo morali koristiti 542 simbola da predstavimo originalna 144. Poenta ovog primjera nije da dokažemo nešto specifično o RLE kompresiji, nego da istaknemo činjenicu da svi metodi kompresije ne rade jednako dobro na svim vrstama slika. Pokazalo se da je RLE kompresija pogodna za slike koje su generisane pomoću paketa za 3D rendering, jer ova vrsta slika često ima veliki broj pixela identične boje. S druge strane, RLE kompresija nije dobar metod kada su u pitanju slike digitalizirane sa analognog izvora, kao što je film ili video, jer je kod tih slika skoro svaki pixel različite boje. Kompresija sa gubitkom Postoji veliki broj formata koji mogu drastično smanjiti prostor potreban za smještanje slike, ako je korisnik spreman da prihvati određeni gubitak u kvalitetu slike. Vjerovatno najpopularniji od ovih formata je onaj koji koristi šemu kompresije koju je definisao Joint Photographic Experts Group. Za ovakve slike se kaže da su smještene u JPEG formatu. Jpeg format ima veliki broj prednosti. Najprije, on radi posebno dobro nad slikama koje potiču sa filma ili videa, dijelom zbog toga što su artefakti koje on proizvodi dizajnirani tako da se manje primijete u područjima koje

  • 16

    imaju određenu količinu šuma. Posebno, JPEG kompresija pokušava da održi informaciju o svjetloći i kontrastu (na koje je ljudsko oko posebno osjetljivo), na račun određene definicije boja. Ovaj format također ima prednost da korisnik može odrediti nivo kompresije. Zato se može dobro naći kompromis između kvaliteta slike i količine prostora potrebne za njeno smještanje. Vrste formata U nastavku su date neke osnovne vrste formata zapisa slike i njihove karakteristike.

    • GIF format - dubina boje 8 bita, pogodan za slike koje se prezentiraju na Internetu

    • animirani GIF format - isti kao GIF samo što čuva pokret, pogodan za animacije na web stranicama

    • JPEG format - univerzalni format, nudi korisniku da izabere kvalitet i kompresiju slike, pogodan za sve primjene

    • Targa format - dubina boje do 32 bita, pogodan za štampane materijale, veliki fajlovi

    • TIFF format - sličan kao Targa, koristi se u pripremi za štampu, veliki fajlovi • AVI format - čuva pokret, koristi se za animacije i za zapis digitalizirane slike

    sa kamere ili video trake • QuickTime format - čuva pokret, koristi se kod obrade slike na Macintosh

    računarima

  • 17

    1.3. Vektorska grafika Za razumijevanje matematičkog aparata koji stoji iza osnovnih transformacija u kompjuterskoj grafici, neophodno je poznavati neke osnovne pojmove linearne algebre kao što su koordinatni sistemi, matrice, vektorska aritmetika, jednačine krivih i površina i koncept baricentričnih koordinata . 1.3.3 Koncept Kartezijanskih koordinata U 2-D slučaju ovo omogućava da se tački na ravnoj površini pristupa uz pomoć horizontalne i vertikalne ose. Tačka se locira mjerenjem dvije udaljenosti paralelne sa osama od njihove presječne tačke koja se zove koordinatni početak. Horizontalne i vertikalne mjere za bilo koju tačku su jedinstvene i zovu se x i y koordinata respektivno.

    Slika 12. - x i y koordinate tačke P određene su horizontalnim i vertikalnim udaljenostima tačke P od koordinatnog početka

    Slika.1. ilustrira ovu šemu i takođe pokazuje konvenciju za pozitivni i negativni pravac.

    Slika 13. - Ilustriran je oblik sa 12 vrhova; njihove koordinate se nalaze u tabeli.

    Bilo koji 2-D oblik se može predstaviti pomoću sekvence tačaka ili vrhova kao što je prikazano na slici 2, i kako se se svaki vrh sastoji od uređenog para brojeva (x i y koordinata) oni se mogu lako smjestiti u kompjuter.

  • 18

    Slika 14. Ova dva kvadrata su digitalizirana u pravcu kazaljke na satu i obrnuto

    Međutim, naša predstava o ovom obliku je vizualna i uspostavljena je povlačenjem njegove granice u pravcu kazaljke na satu ili obrnuto. Pravac granice se takođe mora čuvati u kompjuteru uređivanjem koordinata vrhova u jednom od dva niza kao što je prikazano na slici 3. 1.3.2. Vektori Linearna algebra definiše vektore kao vrijednosti koje su opisane intenzitetom i pravcem. Vektori u sebi ne sadrže informaciju o njihovoj početnoj tački. Možemo ih interpretirati kao "pomjeranja", instrukciju kako stići od jedne tačke u prostoru do druge. Ako ih interpretiramo kao "tačke", onda moramo imati informaciju o njihovom početku.

    Slika 15. Vektor a

    Suma dva vektora se računa tako što se početak jednog postavi na kraj drugog. Suma je vektor koji zatvara trougao, kao što je prikazano na slici 16.

  • 19

    Slika 16. Suma vektora a i b

    Ponovimo ukratko neke definicije:

    • intenzitet vektora a je skalar koji se obilježava sa |a| • jedinični vektor je vektor intenziteta 1 • nulti vektor je vektor intenziteta nula čiji pravac je nedefinisan • dva vektora su jednaka ako i samo ako imaju isti intenzitet i isti pravac

    U 2D slučaju bilo koji vektor se može predstaviti kao jedinstvena linearna kombinacija ili otežana suma bilo koja dva neparalelna osnovna vektora. 3D slučaj zahtijeva tri neparalelna koplanarna osnovna vektora (slika 17).

    Slika 17. Vektor a prikazan kao linearna kombinacija vektora u i v Osnovni vektori koji su jedinični vektori pod pravim uglovima zovu se ortonormalni. Koordinatni sistem xy Kartezijanskih koodinata je ortonormalan. Vektori se mogu predstaviti pomoću svojih Kartezijanskih koordinata na sljedeći način:

    kao što je prikazano na slici 18.

  • 20

    Slika 18. Predstavljanje vektora pomoću Kartezijanskih koordinata Ako se vektori predstave pomoću ortonormalnih koordinata kao a=(xa, ya) onda oni imaju veoma korisnu osobinu da se njihovi intenziteti mogu izračunati pomoću Pitagorine teoreme

    Vektori se mogu pomnožiti pomoću skalarnog proizvoda, koji se definiše kao

    gdje je ϕ ugao između tih vektora (slika 19).

    Slika 19. Ugao između vektora Ovaj proizvod se zove skalarni jer je rezultat skalar, a ne vektor. Za razliku od njega, definišemo i vektorski proizvod dva vektora. Intenzitet rezultujućeg vektora je

    a pravac je ortogonalan na oba vektora, pa se koristi samo za 3D vektore. Za njegovo određivanje se koriste pravila lijeve ili desne ruke, prema dogovoru (slika 21).

  • 21

    Slika 20. Intenzitet vektorskog proizvoda

    Slika 21. Pravilo desne ruke Vektor normale je vektor okomit na neku površinu. Ovi vektori su veoma važni za kompjutersku grafiku. Jedinični vektor normale je vektor normale intenziteta 1. Ako je površina poligon sa vrhovima a, b i c, onda se vektor normale računa kao

    Vektor normale n pokazuje unutar poligona ako su a, b i c orijentirani u pravcu kazaljke na satu, a izvan ako su orijentirani u pravcu suprotnom od kazaljke na satu. 1.3.3. Baricentrične koordinate Trouglovi su osnovne primitive koje se koriste u programima za 3D modeliranje. Smještaju se kao sekvence tri vektora, od kojih svaki predstavlja jedan vrh. Često imamo neke informacije vezane za vrhove, kao npr. boja, koju želimo interpolirati preko cijelog trougla. Najjednostavniji način da se izvrši ta interpolacija je preko baricentričnih koordinata. Ime dolazi od grčke riječi "barus", što znači težak, jer su koordinate težine dodijeljene vrhovima.

    Slika 22. Baricentrična interpolacija boje Tačka a na trouglu je ishodište neortogonalnog koordinatnog sistema. Vektori od a do b i od a do c se uzimaju kao osnovni vektori. Svaka tačka p koplanarna trouglu se može izraziti kao

  • 22

    Ovo se može pisati i kao

    gdje je

    Slika 23. Trougao abc Neke zanimljive osobine ovih koordinata su:

    • tačka p je unutar trougla ako i samo ako je

    • ako je jedna komponenta 0, p je na ivici trougla • ako su dvije komponente 0, p je jedan od vrhova • koordinate se mogu koristiti kao težinski faktori osobina vrhova, npr. boje.

  • 23

    Slika 24. Baricentrične koordinate za interpolaciju boje 1.3.4. Matrice transformacija Alati linearne algebre mogu se koristiti za izražavanje mnogih operacija koje su potrebne za aranžiranje objekata u 3D sceni, njihovo bilježenje pomoću kamera i prikazivanje na ekranu [1]. Geometrijske transformacije kao rotacija, translacija, skaliranje i projekcija se mogu izvršiti pomoću multiplikacije matrica, a matrice transformacija koje se koriste da bi se ovo postiglo biće opisane u nastavku. Pokazaćemo kako se transformira skup tačaka ako se te tačke predstave kao vektori udaljenosti od koordinatnog početka na primjeru slike sata. Također ćemo diskutovati kako ove transformacije različito operišu sa lokacijama (tačkama), vektorima pomjeranja i vektorima normala na površinu. 2D linearne transformacije Možemo koristiti matricu 2x2 za transformaciju 2D vektora:

    Ova vrsta operacije, koja iz jednog 2D vektora proizvodi drugi pomoću jednostavne multiplikacije matrica zove se linearna transformacija. Pomoću ove jednostavne formule možemo postići niz korisnih transformacija, zavisno od toga šta stavimo u polja matrice. Pomjeranje po x osi smatraćemo horizontalnim, a po y osi vertikalnim pomjeranjem. Skaliranje Najjednostavnija transformacija je skaliranje duž koordinatnih osa. Ona može promijeniti dužinu i eventualno pravac

    Primijetimo šta ova matrica radi vektoru sa Kartezijanskim koordinatama x i y:

  • 24

    Samim pogledom na matricu skaliranja duž koordinatnih osa možemo uočiti oba faktora skaliranja. Primjer. Matrica koja skuplja x i y uniformno za faktor 2 data je sa

    Matrica koja polovi horizontalu i povećava vertikalu za 3/2 data je sa

    Slika 25. Uniformno skaliranje za pola po svakoj osi: Matrica skaliranja poravnata sa osom ima proporciju promjene u svakom od dijagonalnih elemenata i nule u elementima kontra od dijagonale.

    Slika 26. Neuniformno skaliranje po x i y: Matrica skaliranja je dijagonalna sa nejednakim elementima. Primijetimo da kvadratni okvir slike postaje pravougaonik, a okrugli smajli postaje elipsa. Smicanje Smicanje je pomjeranje u jednu stranu koje proizvodi efekat sličan kao kada rukom gurnemo špil karata, karta na dnu ostaje na mjestu a ostale se pomjeraju više što su bliže vrhu špila. Horizontalne i vertikalne matrice smicanja su

  • 25

    Primjer. Transformacija horizontalnog smicanja takva da vertikalne linije postanu nagnute desno za 45 stepeni izgleda ovako:

    Slika 27. Matrica smicanja po x osi pomjera tačke desno u proporciji njihove y koordinate. Sada kvadratni okvir slike postaje paralelogram i, kao i kod skaliranja, okrugli smajli postaje elipsa

    Slika 28. Matrica smicanja po y osi pomjera tačke prema gore u proporciji njihove x koordinate Analogna vertikalna transformacija je (slika 28)

    U oba slučaja kvadratni okvir slike postaje paralelogram, a okrugli smajli elipsa.

  • 26

    Drugi način da se razmišlja o smicanju je kao o rotaciji samo oko vertikalne ili horizontalne ose. Transformacija smicanja koja uzima vertikalnu osu i uvrće je u pravcu kazaljke na satu za ugao φ je

    Slično, matrica smicanja koja rotira oko horizontalne ose u pravcu suprotnom od kazaljke na satu za ugao φ je

    Rotacija Pretpostavimo da želimo rotirati vektor a za ugao φ u pravcu suprotnom od kazaljke na satu da dobijemo vektor b (slika 29). Ako a čini sa x osom ugao α, i njegova dužina je r = xa2 + ya2 onda znamo da je

    Kako je vektor b rotacija vektora a on također ima dužinu r. Obzirom da je rotiran za ugao φ u odnosu na a, b čini ugao (α + φ) sa x osom. Pomoću jednakosti za trigonometrijsko sabiranje dobijamo:

    Slika 29. Rotacija vektora a u vektor b

  • 27

    Zamjenom

    i

    dobijamo

    U matričnoj formi transformacija koja pretvara a u b je

    Primjer. Matrica koja rotira vektor za π/4 radijana (slika 30) je

    Slika 30. Rotacija za 45 stepeni. Primijetimo da je pravac rotacije suprotan od kazaljke na sati i da je cos(45◦) = sin(45◦) ≈ .707. Matrica koja rotira za π/6 radijana (30 stepeni) u pravcu kazaljke na satu je rotacija za −π/6 radijana u našem okviru.

  • 28

    Slika 31. Rotacija za -30 stepeni. Primijetimo da je rotacija u pravcu kazaljke na satu i da je cos(-30◦) ≈ .866 i sin(-30◦) = -0.5. Refleksija Vektor se može reflektovati u odnosu na bilo koju osu transformacije pomoću skaliranja sa jednim negativnim faktorom skaliranja.

    Slika 32. Refleksija oko y ose se postiže množenjem svih x koordinata sa -1.

    Slika 33. Refleksija oko x ose se postiže množenjem svih y koordinata sa -1.

  • 29

    1.3.5. Viewing Osnovni cilj u 3D kompjuterskoj grafici je da damo korisniku utisak gledanja fotografije 3D scene na isti način kako fotografi mapiraju realni 3D svijet na 2D film. Trodimenzionalna kompjuterska grafika simulira princip rada realne kamere u kreiranju 2D slika. Važno je najprije razumjeti kako realna kamera snima slike 3D svijeta koji nas okružuje koristeći jednostavni primjer pinhole kamere (camera obscura - u prevodu sa latinskog "tamna soba"). Zatim ćemo proširiti izlaganje na kompjutersku grafiku. Zamislimo da smo u zamračenoj sobi, a vani je sunčan dan. Ako napravimo malu rupu u zastoru na prozoru, na suprotnom zidu ćemo vidjeti sliku vanjskog svijeta koji se vidi kroz taj prozor, samo okrenutu naopako. Ova pojava se može objasniti fizičkim zakonom prema kojem svjetlost putuje pravolinijski i kada neke od zraka, reflektovane od sjajni objekat, prođu kroz malu rupu u tankom materijalu, one se ne rasipaju nego ukrštaju i pretvaraju u invertovanu sliku na ravnoj površini paralelnoj sa rupom. Ovaj zakon fizike je poznat još od antičkih vremena. Najraniji spomen pinhole kamere bio je u 5. vijeku prije nove ere, kada je kineski filozof Mo-Ti uspio zabilježiti kreaciju invertovane slike nastalu prolaskom svjetla kroz ključaonicu u zamračenu sobu [2]. Aristotel (384-322. god. p.n.e) je razumio optički princip camere obscura. On je posmatrao oblik polumjeseca djelimično pomračenog Sunca projiciranog na zemlju kroz rupe u situ i prostore između listova platana.

    Slika 34. Camera obscura zabilježena na srednjovjekovnoj grafici Islamski naučnik Alhazen (Abu Ali al-Hasan Ibn al-Haitham, 965. - 1039.) je potpuno obrazložio ovaj princip uključujući i eksperimente sa 5 svjetiljki izvan sobe sa malom rupom. Leonardo da Vinči je 1490. godine dao dva jasna opisa camere obscura u svojim spisima. Mnoge od njih su izgledale kao velike sobe na ilustracijama nizozemskog naučnika Reinerusa Gemma-Frisiusa iz 1544, i koristile su se za posmatranje pomračenja Sunca. Kvalitet slike je kasnije unaprijeđen dodavanjem

  • 30

    konveksnog sočiva u 16. stoljeću i kasnije ogledala da reflektuje sliku na površinu za gledanje. Giovanni Battista Della Porta je u svojoj knjizi Magiae Naturalis iz 1558. godine preporučio ovaj uređaj kao pomoćnu alatku za slikare. Naziv "camera obscura" prvi put je upotrijebio njemački astronom Johannes Kepler u ranom 17. stoljeću.

    Slika 35. Pinhole kamera

    Slika 35 prikazuje pinhole kameru. To je jednostavni box sa fotografskim filmom F pozadi i malom rupom H koja propušta svjetlo kada se otvori. Razmotrimo šta se dešava kada pravimo fotografiju objekta X. Otvara se rupa H za djelić sekunde. Zraka svjetla pogađa X u tački P, prolazi kroz H i pogađa film u tački P`, uzrokujući eksponiranje filma u toj tački. Tačka P` formira sliku tačke P na negativu. Sve tačke objekta se mapiraju na film na ovaj način. Drugi objekat Y, iste veličine ali dalje po poziciji, mapira se na Y` i izgleda manji po veličini. Objekti kao što je Z, čije zrake svjetla ne prolaze kroz H, nije fotografisan. Primijetimo da je formirana slika invertovana. U kompjuterskoj grafici film se stavlja ispred pinhola. Ovakva postavka osigurava da je slika okrenuta na pravu stranu. Pinhole možemo nazvati eye, viewpoint ili pozicija kamere, a film image plane, kao što je prikazano na slici 36.

    Slika 36. Pinhole kamera u kompjuterskoj grafici

  • 31

    Proces slikanja scene ostaje manje-više isti. Zrake (zvane projectors) se generišu od viewpointa prema objektu. Objekti za koje te zrake presijecaju image plane biće procesirani i prikazani na ekranu. Ostali, kao što je Z biće odsječeni iz slike. Image plane se može posmatrati kao da se sastoji od dvodimenzionalne mreže koja sadrži kolor informaciju mapiranu na pixele ekrana pomoću viewing transformacija. Ako pretpostavimo da postoji skup vrhova objekta koji se nalazi u WCS i vidljiv je kameri, perspektivna projekcija tih vrhova se može izračunati pretpostavljajući da kamera ima pinhole konstrukciju i da joj je otvor smješten u koordinatni početak. Imaginarni ekran za gledanje je postavljen na udaljenost d iza pinhola da uhvati invertovanu perspektivu scene. Ovaj optički fenomen obrtanja slike neće uzrokovati problem jer se to unutar virtualnog svijeta može popraviti okretanjem ekrana za gledanje kao što je prikazano na slici 37.

    Slika 37.

    Koristeći geometriju sličnih trouglova, slika 38 pokazuje bočnu i ravnu elevaciju WCS aksijalnog sistema i aksijalnog sistema kamere. Pozicija tačke (x, y, z) je locirana u (xi, yi) na ekranu za gledanje pomoću sljedećih relacija:

  • 32

    Slika 37. Bočna i ravna elevacija y/z = yi/d i x/z=-xi/d pa je zato xi = -dx/z yi = dy/z Ove dvije jednakosti su sve što je potrebno za perspektivnu projekciju. Sve operacije koje se mogu izvesti sa kamerom simuliraju se pomoću kompjutera uz korištenje odgovarajućih izračunavanja. 1.3.6. Odrezivanje pogleda kamere Konvencionalna kamera može zabilježiti samo sliku scene koja se fizički nalazi ispred nje i unutar polja pogleda objektiva. Međutim, matematička kamera koja se koristi u kompjuterskoj grafici efektivno “vidi” sve. Razmotrimo samo tačku u koordinatnom sistemu kamere sa negativnom z koordinatom. Kada se ova vrijednost zamijeni u jednakosti za perspektivnu projekciju, vrijednosti xi i yi će imati suprotne znakove u odnosu na one koje bi imali kada bi z koordinata bila pozitivna. Ako je ovo

  • 33

    dozvoljeno, krajnja slika bi bila veoma zbunjujuća jer bi objekti iza kamere bili okrenuti naglavačke i naopako i zaklanjali bi one ispred kamere. Očigledno, vrhovi iza kamere se moraju ukloniti prije transformiranja u perspektivnu projekciju, ali jednostavno uklanjanje tačaka sa negativnom z koordinatom neće biti dovoljno. Ivice koje povezuju dva vrha moraju biti odrezane da bi ostao njihov vidljivi dio. Mogu postojati i vrhovi koji su toliko udaljeni da su virtualno nevidljivi i također trebaju biti odrezani. Zapravo postoje tri klase vrhova koji zahtijevaju odrezivanje sa scene: vrhovi koji su preblizu kameri, vrhovi koji su predaleko od kamere i vrhovi ispred kamere, ali izvan njenog polja pogleda. Ako ograničimo zapreminu prostora koji sadrži vrhove vidljive kameri imaćemo šest ravni: dvije koje ograničavaju “bliske” i “daleke” ravni i četiri koje uokviruju format slike kamere.

    Slika 38. Frustum pogleda

    Slika 38 ilustrira ovu konfiguraciju koja se zove frustum pogleda. Za početak razmotrimo problem identificiranja objekata koji su potpuno nevidljivi kameri. Pretpostavimo da je W=1 (W - širina slike) i da je ravan projekcije, gdje je z=1 blizu ravni odrezivanja. Tada objekat čije su z koordinate manje od jedan može sav biti odrezan. U praksi se dešava da se u bazi podataka koja sadrži geometriju postavlja parametar koji indicira da je objekat nevidljiv i da ga ne treba rendati. Slično, objekti čije z koordinate sve prelaze daljinu udaljene ravni odrezivanja su također nevidljivi. Sada dolazimo do lijeve, desne, gornje i donje ravni odrezivanja.

  • 34

    Slika 39. Bočna i ravna elevacija unutar frustuma pogleda

    U skladu sa slikom 39a vidimo ravni pogled na frustum i možemo primijetiti da je tačka (xi, yi, zi) nevidljiva ako je xi/zi>=1/2. Slično je kada je xi/zi=zi 2xi=1/2 odnosno yi/zi=zi 2yi= zi 2xi/W = zi 2yi/W

  • 35

    Sada smo u stanju da lociramo kameru u WCS i usmjerimo je na skup objekata i sračunamo perspektivni pogled. Ovaj proces se sastoji iz pet koraka: (1) locirati i pozicionirati kameru (2) sračunati matricu za konverziju vrhova iz WCS u CCS (camera coordinate system) (3) konvertovati vrhove pomoću te matrice (4) odrezati neželjene dijelove objekata (5) izvršiti perspektivnu transformaciju Ovi koraci se moraju izvršiti prilikom svake promjene kamere ili scene. Oko gledaoca je u tački e, a pravac pogeda je g. Ravan pogleda je na udaljenosti d od oka. Tačka se projektuje prema e i iscrtava na mjestu gdje se siječe sa ravni pogleda. Kao analogiju možemo zamisliti iscrtavanje slike na staklu.

  • 36

    1.4. Grafički pipeline Slika 3D scene koja se izračunava operacijama spomenutim u prethodnim poglavljima se prikazuje na ekranu računara procesom koji se zove rendering. Postoje dva glavna pristupa renderingu: razmatranje svakog pixela i objekata koji utiču na njegovu boju (ray tracing) i razmatranje svakog objekta i pronalaženje pixela na koje on utiče (rasterizacija). Rendering rasterizacijom je proces pronalaženja svih pixela u slici koje okupira neka geometrijska primitiva [1]. Sekvenca operacija koja je za to potrebna, počevši od objekata i završavajući sa pixelima slike zove se grafički pipeline (slika 40).

    Slika 40. Faze u grafičkom pipeline-u

    Objektno orijentisani rendering je veoma efikasan. Kod velikih scena ovaj način rendanja postiže mnogo bolje performanse. Postoje različiti primjeri hardverske implementacije grafičkih pipeline-a, koji podržavaju interaktivno renderovanje na bazi OpenGL-a i Direct3D-a i softverskih pipeline-a koji se koriste u filmskoj produkciji (RenderMan). Mi ćemo spomenuti zajedničke karakteristike ovih pipeline-a. Na slici 40 su prikazane 4 glavne faze u grafičkom pipeline-u. Objekti prikazani u 3D sceni kao skupovi vrhova se podvrgavaju procesiranju vrhova. Primitive koje koriste te vrhove se šalju na rasterizaciju. Rasterizator rastavlja svaku primitivu na skup fragmenata, po jedan za svaki pixel koji ona pokriva. Fragmenti se procesiraju u posebnoj fazi i oni koji odgovaraju istom pixelu se kombiniraju kombiniraju u fazi fragment blending-a.

  • 37

    Rasterizacija je glavna operacija u objektno orijentisanom renderingu, tako da je rasterizator centralni dio svakog grafičkog pipeline-a. Za svaku primitivu koja u njega ulazi, rasterizator radi sljedeće: označava brojevima pixele koje pokriva ta primitiva i interpolira vrijednosti, zvane atributi, preko te primitive. Izlaz rasterizatora je skup fragmenata, po jedan za svaki pixel koji pokriva ta primitiva. Svaki fragment "živi" na određenom pixelu i nosi vlastiti skup atributa. Prije rasterizacije primitive, vrhovi koji je definišu moraju biti izraženi u ekranskim koordinatama, a boje i ostali atributi koji treba da budu interpolirani preko primitive moraju da budu poznati. Priprema ovih podataka je zadatak faze procesiranja vrhova. U toj fazi se ulazni vrhovi transformišu modeling, viewing i projekcijskim transformacijama, mapirajući ih sa njihovih originalnih koordinata u ekranski prostor koji se mjeri pixelima. U isto vrijeme druge informacije, kao što su boja, normale na površinu ili koordinate tekstura, se također po potrebi transformišu, što ćemo prodiskutovati u sljedećim primjerima. Nakon rasterizacije, dalje procesiranje se radi da bi se izračunala boja i dubina svakog fragmenta. Ono može biti jednostavno poput prostog prolaska kroz interpolirane boje i korištenje dubine koju je izračunao rasterizator, ili može uključivati kompleksnije operacije sjenčenja. Na kraju, blending faza kombinuje fragmente generisane od strane (moguće više) primitiva koje poklapaju svaki pixel da bi se izračunala finalna boja. Najčešći blending pristup je biranje boje fragmenta sa najmanjom dubinom (najbližeg oku). Svrhe pojedinih faza najbolje ilustriraju sljedeći primjeri. Prosto 2D iscrtavanje Najjednostavniji mogući pipeline ne radi ništa u fazi vrhova ili fragmenata, a u blending fazi boja svakog fragmenta samo prepisuje vrijednosti prethodnog. Aplikacija dostavlja primitive direktno u pixel koordinatama i rasterizator radi sav posao. Na ovaj način rade starije aplikacije za iscrtavanje korisničkih interfejsa, grafova i drugog 2D sadržaja. Oblici u jednoj boji se mogu iscrtavati specificiranjem iste boje za sve vrhove svake primitive, a podržano je i blago variranje te boje pomoću interpolacije. Minimalni 3D pipeline Za iscrtavanje objekata u 3D jedino što treba promijeniti u 2D pipeline-u jeste matrica transformacija. U fazi procesiranja vrhova multipliciraju se pozicije dolazećih vrhova proizvodom modeling, kamera, projekcionih i viewport matrica, što rezultuje u trouglovima u ekranskom prostoru koji se iscrtavaju na isti način kao da su bili direktno specificirani u 2D. Jedini problem minimalnog 3D pipeline-a je da primitive moraju biti crtane u obrnitom rasporedu da bi se dobile ispravne occlusion relacije (da bi se bliži objekti

  • 38

    prikazali ispred daljih). Ovo je poznato kao slikarov algoritam za uklanjanje sakrivenih površina, po analogiji na slikara koji prvo slika pozadinu slike. Ovaj algoritam uklanjanja sakrivenih površina ima nekoliko nedostataka. Ne može podržati trouglove koji se presijecaju jer nema ispravnog poretka njihovog iscrtavanja. Slično, ako se nekoliko trouglova koji se ne presijecaju nalaze u occusion ciklusu (slika 41), drugi način poretka ne postoji.

    Slika 41. Occlusion ciklusi I najvažnije, sortiranje primitiva po dubini je sporo, posebno kod velikih scena, što narušava performanse procesa renderinga. U praksi se slikarov algoritam rijetko koristi. Umjesto njega koristi se jednostavni i efikasni z-buffer algoritam. Kod ovog algoritma se za svaki pixel prati udaljenost do najbliže površine koja je do tada bila iscrtana i odbacuju se fragmenti koji su dalji od te udaljenosti. Najbliža udaljenost je smještena alociranjem dodatne vrijednosti za svaki pixel, poznate kao z-depth vrijednost. Depth bafer je ime za mrežu depth vrijednosti. Ovaj algoritam je implementiran u fragment blending fazi, poređenjem dubine svakog fragmenta sa tekućom vrijednosti smještenom u z-buffer-u. Ako je dubina fragmenta bliža, vrijednosti njegove boje i i dubine će prepisati vrijednosti koje su trenutno u color i depth baferima. Ako je dubina fragmenta dalja, on se odbacuje. Da bi se osiguralo da prvi fragment prođe test dubine, z-buffer se inicijalizira na maksimalnu dubinu (dubinu daleke ravni). Bez obzira na red kojim se iscrtavaju površine, isti fragment će pobijediti na depth testu i slika će biti ista. Z-buffer algoritam zahtijeva da svaki fragment nosi informaciju o dubini. To se radi jednostavnim interpoliranjem z koordinate kao atributa vrha, na isti način kako se interpoliraju boja i ostali atributi. 1.4.1. Per-vertex sjenčenje Do sada je aplikacija koja je slala trouglove u pipeline bila odgovorna za boju, rasterizator je samo interpolirao boje i one su ispisivane direktno u izlaznu sliku. Za neke aplikacije je ovo dovoljno, ali u mnogo više slučajeva želimo da 3D objekti budu iscrtani sa sjenčenjem. Jedan način da se podrže izračuni sjenčenja jeste da se izvrše

  • 39

    u fazi vrhova. Aplikacija obezbjedjuje vektore normala na vrhovima, a pozicije i boje svjetala se dostavljaju odvojeno jer ne variraju preko površine. Za svaki vrh se računaju pravac pogleda posmatrača i pravac svakog svjetla na bazi pozicije kamere, svjetala i vrha. Željena jednačina sjenčenja se izračunava da bi se dobila boja, koja se onda prosljeđuje rasterizatoru kao boja vrha. Ovo sjenčenje se nekad naziva i Gouraud sjenčenje. Nedostatak per-vertex sjenčenja je da ne može proizvesti nikakve detalje manje od primitiva koje se koriste za iscrtavanje površine, jer se sjenčenje računa jednom za svaki vrh i nikad izmedju vrhova. Npr. u sobi čiji pod se icrtava pomoću dva velika trougla i osvijetljen je izvorom svjetla u sredini sobe, sjenčenje će se računati samo na uglovima sobe i interpolacija će vjerovatno biti previše tamna u centru. Također, zakrivljene površine koje imaju spekularne odsjaje moraju se iscrtavati pomoću primitiva dovoljno malih da bi se riješili ovi odsjaji. 1.4.2. Per-fragment sjenčenje Da izbjegnemo artifakte koji se pojavljuju kod interpolacije u per-vertex sjenčenju, možemo izbjeći interpoliranje boja tako što ćemo izvršiti računanje sjenčenja nakon interpolacije, u fazi fragmenata. Kod ovog sječenja se računaju iste jednačine sjenčenja, ali za svaki segment putem interpoliranih vektora, a ne za svaki vrh pomoću vektora iz aplikacije. Kod per-fragment sjenčenja geometrijska transformacija koja je potrebna se prosljeđuje rasterizatoru kao atribut, tako da faza vrhova mora koordinirati sa fazom fragmenata da bi se podaci pripremili na pogodan način. Jedan od pristupa je interpoliranje normale na površinu i pozicije vrha u prostoru pogleda, koje se kasnije mogu koristiti kao kod per-vertex sjenčenja. 1.4.3. Mapiranje tekstura Teksture su slike koje se koriste da dodaju detalje sjenčenju površina kako bi izgledale realističnije. Ideja je jednostavna:svaki put kad se računa sjenčenje čita se jedna od vrijednosti koje se u tom računanju koriste, npr. difuzna boja, iz teksture, umjesto da se koriste vrijednosti atributa pridruženih geometriji koja se renda. Ova operacija je poznata kao texture lookup: kod sjenčenja specificira koordinatu teksture i tačku u domenu teksture, a sistem za mapiranje pronalazi vrijednost u toj tački teksture i vraća je. Ova vrijednost se onda koristi u računanju sjenčenja. Najjednostavniji način definisanja koordinata teksture je njihovo jed nostavno dodavanje u formi još jednog atributa vrha. Svaka primitiva onda zna gdje je njeno mjesto u teksturi. 1.4.4. Antialiasing Kao i ray tracing, rasterizacija nekad proizvodi iskrzane linije i trouglove na ivicama ako se izvrši jasna odluka da li je određeni pixel unutar primitive ili ne. Zbog toga se opisana rasterizacija često zove "aliased". Rješenje ovog problema je da se dozvoli da pixel bude parcijalno pokriven primitivom (slika 42) .

  • 40

    Slika 42. Aliasing i antialiasing U praksi ovaj način bluriranja poboljšava vizualni kvalitet, posebno u animacijama. Postoji nekoliko pristupa antialiasingu u aplikacijama rasterizacije. Jedan je postavljanje svakog pixela na srednju vrijednost boje u kvadratnoj oblasti oko pixela, tzv. box. Najjednostavniji način implementacije box filter antialiasing je supersampling: kreiranje slika vrlo visoke rezolucije i njihovo downsampliranje. 1.4.5. Odbacivanje primitiva zbog efikasnosti (culling) Snaga renderinga na bazi objekata je u tome što zahtijeva samo jedan prolaz preko sve geometrije u sceni. Medjutim, to je istovremeno i njegova slabost. Npr. u modelu cijelog grada, samo nekoliko zgrada će biti vidljive u jednom trenutku vremena. Korektna slika se može izračunati prikazom svih primitiva iz scene, ali se gubi na efikasnosti procesiranjem geometrije koja se nalazi iza vidljivih zgrada ili iza gledaoca. Identificiranje i odbacivanje nevidljive geometrije da bi se uštedilo na vremenu procesiranja zove se culling. Tri najčešće implementirane culling strategije su: - view volume culling - uklanjanje geometrije izvan frustuma pogleda - occlusion culling - uklanjanje geometrije koje je u polju pogleda ali je zaklonjena drugom geometrijom bližom kameri - backface culling - uklanjanje primitiva koje gledaju suprotno od kamere View volume culling Kada cijela primitiva leži izvan frustuma pogleda ona se može odbaciti jer ne proizvodi fragmente u fazi rasterizacije. Odbacivanje ovakvih primitiva pomoću brzog testa značajno poboljšava efikasnost iscrtavanja. S druge strane testiranje svake primitive posebno da bi se odlučilo koja će se iscrtati može trajati više nego njena eliminacija tokom rasterizacije. View volume culling je posebno pogodno kada je mnogo trouglova grupisano u objekat unutar dodijeljene granične zapremine. Ako granična zapremina leži unutar frustuma pogleda, onda leže i svi njeni trouglovi. Npr. ako imamo 1000 trouglova ograničenih sferom sa centrom c i radijusom r, možemo provjeriti da li ta sfera leži unutar ravni frustuma (p − a) · n = 0,

  • 41

    gdje je a tačka na ravni, a p varijabla. Ovo je ekvivalentno provjeravanju da li je udaljenost od centra sfere c do ravni veća od +r. Zapravo treba provjeriti da li je

    Primijetimo da sfera može preklapati ravan čak i kada svi trouglovi leže van ravni. Sve zavisi od toga koliko dobro sfera ograničava objekat. Ista ideja može biti primijenjena hijerarhijski ako je scena organizirana u jednu od prostornih struktura podataka koje će biti opisane u poglavlju 2.5. Backface culling Kada su poligonalni modeli zatvoreni, tj. ograničavaju zatvoren prostor bez rupa, često se pretpostavlja da imaju vektore normala koji su okrenuti napolje. Za ovakve modele, poligoni koji su okrenuti suprotno od vektora pogleda će sigurno biti prepisani poligonima koji su okrenuti prema vektoru pogleda. Zato se ovi poligoni mogu odbaciti i prije početka pipeline-a.

  • 42

    2. NAČINI MODELIRANJA

    Programi za 3D modeliranje i animaciju podržavaju različite algoritme i metode pomoću kojih predstavljaju različite vrste objekata u sceni. Počevši od osnovnih geometrijskih oblika (kvadar, sfera, valjak, torus) kao osnove za modeliranje, preko površina koje se sastoje iz međusobno povezanih komadića, do fraktala ili sistema čestica, veliki je broj tehnika modeliranja i njihovih implementacija. U ovom poglavlju daćemo pregled osnovnih grupa i njihovih implementacija. 2.1. Žičani model Jedan od najjednostavnijih metoda kreiranja 3D objekata je njihovo konstruisanje iz skupa linija koje predstavljaju ravne ivice koje identificiraju njegove glavne geometrijske osobine [4]. Takav metod je poznat ako žičani model jer izgleda kao da je objekat konstruisan od žice. Slika 43 prikazuje sto koji je napravljen u žičanom modelu.

    Slika 43. Žičani model

  • 43

    Kako su ovi objekti napravljeni od nekoordiniranog skupa ivica, to može uzrokovati teškoće programima u otklanjanju ivica koje su maskirane drugim površinama. To je zato jer numerički podaci ne sadrže informaciju koja pridružuje ivice njihovim površinama. Zato se žičani model ne razmatra kao validan način modeliranja, nego se taj termin koristi za opisivanje transparentnog pogleda na model konstruisan od ivica. Ideja definiranja površine objekta preko njegovih ivica još uvijek postoji, ali treba postojati i odgovarajuća struktura podataka koja bi opisala kako su ivice povezane da formiraju elemente ograničenih površina, što vodi ka graničnoj reprezentaciji. 2.2. Granična reprezentacija Granična reprezentacija se odnosi na takav način modeliranja koji konstruiše 3D objekat iz opisa površina, a ne zapremine. Npr. kocka koja je ranije opisana predstavlja opis površine pomoću koordinata vrhova koji definiraju stranice, a one formiraju poligone površina. Ovo je očito granična reprezentacija jer postoji eksplicitna geometrija za definiranje bilo koje tačke na površini kocke. Međutim, nemamo slične podatke za definiranje tačaka unutar i izvan kocke. Nadalje, iako je jednostavno izračunati zapreminu kocke, ona se ne može direktno izračunati iz ovih podataka o granicama. Potrebna je određena reorganizacija tih podataka. 2.2.1. Planarni poligoni Poligon definiše klasu figure konstruisanu iz lanca ravnih ivica. Ovo uključuje oblike čije su granice konveksne, konkavne ili se presijecaju i mogu ali ne moraju biti planarni. Zbog ovog širokog opsega konstrukcija poligonalno modeliranje se uglavnom radi na planarnim poligonima koji su ili konkavni ili konveksni, mada konkavni poligoni komplikuju stvari. Npr. kod konveksnog poligona svaka tačka unutar granice treba da presiječe granicu samo jednom da bi se našla izvan dok konkavne granice mogu uzrokovati veliki broj čudnih presjeka.

    Slika 44. Konveksan i konkavan poligon Slika 44 ilustrira ovaj efekat. Nadalje, bilo koje dvije susjedne ivice u konveksnom poligonu mogu se koristiti kao vektori da bi se izveo konzistentan ortogonalni vektor na površinu, dok konkavni poligon može preokrenuti pravac vektora zavisno od ugla koji zatvaraju ivice.

  • 44

    Ovi popratni efekti kod konkavnih poligona mogu biti veoma nepovoljni kada se razvija algoritam za sjenčenje pa se ili izbjegava njihovo dozvoljavanje kod modeliranja ili se poligon triangulira tj reducira na mrežu trouglova koji mogu biti samo konveksni i uvijek su planarni. Nadalje ćemo pretpostaviti da su svi poligoni planarni i konveksni. Pravljenje objekata pomoću poligona je relativno jednostavno i zahtijeva samo da se identificiraju važne ivice i konstruiše familija strana koje pokrivaju površinu. U kompjuterskoj animaciji pri modeliranju uvijek moramo voditi računa o tome kako će objekat biti animiran. Da bismo ovo objasnili konstruišimo kocku.

    Slika 45. Konstrukcija kocke Slika 45 pokazuje njenu poziciju relativno u odnosu na neki koordinatni sistem i zbog jednostavnosti pretpostavimo da je svaka strana duga jednu jedinicu dužine. Kocka može biti konstruisana na različite načine i jedan od njih bi bio da smjestimo koordinate osam vrhova u tabelu kako je prikazano na slici 45. Druga tabela bi referencirala ove vrhove da formiraju šest graničnih poligona. Program onda može konstruisati bilo koji poligon izvlačenjem četiri vrha iz tabele poligona. Kocka će biti animirana tako što će se spljoštiti na vrhu broj 7 sa koordinatama (1, 1, 1). Ovaj vrh bi mogao lagano padati prema dolje, recimo na (1, 0.5, 1) mijenjanjem y koordinate vrha od 1 do 0.5 u određenom periodu vremena. Program za renderovanje koji zapravo kreira sliku u boji bi prema podacima iz dvije tabele konstruisao poligone kocke u svakom frejmu animacije. Ako se reducira y koordinata vrha 7, gornji poligon kocke više nije planaran, nego je uvrnut i veoma je moguće da će renderer proračunati osvjetljenje na pogrešan način. Zato, ako zaista želimo da se kocka spljošti preko vrha 7, onda vrhovi 6 i 8 moraju također biti pomaknuti da bi se očuvala planarnost gornjeg poligona.

  • 45

    U realnosti način na koji kocka mijenja svoju geometriju zavisi od njenog sastava. Promjene na kocki koja je napravljena od spužve su drukčije od promjena na kocki od gline. Također kocka napravljena od aluminijskih ploča reaguje drukčije od kocke koja je napravljena od papira. Drugi primjer za animaciju može biti podizanje gornje ploče kocke kao da je fiksirana za jednu od ivica. Sa predloženim načinom modeliranja ovo predstavlja ozbiljan problem, jer ne samo da gornje vrhove dijele četiri stranice, nego i stranice kocke nemaju debljine i zato njihova unutrašnjost ne postoji. Konstruisanje čvrste kocke zahtijeva modeliranje kao što je prikazano na slici 46.

    Slika 46. Kocka koja ima unutrašnjost

    Možemo vidjeti da zahtjevi animacije moraju biti anticipirani u fazi modeliranja i da renderer mora imati dovoljno geometrije da bi mogao uraditi svoj posao, a dio tog posla je da ima pristup ivicama koje formiraju granične poligone. U takvim slučajevima objekti su definirani u obliku hijerarhije poligona napravljenih od ivica, koje su opet napravljene od vrhova i predstavljeni su pomoću tri liste podataka o poligonima, ivicama i vrhovima. 2.2.2. Ekstrudiranje Iako je metod poligonalne površine pogodan za konstruisanje objekata on može postati nepraktičan za kompleksne objekte. Da bi se to prevazišlo, uvedena su neka skraćenja kao pomoć u pravljenju generičkih formi. Prva takva tehnika je ekstrudiranje. Ono automatski konstruiše graničnu reprezentaciju istezanjem presječnog oblika duž njegove ose i kreira njegovu ekstruziju duž zadane dužine. Slika 47 ilustrira presjek i 3D površinu kreiranu pomicanjem presjeka u pravcu z-ose.

  • 46

    Slika 47. Ekstrudiranje

    Konstruisanje površine može se vršiti automatski pomoću kompjuterskog programa koji zahtijeva samo podatke o koordinatama presječne površine i dužinu istezanja. Tada postoji dovoljno informacija o svakom vrhu na ekstrudiranoj površini. U procesu pravljenja objekta program može raditi u skladu sa konvencijom konstruisanja poligona čiji su vrhovi orijentirani u pravcu kazaljke na satu ili obrnuto. Ako se ovaj pravac ne slaže sa orijentacijom koju podrazumijeva renderer, može doći do problema sa sjenčenjem unutrašnjosti ili spoljašnjosti objekta. Zbog toga neki komercijalni sistemi za modeliranje imaju komandu koja omogućava preokretanje pravca granica poligona. Dalji razvoj ovog metoda je konstrukcija familije poligona površine na nekoliko stepena ekstruzije, gdje je ne svakom stepenu presječna površina rotirana. Ovo omogućava modeliranje uvrnutih oblika. Slika 48 ilustrira primjer ovog procesa.

    Slika 48. Ekstrudiranje sa uvrtanjem Nekada se tokom ovog procesa može mijenjati i veličina presječne površine ili se čak njen oblik pretvarati u neki drugi. Idealno, program za ekstrudiranje treba omogućiti korisniku da definira početni i krajnji oblik presječne površine i ugao rotacije koji se na nju primjenjuje u svakom stepenu procesa ekstrudiranja. Nadalje, umjesto ravne dužine ekstrudiranja, procedura treba dozvoliti da bilo koja 3D kontura formira centralnu liniju finalnog objekta. 2.2.3. Razvijene površine

  • 47

    Razvijene površine nam pomažu da konstruišemo objekte kao što su čaše, sfere, boce ili neke šahovske figure. Ovi objekti posjeduju simetriju oko centralne ose. Opet se zahtijeva glavna 2D kontura koja se ovaj put rotira oko jedne od 3D osa da bi se dobila razvijena površina.

    Slika 49. Razvijena površina

    Slika 49 pokazuje kako se iz 2D konture može formirati čaša za vino. Primijetimo da je finalna površina još uvijek konstruisana iz planarnih poligona čiji broj zavisi od broja vrhova u originalnoj konturi i veličine ugla za koji se ona zaokreće u svakom stepenu konstrukcije. Korak ugla postaje veoma koristan metod u kreiranju više objekata od jedne konture. Kao i kod ekstrudiranja, razvijene površine se mogu generisati automatski, s tim što korisnik specificira konturu, broj inkremenata koji će se napraviti prilikom rotacije od 360 stepeni i osu oko koje će se vršiti rotacija. Ovakav program će proizvoditi samo simetrične objekte, međutim, uz malo modifikacija može se koristiti i za kreiranje asimetričnih objekata. Za početak zamislimo površinu koja se dobije tako što se tokom rotacije konture oko referentne ose sama osa pomjera duž nekog zatvorenog puta. Slično, zamislimo razvijene oblike koji se mogu kreirati modificiranjen glavne 2D konture dok se ona rotira. 2.2.4. Površine slobodnog oblika Veliki broj objekata koji se nalaze u svijetu oko nas nije sagrađen od poligona. Možda zidovi sobe i plafon i jesu veliki poligoni, ali ručka na vratima, telefon i cvijet su skupovi kompleksnih površina koje zahtijevaju analitičko matematičko rješavanje. Ovakvi oblici se u kompjuterskoj grafici zovu površine slobodnog oblika. Za konstruisanje ovakvih površina postoji mnoštvo tehnika od upotrebe 3D digitajzera do tehnika koje rade samo sa partikulrnim dijelovima objekata. Filozofija dizajna modeliranja komadića površine je bazirana na činjenici da je teško, ali moguće identificirati jednakosti koje opisuju geometriju čajnika ili jabuke. Međutim, problem se pojednostavljuje ako je površina podijeljena u mala područja koje pojedinačno imaju jednostavno geometrijsko rješenje. Ovaj pristup može pojednostaviti inicijalnu kompleksnost ali uvodi novi problem spojeva između

  • 48

    komadića. Bez obzira koja se tehnika koristi, spojevi moraju biti nevidljivi za oko jer inače ih nema smisla koristiti. Ako spojevi nisu ostali nevidljivi primijetićemo promjene u nagibu površine. Da bi se očuvao nagib površine uveden je pojam parametarskih krivih. 2.2.4.1. Bilinearne površine Zamislimo da su zadate četiri tačke u 3D prostoru kao što je prikazano na slici 50 i da treba izvesti linearnu funkciju koja identificira bilo koju tačku unutar granice ovog komadića površine.

    Slika 50. Komadić površine Prvo se konstruiše dijagram parametarskog prostora, prikazan na istoj slici, koji pokazuje odnos parametara u i w sa tačkama komadića. Sada se linearna funkcija koja povezuje tačke P11 i P21 može izraziti kao: Pa(u) = (1-u)P11 + uP12 gdje je Pa(u) bilo koja tačka na liniji [P11,P12] Slična funkcija za tačke P12 i P22 je Pb(u) = (1-u)P21 + uP22 gdje je Pb(u) bilo koja tačka na liniji ŠP21,P22]. Tačke Pa(u) i Pb(u) mogu biti linearno povezane koristeći drugi parametar w i izraz P(u,w) = (1-w) Pa(u) + w Pb(u)

  • 49

    koji se proširuje u P(u,w) = (1-u)(1-w) P11 + u(1-w) P21 + (1-u)w P12 + uw P22 što ima matričnu formu

    Ovo se čak može rearanžirati kao

    Ostaje čitaocu da istraži ovu relaciju, gdje se biranjem različitih vrijednosti u i w unutar opsega između 0 i 1 mogu izvesti x, y i z koordinate od P(u,w) zamjenom odgovarajućih koordinata za P11, P21, P12 i P22. 2.2.4.2. Ruled površine (površine izvučene pomoću crta) Ruled površina je razvijena iz familije pravih linija. Npr. ako uzmemo dvije palice i fiksiramo ih odvojeno u prostoru, možemo ih povezati sa gustim komadima konopca koji formiraju ruled površinu. Primjeri ovakvih površina se mogu naći na cilindrima ili kupama. Oblici koji formiraju površinu ne moraju biti pravi, oni mogu biti bilo kojeg oblika. Jedan kraj može biti prav, dok drugi formira polukrug. Važna osobina je da su tačke na dva oblika povezane pravim linijama. Pogodan metod za kreiranje ovakvih površina je upotreba parametarskog pristupa gdje dvije parametarske krive formiraju granične oblike, koji su onda linearno interpolirani. Kao primjer razmotrimo parametarske izraze za izvođenje Bezierove kvadratične krive. Počnimo sa 2D kvadratičnom Bezierovom krivom čija forma je određena pomoću dva parametarska izraza koji opisuju x i y koordinate bilo koje tačke na krivoj. Ako su dvije krajnje tačke krive P1 i P2, sa koordinatama (x1, y1) i (x2, y2) respektivno, onda bilo koja tačka P(t), gdje je t parametar između granica 0 i 1, ima koordinate (x(t), y(t)) definirane na sljedeći način: x(t) = (1-t)2x1 + t2x2 + 2t(1-t)xc y(t) = (1-t)2y1 + t2y2 + 2t(1-t)yc gdje su (xc, yc) koordinate kontrolne tačke koja utiče na oblik krive između P1 i P2. Slika 51 pokazuje oblik kvadratične Bezierove krive sa dvije različite kontrolne tačke. Termi u parametru t su izvedeni iz algebarskog izraza koji ima sljedeći oblik:

  • 50

    (a + b)2 = a2 + b2 + 2ab i ako je a = (1-t), a b = t dobićemo gornje izraze za x(t) i y(t).

    Slika 51. Uvođenjem trećeg izraza za dobijanje vrijednosti z(t) dobićemo 3D kvadratičnu Bezierovu prostornu krivu. Uloga kontrolne tačke sada ima prostornu interpretaciju, tako da se ona ponaša kao tačka kojoj je kriva privučena, ali je nikad ne dotiče. Ako su P1 i P2 granične tačke krive sa koordinatama (x1, y1, z1) i (x2, y2, z2) respektivno i kontrolne tačke imaju koordinate (xc, yc, zc) i (xd, yd, zd) onda bilo koja tačka na krivoj P(t) ima koordinate (x(t), y(t), z(t)) definisane izrazima: x(t) = (1-t)3x1 + t3x2 + 3t(1-t)2xc + 3t2(1-t)xd y(t) = (1-t)3y1 + t3y2 + 3t(1-t)2yc + 3t2(1-t)yd z(t) = (1-t)3z1 + t3z2 + 3t(1-t)2zc + 3t2(1-t)zd koji su izvedeni iz algebarskog izraza (a + b)3 = a3 + b3 + 3a2b +3ab2 gdje je a = (1-t) i b = t. Ako funkcija B(1,w) računa 3D Bezierovu krivu iz kontrolnih tačaka P11, P12 i P13, a funkcija B(2,w) računa sličnu Bezierovu krivu iz kontrolnih tačaka P21, P22 i P23 onda ruled površina može biti definisana sa P(u, w) = (1-u)B(1,w) + uB(2,w) gdje je 0

  • 51

    Slika 52. Komadić površine između dvije Bezierove krive 2.2.4.3. Bezierovi komadići površine Objasnili smo geometriju Bezierovih krivih i opisali kako se takve krive računaju uz pomoć funkcija koje, kada imaju parametar, daju eksplicitnu poziciju tačaka na krivoj. Ove pozicije se baziraju na lokaciji određenih kontrolnih tačaka, kojih u slučaju kvadratične krive ima tri, a u slučaju kubične krive četiri. Slika 53 ilustrira dvije ovakve krive.

    Slika 53. Kvadratična i kubična Bezierova kriva

    Da bismo konstruisali Bezierov komadić površine, potrebno je devet kontrolnih tačaka u obliku matrice 3x3. Bilo koja tačka pridružene Bezierove površine može se sračunati specificiranjem vrijednosti dva parametra koji variraju u opsegu od 0 do 1.

  • Slika 54. Komadić površine u 3D prostoru

    Ako su ovi parametri označeni sa u i w, i kontrolne tačke označene kao na slici 54, onda se bilo koja tačka P(u,w) može pronaći razvijanjem x, y i z komponenti kontrolnih tačaka na sljedeći način:

    ili

  • Rizvić, Okanović / Kompjuterska grafika / 53

    53

    Tabela 2. Računanje P(u,w)

    Tabela 2 pokazuje kako se P(u, w) računa za određene vrijednosti u i w, odakle vidimo da se bilo koja tačka na Bezierovoj površini izvodi sumiranjem kontrolnih tačaka uz dodatak izraza generisanih pomoću gornjih matrica. Ako su umjesto kvadriranih izraza za kvadratnu jednačinu, oni kubni, prošireni izrazi glase: (1-u)3, (1-u)23u, (1-u)3u2, u3 i mogu se koristiti za izvođenje kubičnog Bezierovog komadića površine. Ovaj put je potrebna 4x4 matrica kontrolnih tačaka i bilo koja tačka P(u, w) se može naći razvojem x, y i z koordinata kontrolnih tačaka na sljedeći način:

    ili

    Znači, sa samo devet kontrolnih tačaka za kvadratični spoj i 16 za kubični, može se definisati kontinuirani komadić prostora čija se geometrija može modificirati podešavanjem jedne ili više kontrolnih tačaka. Ovo je snažna alatka za modeliranje, ali moramo upamtiti da ovaj pristup može funkcionirati samo ako se može očuvati kontinuitet nagiba od jednog komadića do drugog.

  • Rizvić, Okanović / Kompjuterska grafika / 54

    54

    Iako nije teško zamisliti talasastu površinu, mjerenje njenog nagiba u tri dimenzije je druga stvar, pa bi možda bilo korisno da se vratimo 2D Bezierovim krivim da bi vidjeli kako se može definirati karakteristika nagiba.

    Slika 55.Kvadratična Bezierova kriva

    Razmotrimo kvadratičnu Bezierovu krivu na slici 55. Može se pokazati da je nagib krive kod P1 jednak nagibu prvog razmaka od P1 do P2, i nagib krive kod P3 je jednak nagibu zadnjeg razmaka od P2 do P3. Zbog toga, da bismo održali kontinuitet nagiba između dva segmenta Bezierove krive, moramo biti sigurni da se nagib uspinjuće kontrolne tačke poklapa sa nagibom vodeće kontrolne tačke druge krive. Slično, može se pokazati da se kontinuitet nagiba komadića površine u tri dimenzije može održati ako: 1) su kontrolne tačke na granici između dva komadića identične i ako 2) su poligoni koje formiraju kontrolne tačke na graničnoj ivici koplanarni u odnosu na oba komadića površine. Ovi uvjeti su pokazani na slici 56 za dva bikubična Bezierova komadića površine.

    Slika 56. Dva bikubična Bezierova komadića površine Da bismo konstruisali površinu koja se sastoji od Bezierovih komadića moramo identificirati broj i poziciju komadića i prilagođavati kontrolne tačke dok se ne postigne ta površina. Ovo izgleda kao vizuelno kompleksan zadatak, i jeste, ali uz pomoć računara dobrih performansi i pravih alatki za modeliranje, postaje relativno lak. Moderni računari su sposobni da

  • Rizvić, Okanović / Kompjuterska grafika / 55

    55

    manipuliraju 3D kontrolnim tačkama u realnom vremenu i da istovremeno prikazuju odgovarajuće Bezierove krive, tako da se prilikom pomicanja kontrolne tačke Bezierova kriva odmah računa i ponovo prikazuje. Kao zadnji primjer uzmimo modeliranje sfere od kubičnih Bezierovih komadića. Ovo može biti postignuto sa osam komadića, gdje jedan komadić modelira jedan oktant sfere. Postoji, međutim, mali problem oko tačnosti, jer Bezierova kubična površina nije u mogućnosti precizno pogoditi geometriju sfere, nego postoji mala greška ispod 0.1%. Ako se ovo ne može tolerisati, koristi se drugi tip Bezierove površine koji se zove racionalna Bezierova površina i precizno se poklapa sa geometrijom sfere. 2.2.4.4. B-spline komadići površine U prethodnom odjeljku smo vidjeli kako se koristi matrica kontrolnih tačaka za definiranje Bezierovog komadića površine i ako se promijeni bilo koja od ovih tačaka, poremeti se cijela površina. Razlog ovog globalnog poremećaja je u Bezierovom algoritmu koji računa koordinate bilo koje tačke na površini variranjem proporcija kontrolnih tačaka. Međutim, ako se algoritam modificira da mu je dovoljna bilo koja veličina matrice kontrolnih tačaka i da upotrebljava samo one tačke koje su neophodne za računanje odgovarajućeg dijela površine, onda se dobiva B-spline algoritam. Posljedica ove modifikacije je da kao što Bezierov algoritam radi sa parametrom koji varira od 0 do 1, tako B-spline algoritam zahtijeva string parametara određenih brojem kontrolnih tačaka i tipom krive, tj. da li je kvadratična, kubična ili kvartična. Ove vrijednosti parametara se zovu knot vektori. Vrijednosti knot vektora također utiču na prirodu površine, jer se u algoritmu koriste da variraju uticaj koji kontrolna tačka ima na finalnu geometriju. Ako su knot vrijednosti razmaknute jednako, onda će ih algoritam tako i upotrebljavati, a ako vrijednosti imaju neregularan ili neuniforman razmak, uticaj na kontrolne tačke se mijenja i rezultira u lokalnom pomjeranju površine. Druga korisna osobina B-spline pristupa je da se knot vektori mogu ponavljati, ovo ima efekat naglašavanja postojanja kontrolne tačke, što je korisno za formiranje vrhova. Kao što Bezierov algoritam ima svoju racionalnu formu, B-spline također može biti prikazan kao razlomak dva polinoma što omogućava tačno kreiranje lukova i krugova. Kao potvrda da B-spline sistem ima najveću fleksibilnost, on je implementiran da podržava neuniformni razmak knotova i racionalnu formu za opis lukova i krugova. Takav B-spline je poznat kao neuniformni racionalni B-spline (NURBS). Glavna prednost u dizajnu kod B-splinea je da kada je pomjerena kontrolna tačka to utiče samo na lokalni dio krive osjetljiv na klaster tačaka koji sadrži tu tačku. Ovo je korisna osobina za dizajniranje kompleksnih oblika. Komadići mogu dalje biti oblikovani odsijecanjem određenih dijelova; oblik tih površina može također biti spline i takve pozadine se zovu trimovane površine. Većina komercijalnih CAD sistema koriste trimovane površine kao vitalnu strategiju modeliranja, posebno u automobilskoj industriji kod dizajniranja karoserija automobila. 2.3. Zapreminska reprezentacija

  • Rizvić, Okanović / Kompjuterska grafika / 56

    56

    Kao što je ranije spomenuto, zapreminski načini modeliranja konstruišu objekte iz skupa 3D osnovnih zapremina umjesto da kreiraju graničnu površinu koja zatvara željenu zapreminu. Dva glavna pristupa su konstruktivna čvrsta geometrija (CSG - constructive solid geometry) i šeme prostorne podjele. Druga tehnika ima ograničenu primjenu u komercijalnoj kompjuterskoj animaciji, iako u zadnje vrijeme postaje važna u naučnoj i medicinskoj vizualizaciji. Posljedica ovih alternativnih šema je da one utiču na algoritme potrebne za generisanje finalne slike i opseg efekata za animaciju koje je moguće kreirati. Prvo razmotrimo ideje vezane za CSG. 2.3.1. Konstruktivna čvrsta geometrija Konstruktivna čvrsta geometrija ili set-theoretic modeliranje pokušava da napravi objekat od malog skupa 3D formi kao što su box, sfera, cinidar, konus, torus i heliks. Ovo može izgledati kao nemoguć zadatak što u nekim primjenama i jeste, kao npr. u modeliranju ljudskog lica. Zato se ova tehnika koristi u modeliranju scena koje imaju inherentnu geometrijsku formu. Npr. neke mehaničke komponente ili arhitektonske strukture se mogu napraviti pomoću CSG-a. Jedna od neobičnih osobina ove tehnike je sposobnost sabiranja i oduzimanja zapremina, kao i identificiranje zapremine prostora koju dijele dvije primitive koje se sijeku. Počnimo sa razmatranjem operatora unije koji kombinira dva objekta.

    Slika 57 Npr. recimo da je potrebno napraviti objekat sa slike 57a. Možemo vidjeti da se on sastoji od tri blok elementa A, B i C, ali ako su B i C identični, onda se može zamisliti da se objekat sastoji od dva bloka A i D koji se presijecaju, kao što je prikazano na slici 57b. Koristeći notaciju CSG-a, finalni objekat se konstruiše kao unija A i D kao što je pokazano dijagramom stabla na slici 58.

  • Rizvić, Okanović / Kompjuterska grafika / 57

    57

    Slika 58 Kao drugi primjer razmotrimo objekat pokazan na slici 59a - to je blok koji sadrži rupu. On može biti definiran koristeći operaciju razlike kojoa oduzima jednu zapreminu od druge i pokazana je na slici 59b zajedno sa dijagramom njenog stabla.

    Slika 59. Na kraju, operacija presjeka identificira zapreminu koju dijele dva objekta koja se sijeku. Slika 60a ilustrira objekat koji može biti određen zajedničkim prostorom koji dijele dva

  • Rizvić, Okanović / Kompjuterska grafika / 58

    58

    objekta A i B na slici 60b. Pomoću unije, razlike i presjeka mogu se napraviti i mnogo kompleksnije strukture.

    Slika 60.

    Gornja šema izgleda snažna i jeste, ali da bi radila potreban je mehanizam koji bi je implementirao u kompjuterskom okruženju, gdje stupaju na scenu gometrija i matematika. Iako postoji jednačina sfere, nema ekvivalentne jednačine za box, međutim moguće je izvesti jednu jednačinu iz druge. Razmotrimo jednačinu ravni: ax + by + cz +d = 0 Ako se za a, b i c uzmu određene vrijednosti kao što su a = 0, b = 0, c = 1 i d = 0, onda jednačina postaje 0x + 0y + z = 0 Postoji beskonačan broj tačaka koje zadovoljavaju ovu jednačinu i bez obzira na vrijednosti x i y, z mora biti 0. Geometrijski, ova jednačina definira ravnu površinu paralelnu x i y osama, gdje je z = 0, kao što je prikazano na slici 61.

  • Rizvić, Okanović / Kompjuterska grafika / 59

    59

    Slika 61. Ako razmotrimo izraz na lijevoj strani jednačine, još jednom ćemo primijetiti da bez obzira na vrijednosti x i y, ako je vrijednost z pozitivna, izraz će biti pozitivan, a ako je vrijednost z negativna, izraz će biti negativan. Mijenjajući znak jednakosti za različite vrijednosti koordinata, otkrivamo da je prostor podijeljen na dva dijela pomoću ravni, odvojen gdje je jednakost zadovoljena. Slika 62 ilustruje taj efekat dijeljenja, odakle postaju dva poluprostora. CSG koristi dijeljenje prostora za konstruisanje svojih zapreminskih primitiva.

  • Rizvić, Okanović / Kompjuterska grafika / 60

    60

    Slika 62 Kao primjer, jedinična kocka se može konstruisati iz presjeka šest ravnih površina. Slika 62a ilustrira izraze izvedene iz jednačina ravni za prve tri ravni, a slika 62b za druge tri ravni. Primijetimo da su izrazi uređeni tako da je njihov pozitivni poluprostor unutar zapremine kocke. Bilo koja tačka (x, y, z) biće unutar kocke ili na njenoj površini, ako svih šest izraza ima vrijednost koja je pozitivna ili nula: 0x + 0y + z >= 0 0x + y + 0z >= 0 x + 0y + 0z >= 0 0x - y + 0z + 1 >= 0 -x + 0y + 0z + 1 >= 0 0x + 0y - z + 1 >= 0 Zamijenimo npr. tačku (1, 1, 1) (koja je vrh kocke) u gornjim izrazima. Njihovo razvijanje proizvodi : 1, 1, 1, 0, 0, 0 koji su 0 ili pozitivni, što znači da tačka nije unutar kocke. Međutim, tačka (2, 1, 1) koja je izvan kocke, proizvodi vrijednosti: 1, 1, 2, 0, -1, 0 koje sadrže negativnu vrijednost, potvrđujući da je tačka vani. Renderer sada može upotrijebiti ovaj rezultat da identificira tačke koje leže na površini objekta. Druga snažna osobina CSG načina modeliranja odnosi se na mogućnost ispitivanja unutrašnjosti objekta (pretpostavljajući da je on već modeliran). Ovo je postignuto presijecanjem objekta sa ravni koja ga dijeli na dva dijela, i tako je moguće vidjeti detalj koji postoji samo na jednoj strani površine. Ova osobina omogućava kreiranje animacija koje uključuju kretanje po unutrašnjosti objekta. 2.3.2. Prostorna podjela Algoritmi modeliranja pomoću prostorne podjele pokušavaju konstruisati 3D objekte iz familije ugniježdenih box zapremina ili zapremine prostora podijeljene u voksele. Npr. kocka prostora prikazana na slici 63 može se podijeliti u osam manjih kocki koje zatim mogu biti podijeljene u drugih osam bez ikakve realne granice. Ovakva prostorna podjela se može predstaviti dijagramom stabla kako je prikazano na istoj ilustraciji, koji također identificira zapremine sa brojevima. Dijagram stabla, koji je poznat kao oktstablo (octree), se koristi da opiše geometriju objekta bilježenjem onih prostornih podjela koje su totalno sadržane u objektu ili dalje podijeljene.

  • Rizvić, Okanović / Kompjuterska grafika / 61

    61

    Slika 63. Oktstablo (octtree)

    Slika 64. Predstavljanje objekta pomoću oktstabla

    Slika 64 prikazuje kako se jednostavni blok objekat može predstaviti pomoću oktstabla. Što detalji postaju finiji, stablo postaje dublje, što proizvodi važna pitanja vezana za kompleksnost i smještanje u memoriju.

  • Rizvić, Okanović / Kompjuterska grafika / 62

    62

    Druga šema prostorne podjele pretpostavlja da je zapremina prostora podijeljena u određen broj zapreminskih elemenata koji se zovu vokseli, 3D ekvivalent za piksele. Ove zapremine se identične veličine i mogu biti u jednom od dva stanja - ili su puni ili su prazni, ne postoji međustanje. Voksel šeme su se pokazale veoma korisnim u 3D reprezentaciji struktura koje su skenirane uz pomoć CT skenera koji se koristi u meducinskoj dijagnostici. Svakom vokselu je dodijeljena vrijednost koja predstavlja tip materijala koji on kodira (npr. kost, meso ili masnoća) i uz pomoć specijalnih programa za sjenčenje mogu se generisati slike koje prikazuju interni pogled na zapreminu. Napravljena je veoma snažna alatka za vizualizaciju za hirurge kada su neki vokseli napravljeni transparentnim, a neki neprovidnim; ovo omogućava da se vidi samo struktura kostiju. Animirane sekvence skupova voksel podataka su veoma korisne u medicinskom obrazovanju jer pokazuju unutrašnji izgled ljudskog tijela bez vršenja operacije. 2.4.. Proceduralno modeliranje Dosada smo istraživali standardne tehnike za predstavljanje objekata koji su dio našeg svakodnevnog života, kao što su automobili, stolovi, zgrade, čajnici i leteći logotipi. Međutim, postoji mnogo drugih stvari koje će prouzrokovati probleme ako ih pokušamo modelirati pomoću poligona, komadića ili voksela. Npr. kako možemo modelirati snijeg ili kišu? Ili valove koji se razbijaju o pješčanu plažu? I šta sa planinama, drvećem, kosom, vatrom, maglom i elekrtičnim poljima? Lista je beskrajna i pronalaženje šeme za modeliranje ovakvih objekata trajaće još mnogo godina. Međutim, postoji nekoliko šema koje treba ispitati i primijeniti u nekim specifičnim oblastima. Proceduralno modeliranje uvodi skup tehnika koje uključuju kompjuterske procedure da bi izračunale geometriju nekog oblika. Npr. ako želimo modelirati planinu, očigledno je nemoguće opisati svaki prevoj, brdo i dolinu. Nadalje, uopće ne dolazi u obzir pozicioniranje svake stijene ili kamena. Ali, ako prebacimo ove odluke o dizajnu proceduri, onda nam ona može dati rješenje koje zadovoljava naše zahtjeve. Procedura može biti tako uređena da prihvata određene parametre koji utiču na njeno ponašanje u toku modeliranja. 2.4.1. Fraktali Jedan od prvih koncepata koje ćemo istraživati je dimenzija. Svi znamo i prihvatamo da naš fizički svijet ima tri dimenzije, ali šta ovaj parametar zapravo znači? Jedan odgovor potiče iz činjenice da se stvari koje postoje u načem univerzumu mogu geometrijski opisati sa tri koordinate koje definišu poziciju u prostoru. Ovakav prostor se zove Euklidov, ako su zakoni za mjerenje udaljenosti, površina i zapremina linearni. Ovo neće biti slučaj kada su u pitanju veoma velike udaljenosti, ali prostor koji nas neposredno okružuje je trodimenzionalan i linearan. Drugi važan koncept u svijetu fraktala je samosličnost. Ovo je osobina koja pripada nekom oblicima koji, kada su uvećani, ponavljaju isti detalj koji sadrži originalni oblik. Pahuljica snijega je dobar primjer; njene kristalne ivice se sastoje od kristala koji imaju sličan oblik kao što je i ona sama. Međutim, ovi kristali se prestaju pojavljivati ako se gledaju pod jačim uvećanjem i pojavljuje se novi tip detalja.

  • Rizvić, Okanović / Kompjuterska grafika / 63

    63

    U apstraktnom svijetu matematike virtualno je sve moguće. Matematičari su tokom vremena konstruisali veliki broj imaginarnih formi koje se mogu sada razumjeti kroz razvoj fraktala. Prije nego što razmotrimo neke od tih apstraktnih koncepata, potražimo još neke artefakte koji posjeduju osobinu samosličnosti. Kocka ima tu osobinu jer se može konstruisati od osam sličnih kocki skaliranih faktorom polovine. Slika 65a ilustrira ovu relaciju. Sada trebamo formulu koja će pokazati odnos dimenzija (3) sa brojem samosličn