Teorija
Funkcija kojom se pronalazi presjek zrake i objekata na sceni ovisit će o načinu na koji su ti objekti zapisani. Objekti mogu npr. biti zapisani parametarski (npr. kugla određena središtem i promjerom), volumno ili kao skupine grafičkih primitiva.
Kroz projektni zadatka promatrano tjelo koje je kugla, te je stoga zapis pomoću središta i polumjera bilo logičan izbor.
U svojoj osnovi, postupak praćenja zrake vrlo je jednostavan. Zamislimo sliku koja se iscrtava kao projekcija scene na projekcijskom prozoru. Za svaki element slike (pixel) potrebno je odaslati početnu zraku te ju nakon toga pratiti po sceni. Zrake su jednoznačno određene polaznom točkom i vektorom smjera. Početne zrake imaju izvorište u točki u kojoj se nalazi virtualna kamera (promatrač), u primjeru projekta simbolično prikazano zelenom kuglom. Vektor smjera zrake dobivamo oduzimanjem pozicije izvorišta od pozicije elementa slike na projekcijskom prozoru. Za svaku tako dobivenu početnu zraku zatim tražimo najbliži presjek sa objektima na sceni te ako ga nađemo, izračunamo osvjetljenje u točki presjeka. Alternativno možemo i stvarati zraku za provjeru sjene te zrake zrcaljenja i loma svjetlosti za koje se postupak zatim rekurzivno ponavlja. Opisani pseudokod lakše možemo pratiti na slici u prilogu.
Materijal i svjetlo
Stvarni predmeti reflektiraju i apsorbiraju svjetlost ovisno o materijalu od kojeg su načinjeni ovu prirodnu pojavu mi zapažamo kao boju predmeta.
Odbijanje svjetlosti na površinama aproksimira se kombinacijom
- zrcalnog (specular) odbijanja i
- difuznog (diffuse) odbijanja
Tome se dodaje doprinos okolne svjetlosti (ambient light) i eventulno svjetlost koju sama površina emitira (emmision) da bi se dobila konačna vrijednost intenziteta svake osnovne boje (crvene, zelene i plave), tj. konačna boja svakog pixela. Kada pronađemo najbližu točku presjeka zrake i scene, potrebno je odrediti osvjetljenje u toj točki ako što je i navedeno u pseudokodu. Lokalno osvjetljenje možemo računati po Phongovom modelu koji svjetlost rastavlja na tri komponente: svjetlost iz okoline (eng. ambient), raspršenu svjetlost (eng. diffuse) i zrcaljenu svjetlost (eng. speccular).
Pri čemu su s I označeni intenziteti svjetlosti (intenziteti pojedinih komponenti, svojstvo izvora svjetlosti), k koeficijenti odbijanja svjetlosti (svojstvo materijala), L vektor smjera svjetla, N vektor normale, R vektor smjera zrcaljenja, V vektor pogleda te faktor sjajnosti n. Svi vektori moraju biti prethodno normirani na jediničnu veličinu.
Kao demonstraciju ponašanja zrcalnog i difuznog odbijanja priložen je Java applet autora Yan Liu, odjela za računalne znanosti Georgia State University-a. Kroz ovaj interaktivni applet moguće je pojasniti ponašanje materijala u procesu praćenja zrake.
Primjer 2 : Praćenje zrake (teorijska priprema)