# Kompjuterska grafika

Primjer računalne grafike
**Računalna grafika**, skraćeno **RG**, je polje vizualnog računarstva koje rabi računala za stvaranje slika i/ili uklapanje i mijenjanje slikovnih i prostornih podataka koji su uzeti iz stvarnosti. Sam naziv 'računalna grafika' prvi je u upotrebu uveo William Fetter, Boeing (1960). Prvi veći napredak u računalnoj grafici napravio je Ivan Sutherland 1962. kada je stvorio program Sketchpad s kojim je omogućeno prvo interaktivno stvaranje grafičkog sadržaja.

## Opis

Kao jedan od središnjih problema računalne grafike ističe se nastojanje stvaranja fizikalno dosljedne sinteze elektromagnetskog okoliša zapisane u nekom unaprijed dogovorenom formalnom obliku predstave stvarne okoline. Izračun u takvoj mjeri fizikalno dosljednih slika zahtjeva simuliranje *svjetlosnog prijenosa*, tj. međudjelovanja svjetlosti s materijalnim objektima, odnosno u okvirima računalne grafike - globalnog osvjetljenja. S obzirom na dvojnu valno-čestičnu prirodu svijetlosti i spektar raznovrsnih pojava koje se uz nju vezuju, izravna simulacija njenog prostiranja u mjerilu svagdašnjeg makrosvijeta predstavljala bi iznimno težak i za današnje prilike nepremostiv problem. Srećom, svjetlost s kojom se „svakodnevno susrećemo“ uglavnom je nekoherentna (izvori svjetlosti nemaju stalnu faznu razliku i jednake frekvencije), nepolarizirana i objekti s kojima vrši interakciju značajno su veći od njene valne duljine, te iz tih razloga većina današnjih računalnih rješenja u razmatranje uzima samo geometrijske zakonitosti pravocrtnog prostiranja vala svjetlosti. Ipak, neke pojave poput raspršenja svjetlosti u koloidnim sustavima (magla, nehomogene tekućine) iziskuju uvođenje složenijih i samim time računalno zahtjevnijih algoritamskih rješenja u cilju postizanja oku uvjerljivih rezultata.

S druge strane, učinkovitost sinteze slike ovisi i o mnogo više faktora nego što ih valno-čestična (undulatorno-korpuskularna) teorija svjetlosti može ponuditi, a prvenstveno je riječ o karakteristikama suvremenih prikaznih uređaja poput nelinearnosti i ograničenog dinamičnog opsega, fiziologije oka, pa čak i viših kognitivnih aspekata percepcije.

Dakle, ključan cilj računalne grafike je dati jasan i nedvosmislen odgovor na pitanje kako generirati naravnu računalnu predodžbu vizualne stvarnosti (NRPVS). Da je to u današnjim okolnostima sasvim ostvarivo, osvjedočili su se svi oni koji su imali prilike pogledati neki od recentnijih dugometražnih animiranih filmova poput Final Fantasya, Shreka i inih, ili vidjeti neku od niza vizualnih podvala koje nam svakodnevno serviraju u gotovo svim Hollywoodskim blockbusterima „novijeg“ datuma. Naime, padom cijena računalnog hardvera produkcijskim studijima postaje sve isplativije investirati u za te svrhe specijaliziranu računalnu opremu i angažiranje kvalificiranih računalnih stručnjaka i animacijskih umjetnika, čime uspijevaju značajno uštedjeti izbjegavajući konstrukcije velikih, složenih i prvenstveno basnoslovno skupih filmskih scena, poput masovnih bitaka starog i srednjeg vijeka u kojima sudjeluju na tisuće pripadnika zaraćenih strana, oživljavanja pretpovijesnih abominacija u njihovoj punoj veličini i svireposti, ili animiranja spektakularnih međugalaktičkih svemirskih okršaja nadasve epskih razmjera. Međutim, čak i ako izuzmemo filmove iz perspektive, područje primjene NRPVSa nikako nije osiromašeno: danas je ono uistinu neophodna karika u industrijskom dizajnu i arhitekturi, predstavljanju proizvoda (a.k.a. reklamama), „oživljavanju“ povijesne baštine i računalnim animacija općenito, a vrlo brzo postati će i svakodnevnica računalnih igara. Krajnji cilj i „Sveti Gral“ računalne grafike, svakako je virtualna stvarnost.

## Povijest računalne grafike

Temelji računalne grafike mogu se pronaći u povijesnim umjetničkim i matematičkim otkrićima, primjerice:

* Euklid (otprilike 300-250 g.pr.n.e.) čija formulacija osnovnih aksioma geometrije sačinjava osnovu grafičkih pojmova
* Filippo Brunelleschi (1377 - 1446) arhitekt, zlatar i kipar, zapažen po pionirskom korištenju perspektive
* Rene Descartés (1596-1650) koji je razvio analitičku geometriju, i napose koordinatni sustav s čime je omogućeno preciziranje položaja i oblika objekata u sceni
* Gottfried Wilhelm Leibniz (1646 - 1716) i Issac Newton (1642 - 1727) koji su istovremeno postavili temelje diferencijalnom računu s čime je omogućeno strogo opisivanje dinamičkih sustava
* James Joseph Sylvester (1814 - 1897) koji je osmislio matričnu notaciju, veoma korištenu u algoritmima računalne grafike
* I. Schoenberg, koji je otkrio spline krivulje

Jednako značajan za osvit računalne grafike bio je i povijesni razvoj misli o naravi svjetlosti.

Tijekom 60-tih godina 20-tog stoljeća načinjeni su pionirski radovi u području računalne grafike koji su poslužili kao podstrek svim daljnim nastojanjima u istomenom području. Najvažniji od njih su:

* Prvi računalno animirani film "Two-Gyro Gravity-Gradient Attitude Control System", Edward Zajak, Bell Labs) (1961).
* Prvi programski jezik računalne animacije (MACS), Larry Breed, Stanford University (1961).
* Prva video igra (Spacewar), koju je razvio Steve Russell na MITu (1961).
* Napisan program Sketchpad, od strane Ivana Sutherlanda, sa MITa - prvi interaktivni program za crtanje (1963).
* Načinjen prvi računalni model ljudskog tijela, William Fetter, Boeing, za dizajniranje kokpita zrakoplova (1964).
* Prvi naglavni prikaznik, Ivan Sutherland (1966).
* Implementiran prvi algoritam praćenja zraka, Appel (1968).
* Prvi slikovni međuspremnik, 3-bitni (8 nijansi, boja), Bell Labs, 1969.

## NRPVS (Naravna računalna predodžba vizualne stvarnosti)

Što se misli pod naravnom računalnom predodžbom? *Hall i Greenberg*[1] kažu slijedeće:

*"Naš cilj u realističnom slikotvorstvu je stvaranje slike koja pobuđuje u vizualnom sustavu podražaj koji ne bi bio raspoznatljiv od podražaja pobuđenog stvarnom okolinom."*

Ovo je očigledno, veoma neskroman cilj. Stvaranje istovrsnog mentalnog doživljaja posredstvom sintetičke slike zahtjevalo bi priključenje stroj-čovjek sučelja u živčane puteve između oka i mozga, nešto što trenutno još uvijek nije izvedivo.
Iz praktičnih razloga, naše želje ipak moraju biti prizemnije od stvaranja neraspoznatljive umjetne percepcije stvarnosti. Ono što se danas može učiniti, je stvaranje 2 dimenzionalne slike ljudskom oku neraspoznatljive od one dobivene fotografskim aparatom. Ipak, ovakve slike su još uvijek očigledno "nestvarne" iz prostog razloga što su dvodimenzionalne. Daljan korak u cilju postvarenja tih slika postignut je stereoskopskim projekcijama koje pomoću efekta polarizacije uspijevaju stvoriti prividnu dubinu u inače 2 dimenzionalnom prikazu na način da se svakom oku prikazuju djelomično različite slike prilagođene odzivu našeg binokularnog vidnog sustava. No, ovaj pristup sa sobom nosi ergonomičnu neugodnost u tome što zahtjeva nošenje posebnih polarizacijskih naočala, koje su nerijetko sklone veoma brzo zamoriti korisnika i tako umanjiti njegov užitak u nestvarnoj okolini.
U novije vrijeme počeli su se pojavljivati i prvi komercijalni volumetrijski prikaznici koji osim što impresivno djeluju, obećavaju i još impresivnije mogućnosti u skoroj budućnosti.

## Računalni model stvarnosti

Kao što je danas većini poznato, okoliš kakav mi doživljavamo posredstvom osjetila vida, odraz je kvalitete i kvantitete okolnog elektromagnetskog zračenja i refleksije tog zračenja na tvarima prisutnim u prirodi. Da bi njih predstavili na računalnom zaslonu potrebno je iznaći prikladan način modeliranja, odnosno opisivanja kako tvari, tako i svjetlosti. Ukratko, mogu se izdvojiti slijedeće sastavnice takovog modela:

* Svjetlost i boja
* Izvori svjetlosti
* Oblici
* Materijali
* Sučelja (dioptri): Modeli refleksije i teksturiranja
* Mediji: Modeli atmosferskog raspršenja
* Kamere
* Leća i film

Što se simulacije tiče, ona jednostavno predstavlja proces osvjetljavanja tako postavljene scene ravnan algoritmom *globalnog osvjetljenja*. Srž simulacije osvjetljenja predstavlja jednadžba globalnog osvjetljenja koja se može iskazati u slijedećem obliku:
*Za zadanu scenu sačinjenu od zbira osnovnih geometrijskih oblika s raznovrsnim materijalnim svojstvima i proizvoljno mnogo izvora svjetlosti, izračunati osvjetljenje za svaku točku svake površine.*

## Algoritmi računalne grafike

**2D3D Stvaranje slike liniju po liniju
* Izračenje (radiosity)
* Praćenje zraka (raytracing)
* Monte Carlo simulacija

## Primjena

* **korisnička sučelja** (većina aplikacija na osobnim računalima i na radnim stanicama imaju grafički sustav prozora putem kojeg komuniciraju s korisnicima. Primjeri takvih aplikacija uključuju obradbu teksta, stolno izdavaštvo, proračunske tablice...);
* **interaktivno crtanje** (u poslovnim, znanstvenim i tehnološkim primjenama računalna grafika koristi se za prikazivanje funkcija, dijagrama, histograma i sličnih grafičkih prikaza sa svrhom jasnijeg sagledavanja složenih pojava i olakšanja procesa odlučivanja);
* **projektiranje pomoću računala** (Computer Aided Design - CAD danas se standardno koristi za projektiranje sustava i komponenata u strojarstvu, elektrotehnici, elektronici, telekomunikacijama, računarstvu...);
* **simulacija i animacija** (računalna grafika koristi se za znanstvenu i inženjersku vizualizaciju i zabavu; područja primjene obuhvaćaju prikaze apstraktnih matematičkih modela vremenski promjenljivih pojava, TV i filmsku tehnologiju...);
* **umjetnost** (računalna grafika se koristi za kreiranje umjetničkih slika);
* **grafičko programiranje** (računalna grafika se koristi za automatizaciju procesa programiranja virtualnih sustava npr. u instrumentaciji).
* **video igre** (jedan od glavnih elemenata igara je računalska grafika koja se koristi za prikaz virtualnih prostora )

## Izvori

* Roy Hall and Donald P. Greenberg. A testbed for realistic image synthesis. IEEE Computer Graphics and Applications, 3(8):10{20), 1983.