OVDJE možete downloadirati njegov diplomski rad u

SVEUČILIŠTE U ZAGREBU
PRIRODOSLOVNO-MATEMATIČKI FAKULTET
FIZIČKI ODSJEK
Bruno Paun
Diplomski rad
ISTRAŽIVANJE KAUSTIKE
METODOM PRAĆENJA
SVJETLOSNIH ZRAKA I
USPOREDBA S EKSPERIMENTOM
Zagreb, 2011.
SVEUČILIŠTE U ZAGREBU
PRIRODOSLOVNO-MATEMATIČKI FAKULTET
FIZIČKI ODSJEK
SMJER: PROF. FIZIKE I TEHNIKE
Bruno Paun
Diplomski rad
ISTRAŽIVANJE KAUSTIKE
METODOM PRAĆENJA
SVJETLOSNIH ZRAKA I
USPOREDBA S EKSPERIMENTOM
Voditelj diplomskog rada: dr.sc. Antonio Šiber
Ocjena diplomskog rada:
____________________
Povjerenstvo: 1.____________________
2.____________________
3.____________________
Datum polaganja:
Zagreb, 2011.
____________________
Ovaj rad posvećen je mome ocu bez čije bezuvjetne podrške i pomoći
ne bih bio ono što sada jesam.
Josip Paun
3.3.1937. – 28.5.2011.
Počivao u miru.
Zahvaljujem,
svome mentoru dr.sc. Antoniju Šiberu na motivaciji i podršci u životnoj situaciji u kojoj
sam se našao za vrijeme nastajanja ovog rada kao i na razumijevanju, strpljenju i
pomoći u procesu izrade istog.
Također zahvaljujem svojim roditeljima na bezuvjetnoj podršci i pomoći koju su mi
pružili tokom studija, bez njih ništa od ovog ne bi bilo moguće.
Sadržaj
1. Uvod ....................................................................................................................... 7
2. POV Ray................................................................................................................. 9
2.1. Koordinatni sustav POV Ray-a.................................................................. 9
2.1.1. Transformacije ........................................................................... 11
2.1.1.1. Translacija .................................................................... 11
2.1.1.2. Skaliranje ..................................................................... 11
2.1.1.3. Rotacija ........................................................................ 12
2.1.1.4. Matrica ......................................................................... 13
2.1.1.5. Redoslijed transformacija ............................................. 13
2.1.1.6. Inverzna transformacija ................................................ 14
2.2. Dodavanje promatrača (kamere)............................................................. 14
2.3. Opisivanje objekta ................................................................................... 15
2.3.1. Dodavanje teksture objektu ....................................................... 15
2.4. Definiranje izvora svjetlosti ...................................................................... 17
2.4.1. Točkasti izvor svjetlosti .............................................................. 17
2.4.2. Usmjereni izvor svjetlosti (spotlight izvor, reflektor) ................... 17
2.4.3. Cilindrični izvor svjetlosti ............................................................ 19
2.4.4. Površinski izvor svjetlosti (Area light) ........................................ 19
2.4.5. Ambijentalni izvor svjetlosti ........................................................ 20
2.5. Osnovni objekti u POV Ray-u ................................................................. 21
2.5.1. Kvadar ....................................................................................... 21
2.5.2. Sfera .......................................................................................... 21
2.5.3. Stožac........................................................................................ 22
2.5.4. Cilindar ...................................................................................... 22
2.5.5. Ravnina ..................................................................................... 23
2.5.6. Torus ......................................................................................... 23
2.6. CSG ........................................................................................................ 24
2.6.1. Unija .......................................................................................... 24
2.6.2. Presjek....................................................................................... 25
2.6.3. Razlika ....................................................................................... 26
2.6.4. Spajanje..................................................................................... 27
2.6.5. Inverz ......................................................................................... 29
1
2.6.6. Naredba Clipped By .................................................................. 30
2.7. Naredba finish ......................................................................................... 31
2.7.1. Naredba ambient ....................................................................... 31
2.7.1.1. Radiosity tehnika .......................................................... 32
2.7.2. Difuzna refleksija ....................................................................... 33
2.7.3. Područja naglašene osvjetljenosti ............................................. 34
2.7.3.1. Naredba phong ............................................................ 34
2.7.3.2. Naredba specular ......................................................... 35
2.7.3.3. Modifikator područja naglašenog osvjetljenja metala ... 36
2.7.4. Spekularna refleksija ................................................................. 36
2.7.4.1. Varijabilna refleksija ..................................................... 37
2.7.5. Očuvanje energije pri refleksiji ................................................... 40
2.8. Naredba interior ...................................................................................... 40
2.8.1. Refrakcija svjetlosti .................................................................... 41
2.8.2. Disperzija svjetlosti .................................................................... 41
2.8.3. Slabljenje svjetlosti .................................................................... 43
3. Iscrtavanje scene .................................................................................................. 44
3.1. Metoda praćenja zraka............................................................................ 44
3.2. Metoda mapiranja fotona ........................................................................ 46
3.2.1. Prvi korak - praćenje fotona ....................................................... 47
3.2.1.1. Emisija fotona .............................................................. 47
3.2.1.2. Raspršenje fotona ........................................................ 48
3.2.1.3. Pohranjivanje fotona .................................................... 49
3.2.2. Drugi korak - iscrtavanje ............................................................ 50
3.3. Metoda mapiranja fotona i POV Ray ....................................................... 52
3.3.1. Korištenje metode mapiranja fotona u POV Ray-u .................... 52
3.3.2. Globalne postavke fotona .......................................................... 53
3.3.3. Ispaljivanje fotona u objekt ........................................................ 59
3.3.4. Fotoni i izvori svjetlosti ............................................................... 61
4. Kaustika ................................................................................................................ 62
4.1. Konstrukcija kaustika metodom praćenja zraka ...................................... 66
4.2. Kaustika u refleksiji i POV Ray ................................................................ 73
4.3. Kaustika u refrakciji i POV Ray ............................................................... 88
5. POV Ray u nastavi fizike .................................................................................... 100
2
5.1. Konstruktivistički pristup ........................................................................ 101
6. Zaključak ............................................................................................................ 105
7. Literatura ............................................................................................................ 106
3
Popis slika
Slika 1. Koordinatni sustav POV Ray-a .................................................................... 10
Slika 2. Određivanje pozitivnog smjera rotacije pravilom lijeve ruke ......................... 10
Slika 3. Parametri usmjerenog izvora svjetlosti ........................................................ 18
Slika 4. Unija............................................................................................................. 24
Slika 5. CSG objekt dobiven operacijom unije .......................................................... 25
Slika 6. Presjek ......................................................................................................... 25
Slika 7. CSG objekt dobiven operacijom presjeka .................................................... 26
Slika 8. Razlika ......................................................................................................... 26
Slika 9. CSG objekt dobiven operacijom razlike ....................................................... 27
Slika 10. Spajanje ..................................................................................................... 28
Slika 11. Razlika između unije i spajanja .................................................................. 28
Slika 12. CSG objekt dobiven kombinacijom operacije presjeka i inverza ................ 29
Slika 13. Rezultat naredbe clipped by ...................................................................... 30
Slika 14. CSG objekt dobiven naredbom clipped by ................................................. 30
Slika 15. Skica okomito polariziranog EM vala ......................................................... 38
Slika 16. Skica paralelno polariziranog EM vala ....................................................... 39
Slika 17. Način rada metode praćenja zraka ............................................................ 46
Slika 18. Metoda mapiranja fotona ........................................................................... 47
Slika 19. Emisija fotona iz izvora svjetlosti................................................................ 48
Slika 20. Primjer foto-realistične slike kreirane metodom mapiranja fotona u jednom
od programskih paketa za iscrtavanje ....................................................................... 51
Slika 21. Ispaljivanje fotona u ciljani objekt ............................................................... 57
Slika 22. 2D i 3D reprezentacija kaustičkih površina ................................................. 63
Slika 23. Da Vincijeve konstrukcije kaustika ............................................................. 64
Slika 24. Katakaustike kružnice ................................................................................ 68
Slika 25. Katakaustike krivulja funkcija sin(x), -x3+x5 i sin(x)3 ................................... 68
Slika 26.Katakaustike kardioide ................................................................................ 69
Slika 27. Parabola i njezin fokus, kružnica i njezino ishodište .................................. 69
Slika 28. Diakaustika sinusne krivulje i elipse ........................................................... 70
Slika 29. Katakaustika – envelopa svjetlosnih zraka projicirana na horizontalnu
ravninu ...................................................................................................................... 73
Slika 30. Eksperimentalno opažanje kaustike u šalici kave fotografijom .................. 74
4
Slika 31. Skica postava šalice sa kavom .................................................................. 74
Slika 32. Ovisnost oblika kaustike o upadnom kutu α ............................................... 77
Slika 33. Ovisnost oblika kaustike o visini tekućine h ............................................... 78
Slika 34. Skica kaustike u šalici za h*ctgα > r/2 ........................................................ 78
Slika 35. Skice i slike kaustika prvog, drugog i trećeg reda na metalnom prstenu.... 79
Slika 36. POV Ray simulacija kaustika prvog, drugog i trećeg reda na metalnom
prstenu...................................................................................................................... 79
Slika 37. POV Ray simulacija kaustika četvrtog i petog reda.................................... 80
Slika 38. Skica virtualnog postava ............................................................................ 83
Slika 39. Kaustike prvog i drugog reda u metalnom cilindru ..................................... 84
Slika 40. POV Ray simulacija kaustika višeg reda.................................................... 84
Slika 41. Kaustike prvog, drugog i trećeg reda dobivene paralelnim zrakama svjetlosti
................................................................................................................................. 85
Slika 42. Skica konstrukcije kaustike prvog reda refleksije ....................................... 86
Slika 43. Rezultat konstrukcije kaustike prvog reda refleksije................................... 87
Slika 44. Kaustička mreža na brodu i u bazenu. Geometrijska reprezentacija
nastajanja kaustičkih mreža...................................................................................... 88
Slika 45. POV Ray simulacija kaustičke mreže u bazenu ......................................... 92
Slika 46. Određivanje smjera refraktirane zrake i konstrukcija kaustičkih krivulja u
slučaju refrakcije svjetlosnih zraka na površini vode predočene sinusnom krivuljom 93
Slika 47. POV Ray simulacija kaustičkog uzorka u bazenu dobivenog sinusoidalnom
površinom vode ........................................................................................................ 95
Slika 48. 3D reprezentacija kaustičkih površina u bazenu dobivenih sinusoidalnom
površinom vode i POV Ray simulacija kaustike u bazenu ........................................ 96
Slika 49. POV Ray simulacije kaustike u bazenu dobivene sinusoidalnom površinom
vode frekvencije 2Hz ................................................................................................ 96
Slika 50. POV Ray simulacije kaustika u bazenu dobivenih površinama vode
predočenih funkcijama {y + f_sine_wave(z,0.1,1) + f_sine_wave(x,0.1,1)} i {y +
f_sine_wave(z,0.3,1) * f_sine_wave(x,0.3,1)} ........................................................... 97
Slika 51. POV Ray simulacija kaustike u bazenu dobivene nasumičnom površinom
vode predočene funkcijom {y + f_noise3d(0,0,z)} ..................................................... 98
Slika 52. POV Ray simulacija kaustike u bazenu dobivene nasumičnom površinom
vode predočene funkcijom {y + f_noise3d(x,0,z)*0.5} ............................................... 98
5
Slika 53. Izgled površina vode predočenih funkcijama {y + f_sine_wave(z,0.1,1) +
f_sine_wave(x,0.1,1)} i {y + f_sine_wave(z,0.7,1) * f_sine_wave(x,0.7,1)} ............... 98
Slika 54. Izgled površina vode predočenih funkcijama {y + f_noise3d(0,0,z)} i {y +
f_noise3d(x,0,z)*0.5} ................................................................................................ 99
6
1. Uvod
Tema ovog diplomskog rada su kaustike, fizički fenomeni koji se pojavljuju u
prirodnom fokusiranju svjetlosti. Kaustika unutar granica geometrijske optike
predstavlja envelopu reflektiranih ili refraktiranih zraka svjetlosti projiciranu na neku
površinu. Zamjećujemo ih kao svjetle linije povećanog intenziteta svjetlosti koje
postaju vidljive tek kad su projicirane na neku površinu poput stola, zida i sl. Tipičan
primjer kaustike je „otisak“ koji svjetlost ostavlja na stolu nakon prolaska kroz čašu
ispunjenu vodom ili dinamika fokusirane svjetlosti na dnu morskog plićaka. To su
kaustike refraktirane, prolazne svjetlosti. Kaustiku reflektirane svjetlosti možemo
vidjeti npr. u unutrašnjosti metalnog prstena postavljenog na podlogu kad je izvor
svjetlosti u povoljnom položaju za nastanak kaustike ili u šalici kave koju ispijamo u
sunčano jutro ili u mome slučaju kasno navečer pod stolnom lampom dok pišem ovaj
rad. Kaustika predstavlja snažno lokalno pojačanje intenziteta svjetlosti, a može ju se
približno shvatiti i kao „razmrljani“ fokus optičkog elementa koji predstavlja dobro nam
poznate aberacije optičkih naprava. Točan izgled kaustike ovisi o obliku
trodimenzionalnog optičkog elemenata te njegovom položaju s obzirom na izvor
svjetlosti i podlogu na koju se kaustika projicira.
Cilj ovog diplomskog rada je objasniti fiziku/optiku koja stoji iza pojave kaustike, te
simulirati pojavu kaustike u okviru računalnog programa za simulaciju optike
metodom praćenja svjetlosnih zraka (tzv. raytracing), POV Ray. Program je slobodno
dostupan i vrlo pogodan za primjene u matematici i fizici jer se geometrijska i
fizikalna svojstva optičkog sustava kodiraju/programiraju. U ovom radu krećem od
pretpostavke da čitatelj nije upoznat sa POV Ray-em i njegovim programskim
jezikom, baš poput mene prije nego što sam počeo pisati ovaj rad, stoga prvo
prolazim kroz osnovne elemente potrebne za stvaranje postava eksperimenta u
virtualnom prostoru POV Ray-a. Nakon osnova prelazim na naprednije funkcije koje
su potrebne da bismo simulirali stvaranje kaustika u virtualnim postavima.
U drugom dijelu rada objašnjavam glavne metode iscrtavanja virtualnog postava:
metoda praćenja zraka i metoda mapiranja fotona. Razumijevanje tih metoda bitno je
za shvaćanje načina na koji POV Ray simulira fizikalne pojave. U svijetu računalne
grafike, metoda praćenja svjetlosnih zraka se koristi u izradi vjerodostojnih fotorealističnih simulacija te izrada slika u kojima su fizikalni zakoni refleksije i refrakcije
svjetlosti ispoštovani i suštinski važni za vjerodostojnost prikaza npr. prikaz vode,
zrcala, stakla, i sl. Za neke zahtjevnije fizikalne pojave poput kaustika potrebna nam
je metoda mapiranja fotona koja predstavlja metodu globalnog osvjetljenja koja nam
omogućuje kreiranje još vjerodostojnijih foto-realističnih prikaza. Tako moderni
programski paketi/jezici za iscrtavanje foto-realističnih slika postaju virtualni fizikalni
laboratoriji i omogućuju vjernu simulaciju različitih pojava vezanih uz prostiranje
svjetlosti i njeno međudjelovanje s makroskopskom okolinom.
Treći dio rada posvećen je kaustikama, njihovim geometrijskim svojstvima i načinu
njihove konstrukcije unutar granica geometrijske optike. Za odabrane primjere
7
kaustike provedeni su odgovarajući eksperimenti, te su numerički/ raytracing rezultati
uspoređeni s eksperimentom.
Zadnje poglavlje predstavlja metodičku obradu fenomena prirodnog fokusiranja
svjetlosti – kaustika. Tu predlažem način na koji bi kaustike mogli uključiti u skolski
program i povezati ga sa paraaksijalnim modelom fokusiranja koji se obrađuje u
nastavnom programu.
Natrag na sadržaj
8
2. POV Ray
POV Ray 1 (Persistence Of Vision Ray-tracer) je program koji se koristi za izradu 3D
računalne grafike i animacija. Pomoću njega možemo kreirati trodimenzionalne fotorealistične slike koristeći tehniku iscrtavanja koja se zove praćenje zraka (eng.
raytracing). POV Ray je besplatan (open source) program što ga čini često
korištenim programom za izradu 3D kompjutorske grafike. Za razliku od ostalih
komercijalnih programa on nije modeler, tj. nema grafičko sučelje za modeliranje
objekata. Sve što modeliramo moramo programirati u integriranom editoru teksta
(eng. text editor). To znači da sve elemente definiramo unošenjem tekstualnih
naredbi. Jezik koji POV Ray koristi naziva se jezik opisa scene (eng. scene
description language) i njegova je sintaksa vrlo slična sintaksi C i C++ programskog
jezika. No čak i bez poznavanja programiranja ili nekih od sličnih programskih jezika
korištenje POV Ray-a je vrlo intuitivno, a uz njega dolazi i odlična datoteka za pomoć
(eng. help file).
Sve elemente scene koje smo definirali u editoru teksta spremaju se u tekstualnu
datoteku sa ekstenzijom .pov. Ta tekstualna datoteka sadrži sve informacije koje
opisuju objekte, osvjetljenje i položaj kamere u sceni. POV Ray čita sadržaj te
tekstualne datoteke, te na osnovu podataka iz datoteke izračunava i iscrtava finalnu
sliku scene iz perspektive kamere. Nakon što iscrta cijelu sliku virtualne scene on ju
sprema u BMP, TGA ili neku drugu podržanu slikovnu datoteku. Iscrtavanje slike
tehnikom praćenja zraka nije nipošto brzi proces, no on stvara slike vrlo visoke
kvalitete sa realističnim refleksijama, sjenama, perspektivom i mnogim drugim
efektima.
Natrag na sadržaj
2.1. Koordinatni sustav POV Ray-a
Pri definiranju kamere, objekata i izvora svjetlosti u POV Ray-u moramo odrediti
njihov položaj. Koordinatni sustav POV Ray-a ima pozitivnu y os usmjerenu prema
gore, pozitivnu x os usmjerenu udesno i pozitivnu z os usmjerenu u ekran. Iz
navedenoga nam je vidljivo da POV Ray kao i većina drugih programa za
kompjutersku grafiku koristi lijevi koordinatni sustav prikazan na slici:
1
POV Ray for Windows Help
9
Slika 1. Koordinatni sustav POV Ray-a
Jedinični vektori x, y i z predstavljaju bazu koja razapinje naš virtualni prostor. Kako
se na našim prostorima u praksi najčešće koristi desni koordinatni sustav dok se ne
naviknemo na upotrebu lijevog koordinatnog sustava možemo si pomoći pravilom
lijeve ruke. Palac postavimo u smjeru pozitivne x osi (udesno), kažiprst u smjeru
pozitivne y osi (prema gore) i srednji prst u smjeru pozitivne z osi (prema naprijed).
To jedino možemo napraviti sa našom lijevom rukom.
Pravilo lijeve ruke koristimo i za određivanje smjera rotacije. Ako palac postavimo da
pokazuje u pozitivnom smjeru osi rotacije naši savinuti prsti pokazivati će pozitivni
smjer rotacije. Ako palac postavimo postavimo u negativnom smjeru osi rotacije naši
savinuti prsti će pokazivati negativni smjer rotacije.
Slika 2. Određivanje pozitivnog smjera rotacije pravilom lijeve ruke1
Objekti, svjetla i kamera pozicioniraju se koristeći 3D koordinatni sustav. Položaji
unutar tog koordinatnog sustava definiraju se vektorom položaja. Tri vrijednosti
komponenata vektora odgovaraju njegovom x, y i z smjeru. Na primjer vektor <1,1,1>
predstavlja točku koja se nalazi jednu jedinicu udesno, jednu jedinicu iznad i jednu
jedinicu ispred centra virtualnog prostora koji se nalazi u <0,0,0>. Vektor počinje u
ishodištu <0,0,0>, a završava u točki <1,1,1>.
10
Vektorima se ne definiraju samo točke. Pomoću njih možemo definirati iznose
veličina, pomake ili rotacije elemenata scene, te promjene uzorka teksture koji je
primijenjen na određenom objektu.
Natrag na sadržaj
2.1.1. Transformacije
Veličina, položaj, orijentacija i deformacija objekata unutar koordinatnog sustava
kontrolira se modifikatorima koji se nazivaju transformacije. Transformacije koje
podržava POV Ray-u su rotacija (rotate), skaliranje (scale) , translacija (translate) i
matrica (matrix). Koriste se za okretanje, promjenu veličine i pomicanje objekta ili
teksture.
Bitno je napomenuti da u POV Ray-u ne postoje mjerne jedinice. Npr. translate <10,15,5> će pomaknuti objekt -10 jedinica u x smjeru, 15 jedinica u y smjeru i 5
jedinica u z smjeru. Da li su te jedinice metri, centimetri, stope, inči, svjetlosne godine
ili bilo koja druga mjerna jedinica ovisi o programeru. On mora voditi brigu pri
preračunavanju jedinica kako bi mu definirana scena bila konzistentna.
Natrag na sadržaj
2.1.1.1. Translacija
Objekti se pomiču dodavanjem modifikatora translacije. On se sastoji od ključne riječi
translate nakon koje slijedi vektor pomaka. Tri veličine u vektorskom izrazu
određuju broj jedinica pomaka u x, y i z smjeru. Modifikator translacije pomiče
element relativno obzirom na njegov trenutni položaj, a ne apsolutno. Na primjer:
sphere { <15, 20, 10>, 1
pigment { color rgb <0, 1, 0> }
translate <-10, 15, 5>
}
Sfera će se pomaknuti sa položaja <15,20,10> na <5,35,15>. Modifikator translacije
je ne pomiče na apsolutni položaj <-10,15,5>. Translacije su uvijek relativne prema
položaju objekta prije pomaka.
Natrag na sadržaj
2.1.1.2. Skaliranje
Kada želimo promijeniti veličinu objekta ili uzorka teksture koristimo modifikator
skaliranja. On se sastoji od ključne riječi scale nakon koje slijedi vektor skaliranja.
Veličine u vektorskom izrazu određuju iznos skaliranja u x, y i z smjeru.
11
Neproporcionalno skaliranje se koristi za rastezanje ili stiskanje elementa. Vrijednosti
veće od jedan rastežu element duž određene osi, dok vrijednosti manje od jedan i
veće od nule stišću element. Skala je relativna prema trenutnoj veličini elementa. Ako
je veličina objekta bila prethodno promijenjena korištenjem modifikatora skaliranja,
tada će novo skaliranje promijeniti veličinu relativno u odnosu na trenutnu veličinu
objekta. Mogu se koristiti višestruke vrijednosti skale kao na primjer:
sphere { <0, 0, 0>, 1
scale <2, 1, 0.5>
}
što će sferu pretvoriti u elipsoid koji je dvostruko veći duž x osi, iste veličine duž y osi
i upola manji duž z osi.
Ako definiramo samu brojku (skalar) u izrazu skale ona se shvaća kao vektor čije su
komponente jednakog iznosa. Tada je objekt uniformno (proporcionalno) skaliran za
jednak iznos u svim smjerovima. Na primjer:
object {
Moj_Objekt
scale 5 // jednako <5, 5, 5>
}
Kada je jedna od komponenata vektora skaliranja jednaka nuli, POV Ray mijenja
njezinu vrijednost u 1 jer pretpostavlja da 0 znači bez skaliranja u tom smjeru. Tada
se na ekranu ispisuje upozorenje: "Illegal Value: Scale X, Y or Z by 0.0. Changed to
1.0."
Natrag na sadržaj
2.1.1.3. Rotacija
Ako želimo promijeniti orijentaciju objekta ili uzorka teksture koristimo modifikator
rotacije. On se sastoji od ključne riječi rotate nakon koje slijedi vektor rotacije.
Veličine u vektorskom izrazu određuju broj stupnjeva rotacije oko x, y i z osi.
Važno je napomenuti da je bitan redoslijed rotacija. Prvo se primjenjuje rotacija oko x
osi, nakon toga oko y osi i na kraju oko z osi. Ako nismo sigurni da li je to rotacija
koju želimo, objekt možemo rotirati korištenjem višestrukih izraza rotacije oko
zasebne osi kako bi dobili željenu orijentaciju objekta. Na primjer:
rotate <0, 30, 0>
rotate <-20, 0, 0>
rotate <0, 0, 10>
će objekt prvo rotirati 30 stupnjeva oko y osi, zatim -20 stupnjeva oko x osi i na kraju
10 stupnjeva oko z osi, dok će:
rotate <-20, 30, 10>
12
prvo rotirati objekt -20 stupnjeva oko x osi, zatim 30 stupnjeva oko y osi i onda 10
stupnjeva oko z osi. Iako koristimo iste iznose rotacija oko x, y i z osi ovi primjeri
imaju za ishod potpuno drugačiju orijentaciju objekta.
Rotacija se uvijek izvodi relativno obzirom na os. Osi rotacije smještene su u središtu
virtualnog prostora, stoga ako je objekt udaljen od osi rotacije on neće samo rotirati,
već će kružiti po orbiti oko osi. POV Ray koristi lijevi sustav rotacije.
Natrag na sadržaj
2.1.1.4. Matrica
Transformacijska matrica koristi se direktno određivnje složenih transformacija.
Ključnom riječi matrix eksplicitno određujemo transformacijsku matricu koju možemo
primjeniti na objeke ili njegove teksture. Sintaksa je sljedeća:
matrix < Val_00,
Val_10,
Val_20,
Val_30,
Val_01, Val_02,
Val_11, Val_12,
Val21, Val22,
Val_31, Val_32 >
Vrijednosti od Val_00 do Val_32 su brojčane vrijednosti koje određuju elemente 4
puta 4 matrice. Bilo koja točka P=<px, py, pz>, je transformirana u točku Q=<qx, qy,
qz> na sljedeći način:
qx = Val_00 * px + Val_10 * py + Val_20 * pz + Val_30
qy = Val_01 * px + Val_11 * py + Val_21 * pz + Val_31
qz = Val_02 * px + Val_12 * py + Val_22 * pz + Val_32
Natrag na sadržaj
2.1.1.5. Redoslijed transformacija
Kako su rotacije relativne obzirom na osi, a skaliranje relativno obzirom na ishodište,
preporuka je da se objekt definira u ishodištu i da se u ishodištu rotira i skalira. Tada
se može translatirati na željeni položaj. Najčešća pogreška je da se objekt precizno
namjesti u željeni položaj, a zatim rotira. Kako rotacija udaljenog objekta uzrokuje
kruženje objekta po orbiti oko osi rotacije, položaj objekta se može toliko promijeniti
da nam objekt izađe iz područja vidljivosti kamere.
Skaliranje objekta nakon translacije također pomiče objekt na neobičan način. Ako
skaliramo objekt nakon translacije, skaliranje će pomnožiti iznos translacije. Na
primjer:
translate <5,6,7>
scale 4
13
će translatirati objekt na položaj <20,24,28> umjesto na <5,6,7>. Pri korištenju
transformacija se treba paziti na redoslijed, jer u protivnom nećemo dobiti ono što
smo željeli.
Natrag na sadržaj
2.1.1.6. Inverzna transformacija
transform { scale <20, 24, 28> translate y*3 inverse }
Inverzna transformacija ima suprotan učinak od obične transformacije i može se
koristiti za poništavanje učinka običnih transformacija. Da postignemo učinak
inverzne transformacije korištenjem običnih transformacija moramo duplicirati svaku
transformaciju, promijeniti ih da čine suprotno onome što bi normalno činile (npr.
translate -y*3 umjesto translate y*3) i okrenuti njihov redosljed. Ova
transformacija je korisna kako ne bismo pisali nepotrebne linije koda.
Natrag na sadržaj
2.2. Dodavanje promatrača (kamere)
Kako bi POV Ray „vidio“ našu scenu i time bio u mogućnosti iscrtati je, POV Ray-u je
moramo reći gdje se nalazi kamera, tj. definirati njezinu položaj i točku kuda ona
gleda.
Ključna riječ camera opisuje gdje i kako kamera tj. promatrač vidi scenu. Ona sadrži x,
y i z koordinate koje određuju položaj kamere i na koji dio scene ona gleda. Položaj
kamere i njezinu točku gledišta definiramo vektorom položaja. Kameru dodajemo na
slijedeći način:
camera {
location <0, 2, -3>
look_at <0, 1, 2>
}
Ukratko location <0,2,-3> postavlja kameru dvije jedinice iznad i tri jedinice ispred
centra virtualnog prostora koji se nalazi u <0,0,0>. Po osnovnim postavkama +z
smjer pokazuje u ekran, a –z iz ekrana.
Naredba look_at <0,1,2> rotira kameru da gleda u točku sa koordinatama <0,1,2>.
Točka se nalazi 1 jedinicu iznad i 2 jedinice iza ishodišta. Točka u koju je kamera
uperena se stoga nalazi 5 jedinica ispred i jednu jedinicu ispod kamere. Točka
definirana naredbom look_at predstavlja središte naše slike.
Natrag na sadržaj
14
2.3. Opisivanje objekta
Kada smo postavili kameru da snima scenu slijedi postavljanje objekta u scenu.
Recimo da u našu scenu želimo dodati sferu:
sphere { <0, 1, 2>, 2
texture {
pigment { color Yellow }
}
}
Prvi vektor definira položaj središta sfere. U ovom primjeru x koordinata jednaka je
nuli stoga je sfera centrirana lijevo i desno. Koordinata y jednaka je 1 ,tj. središte
sfere nalazi jednu jedinicu iznad ishodišta. z koordinata jednaka je 2 što znači da se
središte sfere nalazi 2 jedinice ispred središta virtualnog prostora. Nakon vektora
položaja središta sfere dolazi radijus koji je u našem slučaju jednak 2 jedinice.
Natrag na sadržaj
2.3.1. Dodavanje teksture objektu
Kad smo definirali položaj i veličinu objekta slijedeće što trebamo učiniti je definirati
parametre površine objekta. Ključna riječ texture definira parametre teksture objekta.
Blok koda teksture opisuje parametre poput boje, nepravilnosti i završne obrade
površine objekta. Minimum koji moramo ispuniti kod dodavanja teksture je definirati
boju površine. Ostala svojstva teksture će poprimiti zadane vrijednosti programa.
texture { pigment { color Yellow } }
Boju koju definiramo je boja koju će objekt imati kad je potpuno osvjetljen. Kad bi
slikali naš objekt na platnu koristili bi tamne tonove boje da naglasimo osjenčanu
stranu objekta, a svjetlije tonove boje bi koristili za osvjetljenu stranu objekta. No
ovdje metoda praćenja zraka vodi brigu o tome umjesto nas. Mi samo trebamo
odabrati osnovnu boju koja će se dodijeliti objektu, a POV Ray će ju posvjetliti ili
potamniti ovisno o osvjetljenju scene. Kako mi definiramo osnovnu boju koju objekt
zapravo posjeduje, a ne definiramo boju izgleda objekta na ekranu, taj parametar
naziva se pigment.
Riječ color definira da će cijeli objekt biti samo jedne boje, a ne obojan nekim
šarenim uzorkom. Možemo koristiti jedan od predefiniranih identifikatora boje iz
standardne datoteke colors.inc koju uključujemo na početku teksta.
Ako neka standardna boja koju želimo nije dostupna ili ako želimo definirati vlastitu
boju, mi je jednostavno definiramo koristeći ključnu riječ color nakon koje slijede
ključne riječi red, green i blue koje određuju količinu crvene, zelene i plave boje koje
će se pomiješati. Na primjer nijansu roze boje možemo definirati sa:
15
color red 1.0 green 0.8 blue 0.8
Vrijednosti nakon svake ključne riječi trebaju biti u rasponu od 0.0 do 1.0. Ako bilo
koja od tri komponente nije definirana, ona poprima osnovnu postavljenu vrijednost
0. Gore navedena definicija roze boje se skraćeno piše:
color rgb <1.0, 0.8, 0.8>
U mnogim slučajevima ključna rijeć color je suvišna, stoga je najkraći način definiranja
roze boje sljedeći:
rgb <1.0, 0.8, 0.8>
Opčenito vektor boje se sastoji od pet komponenata:
rgbft = <red, green, blue, filter, transmit>
Četvrta komponenta filter, određuje količinu filtrirane svjetlosti koja prolazi kroz
materijal objekta. Primjer bi bilo obojano staklo. Svjetlost koja prolazi kroz takav
objekt poprima djelomično ili u potpunosti boju materijala objekta, jer on selektivno
apsorbira određene frekvencije svjetlosti dok druge propušta. Materijal filtirira
svjetlost i stoga se ta komponenta naziva filterom.
Peta komponenta transmit određuje količinu nefiltrirane svjetlosti koja prolazi kroz
površinu objekta. Primjer bi bio obično prozirno staklo. U takvom primjeru sve
frekvencije svjetlosti nesmetano prolaze kroz površinu objekta. Boja svjetlosti ostaje
nepromijenjena, no njezin intenzitet je smanjen.
Finalnoj boji objekta doprinose definirana boja objekta i iznos propuštene svjetlosti.
Ako imamo:
rgbt <1.0, 0.8, 0.8, 0.9>
transmit je postavljen na 0.9 što znači da objekt propušta 90% svjetlosti. Ta svjetlost
doprinosi finalnoj boji objekta u iznosu od 90%, dok definirana boja doprinosi samo
10 %.
Sve vrijednosti unutar definicije boje trebaju biti u rasponu vrijednosti od 0 do 1 u
protivnom nećemo dobiti realistične efekte. Ukoliko ne definiramo neku komponentu
boje POV Ray je postavlja na nulu.
Natrag na sadržaj
16
2.4. Definiranje izvora svjetlosti
Uz kameru i objekt u našoj sceni potreban nam je i izvor svjetlosti. Za definiranje
izvora svjetlosti u našoj sceni koristimo ključnu riječ light_source koja je popraćena
sljedećim parametrima:
light_source { <2, 4, -3> color White }
Vektor u izrazu light_source definira položaj svjetla koje se nalazi dvije jedinice
desno, četiri jedinice iznad i tri jedinice ispred ishodišta virtualnog prostora. Uz njegov
položaj definirana je i boja svjetla, a to je u našem slučaju bijela. Svjetlosni izvor je
sićušna nevidljiva točka koja emitira svjetlost radijalno prema van u svim smjerovima.
Ona nema fizički oblik (nema dimenzije) stoga izvoru svjetla nije potrebno definirati
teksturu.
Natrag na sadržaj
2.4.1. Točkasti izvor svjetlosti
Točkasti izvori su točno ono što im sam naziv govori - točke. Točkasti izvor nema
veličinu, nevidljiv je i cijeli prostor scene osvjetljava jednoliko, bez obzira koliko su
objekti u sceni udaljeni od samog izvora svjetlosti. Takvo ponašanje svjetla nije
realno i može se promijeniti ako je potrebno. Točkasti izvor predstavlja
najjednostavniji i najosnovniji izvor svjetlosti. Postoje samo dva bitna parametra kod
točkastog izvora, a to su položaj i boja.
Točkasti izvor svjetlosti i njegove parametre definiramo na sljedeći način:
light_source { <2, 10, -3>
color White
}
Natrag na sadržaj
2.4.2. Usmjereni izvor svjetlosti (spotlight izvor, reflektor)
Usmjereni izvori svjetlosti se koristite za naglašavanje i osvjetljavanje dijelova scene
baš kao što se koriste u svakodnevnom životu pri osvjetljavanju scena u kazalištu ili
na filmskim setovima. Da bismo definirali usmjereni izvor svjetlosti bloku koda
običnog točkastog svjetla dodajemo ključnu riječ spotlight. Usmjereni izvori
svjetlosti imaju nešto više parametara od točkastih izvora. To su radius, falloff,
tightness i point_at. Parametar radius je kut potpuno osvjetljenog stošca.
Parametar falloff predstavlja kut stošca penumbre gdje intenzitet svjetlosti opada u
nulu, tj. područje djelomične sjene gdje svjetlost prelazi u tamu. Parametar tightness
određuje oštrinu opadanja intenziteta svjetlosti u penumbri (polusjeni). Parametar
point_at predstavlja točku u koju je usmjeren izvor svjetlosti.
17
Slika 3. Parametri usmjerenog izvora svjetlosti1
light_source {
<0, 10, -3>
color White
spotlight
radius 10
falloff 20
tightness 0
point_at <0, 0, 0>
}
U gore navedenom bloku koda definiran je izvor svjetlosti (light_source). On je
centriran lijevo i desno, deset jedinica iznad ishodišta i tri jedinice ispred ishodišta
(<0,10,-3>). Izvor svjetlosti je tipa reflektora što nam govori ključna riječ spotlight.
Kut stošca potpune osvjetljenosti iznosi 10 stupnjeva (radius 10) i to je kut koji
zatvara ploha stošca sa njegovom centralnom linijom. Kut stošca penumbre iznosi 20
stupnjeva (falloff 20), što predstavlja kut koji zatvara ploha stošca gdje počinje
totalni mrak sa centralnom linijom stošca. Tim parametrom definiramo širinu područja
smanjenja intenziteta svjetlosti od maksimuma do minimuma, tj. područje djelomične
sjene. Kut opadanja intenziteta svjetlosti uvijek treba biti veći od kuta maksimalne
osvjetljenosti. Ako su oni jednaki ili ako je kut opadanja intenziteta nula dobivamo
oštar prijelaz intenziteta iz maksimuma u minimum. Količina smanjenja intenziteta
iznosi 0 (tightness 0). Ključna riječ tightness određuje dodatno eksponencijalno
„omekšavanje“ rubova. Ukoliko je njezina vrijednost različita od nule ona utjeće na
svjetlost unutar stošca potpune osvjetljenosti kao i na svjetlost u stošcu penumbre.
Intenzitet svjetlosti na nekom kutu od centralne linije dana je sa:
intenzitet*cos(kut)*tightness. Izvor svjetlosti je usmjeren u točku <0,0,0>.
Natrag na sadržaj
18
2.4.3. Cilindrični izvor svjetlosti
Svjetlost reflektora je oblika stošca što znači da se njezin efekt mijenja sa
udaljenošću. Što je objekt udaljeniji od reflektora veći je radijus projicirane svjetlosti.
No ako nam treba usmjereni izvor svjetlosti čiji radijus površine maksimalnog
intenziteta projicirane svjetlosti i radijus površine smanjenja intenziteta projicirane
svjetlosti budu stalne veličine bez obzira koliko daleko se taj izvor nalazi tada
koristimo cilindrični izvor svjetlosti. Cilindrični izvor svjetlosti je poput reflektora, a
razlikuje se po tome što su je područje maksimalnog intenziteta i područje opadanja
intenziteta svjetlosti jednake veličine bez obzira koliko je naš objekt udaljen od izvora
svjetlosti. Oblik svjetlosti stoga više nije stožac već cilindar. Cilindrični izvor svjetlosti
definiramo poput reflektora, no ovdje umjesto ključne riječi spotlight koristimo
ključnu riječ cylinder. Svi ostali parametri izvora svjetlosti jednaki su parametrima
reflektora.
Natrag na sadržaj
2.4.4. Površinski izvor svjetlosti (Area light)
Sva dosad opisana svjetla imaju jedno zajedničko svojstvo, a to je da proizvode oštre
sjene. To proizlazi iz činjenice da je izvor svjetla točka koja je infinitezimalno mala.
Objekti su ili pod direktnim utjecajem svjetla, u tom slučaju su potpuno osvjetljeni, ili
nisu pod utjecajem svjetla, te su tada u sjeni. U stvarnom životu takva situacija
potpune svjetlosti i tame postoji samo u dalekom svemiru. No na zemlji svjetlost se
ogiba na objektima, odbija se od objekata i izvor ima neku dimenziju što za posljedicu
ima pojavu sjena koje više nisu oštre, već se pojavljuju i područja djelomične sjene.
Djelomična sjena (penumbra) je područje koje se nalazi između područja potpune
osvjetljenosti i potpune sjene. To je područje prijelaza gdje se intenzitet svjetlosti
smanjuje iz maksimuma u minimum. Da bismo simulirali takve glatke sjene program
za praćenje zraka mora svojim izvorima svjetlosti dati neku dimenziju. U POV Ray-u
to postižemo korištenjem površinskih izvora svjetlosti.
Površinska svjetla imaju dvije dimenzije. Ovdje se radi o mreži, tj. matrici svjetala.
Ona se definiraju pomoću dva vektora koja slijede nakon ključne riječi area_light.
Moramo definirati i koliko će svjetala biti u nizu. Više svjetala će nam dati glađu
sjenu, no tada će nam trebati više vremena da se slika scene iscrta na ekranu.
Također imamo mogućnost definiranja vrijednosti prilagođenja. Ključna riječ adaptive
govori programu za praćenje zraka da se može prilagoditi situaciji i da šalje samo
zrake potrebne za određivanje vrijednosti piksela. Kad ne koristimo ključnu riječ
adaptive iz svakog svjetla koje se nalazi na površinskom izvoru šalju se zasebne
zrake i to usporava proces iscrtavanja slike. Veća vrijednost prilagodbe daje nam
čišće područje polusjena, tj. dobiveni prikaz je realniji. Povećanje vrijednosti
prilagodbe povečava vrijeme praćenja zraka. Još jedna ključna riječ koju ovdje
19
koristimo je jitter. Ona govori programu za praćenje zraka da lagano pomakne
položaj svakog svjetla na površini kako bi dobili što glađe sjene.
light_source {
<2, 10, -3>
color White
area_light <5, 0, 0>, <0, 0, 5>, 5, 5
adaptive 1
jitter
}
U gore navedenom bloku koda imamo bijelo svjetlo sa središtem u točki <2,10,-3>.
Ono je veliko pet jedinica duž x osi (<5,0,0>) i pet jedinica duž z osi (<0,0,5>). Sadrži
25 (5*5) svjetala na toj površini. Definirana je vrijednost prilagodbe, te su izvori su
međusobno lagano odmaknuti.
Reflektori i cilindrična svjetla također mogu biti površinska svjetla. Oštre sjene koje
smo dobivali takvim izvora sada postaju glatke i realne. Primjer pretvaranja reflektora
i cilindričnog izvora u površinski izvor svjetlosti:
light_source {
<2, 10, -3>
color White
cylinder
radius 15
falloff 18
tightness 10
area_light <1, 0, 0>, <0, 0, 1>, 2, 2
adaptive 1
jitter
point_at <0, 0, 0>
}
light_source {
<10, 10, -1>
color Red
spotlight
radius 12
falloff 14
tightness 10
area_light <1, 0, 0>, <0, 0, 1>, 2, 2
adaptive 1
jitter
point_at <2, 0, 0>
}
Natrag na sadržaj
2.4.5. Ambijentalni izvor svjetlosti
Ambijentalni izvor svjetlosti koristi se za simulaciju efekta međudifuzne refleksije. Kad
ne bi bilo međudifuzne refleksije sva područja koja nisu direktno obasjana svjetlošću
bila bi potpuno tamna. POV Ray koristi ključnu riječ ambient za određivanje koliko je
svjetla koje dolazi iz ambijentalnog izvora reflektirano na površini objekata.
20
Po osnovnim postavkama ambijentalni izvor emitira svjetlost bijele boje (rgb
<1,1,1>). On emitira svjetlo svugdje i u svim smjerovima duž virtualnog prostora.
Promjenu boje ambijentalnog svjetla možemo jednostavno učiniti u globalnim
postavkama. Umjesto da mijenjamo vrijednosti ambijenta u postavkama završne
obrade svih objekata, mi mijenjamo samo postavke ambijentalnog izvora svjetlosti. U
nastavku je primjer koda koji definira crveno ambijentalno svjetlo.
global_settings { ambient_light rgb <1, 0, 0> }
Natrag na sadržaj
2.5. Osnovni objekti u POV Ray-u
Postoje mnogi beskonačni i konačni oblici koji mogu biti iscrtani u POV-Ray-u. U
sljedećem poglavlju opisani su osnovni oblici, njihovi parametri i načini na koji se
definiraju.
Natrag na sadržaj
2.5.1. Kvadar
Kvadar je jedan od najčešće korištenih objekata. Definiramo ga ključnom riječi box.
Primjer definiranja kvadra:
box {
<-1, 0, -1>,
< 1, 0.5, 3>
rotate y*20 // jednako "rotate <0, 20, 0>"
}
Kvadar se definira vektorima položaja dva nasuprotna kuta. Prvi vektor općenito
predstavlja minimum (prednji donji lijevi kut), a drugi vektor predstavlja x, y i z
koordinate maksimuma (stražnji gornji desni kut). Kvadar može biti definiran samo
paralelno osima koordinatnog sustava našeg virtualnog prostora. Tek kada ga
definiramo koristimo rotaciju da ga postavimo u željenu poziciju.
Sa vrijednostima parametara i vektorima možemo izvoditi jednostavne matematičke
operacije. U gore navedenom bloku koda u parametru rotacije smo vektorski
identifikator y pomnožili sa 20. To je isto kao da smo napisali <0,1,0>*20 ili <0,20,0>.
Natrag na sadržaj
2.5.2. Sfera
Sfera se definira pomoću ključne riječi sphere:
sphere {
<0, 1, 2>, 2
texture { pigment { color rgb <0, 0, 1> } }
21
}
Vektor <0,1,2> predstavlja vektor položaja središte sfere. Ono se u ovom slučaju
nalazi u točki (0,1,2), tj. jednu jedinicu iznad i dvije jedinice iza ishodišta koordinatnog
sustava. Vrijednost nakon položaja središta sfere definira njezin radijus koji iznosi
dvije jedinice. Boja površine sfere (pigment) izražen je pomoću rgb (red, green, blue)
oznake i u ovom slučaju sfera je plave boje.
Natrag na sadržaj
2.5.3. Stožac
Kod definiranja stošca koristimo ključnu riječ cone:
cone {
<0, 1, 0>, 0.3
<1, 2, 3>, 1.0
}
Odrezani stožac se definira pomoću vektora položaja središta i radijusa gornje i
donje baze. U našem primjeru središte jedne baze je u točki <0,1,0> i ona ima radijus
0.3, dok se središte druge baze nalazi u točki <1,2,3> i njezin radijus je 1. Ako želimo
da odrezani stožac postane stožac, radijus jedne baze mora biti jednak nuli. Baze
stošca su međusobno paralelne i okomite na os stošca. Želimo li dobiti otvoreni
odrezani stožac bez baza, moramo definirati ključnu riječ open nakon drugog
radijusa:
cone {
<0, 1, 0>, 0.3
<1, 2, 3>, 1.0
open
// središte i radijus jedne baze
// središte i radijus druge baze
// makni baze stošca
}
Natrag na sadržaj
2.5.4. Cilindar
Kada želimo definirati objekt u obliku cilindra koristimo ključnu riječ cylinder:
cylinder {
<0, 1, 0>,
<1, 2, 3>,
0.5
open
}
//
//
//
//
središte jedne baze
središte druge baze
radijus
makni baze cilindra
Parametri cilindra su slični parametrima stošca. Ovdje također definiramo položaj
središta baza cilindra, no pokraj njih ne definiramo njihov radijus. Radijus se definira
nakon vektora položaja središta druge baze cilindra. Želimo li imati otvoreni cilindar,
ovdje također koristimo ključnu riječ open.
22
Natrag na sadržaj
2.5.5. Ravnina
Ravninu definiramo koristeći ključnu riječ plane na slijedeći način:
plane { <0, 1, 0>, -1
pigment { checker color Red, color White }
}
Definirani objekt je beskonačna ravnina. Vektor <0,1,0> je vektor normale ravnine.
Kad bismo stajali na toj ravnini njezina normala bi pokazivala ravno gore tj. ona je
usmjerena u y smjeru. Broj nakon vektora predstavlja udaljenost za koju je ta ravnina
pomaknuta od ishodišta duž normale. U našem slučaju ravnina je postavljena u
položaj y = -1.
Iako u bloku koda nije korištena ključna riječ texture, definiranoj ravnini je
primijenjena tekstura hrvatske šahovnice. Često tipkanje naredbi koje se nalaze
zatvorene u vitičastim zagradama poput texture { pigment } može postati
zamorno, stoga nam POV Ray u mnogim slučajevima dozvoljava da ispustimo
ključnu riječ texture. Naredba pigment prvo koristi uzorak boje šahovnice koji je
predefiniran, te tada određuje da umjesto njih koristi crvenu i bijelu boju koju smo mi
definirali.
Kako se vektori <1,0,0>, <0,1,0> i <0,0,1> često koriste, POV Ray ima ugrađene
vektorske identifikatore x, y i z koje možemo koristiti kao skraćenice. Tako pomoću
njih našu ravninu možemo definirati na sljedeći način:
plane { y, -1
pigment { ... }
}
Natrag na sadržaj
2.5.6. Torus
Torus je jedan od vrlo korištenih oblika stoga ga je POV Ray uvrstio u svoju datoteku
primitivnih oblika. Definiramo ga ključnom riječi torus. Dvije vrijednosti koje slijede
predstavljaju glavni radijus i radijus presjeka torusa. Torus definiramo na sljedeći
način:
torus { 4, 1
pigment { Green }
}
Natrag na sadržaj
23
2.6. CSG
CSG 2 je akronim od Constructive Solid Geometry i on predstavlja koncept skupovnih
operacija sa primitivnim oblicima. To je tehnika koja se koristi u programima za
modeliranje i iscrtavanje poput POV-Ray-a. Ona nam omogućuje konstruiranje
složenijih objekata kombinacijom jednostavnih primitivnih objekata poput kvadra,
sfere, cilindra, itd. CSG 3 je ukratko rečeno tehnika koja nam dopušta da na objektima
radimo operacije koje su uobičajene za Booleovu algebru. Operacije možemo
primjenjivati na svim objektima koji su dobro definirani, tj. imaju dobro definiranu
površinu i unutrašnjost.
Objekte dobivene CSG tehnikom kraće nazivamo CSG objekti. Takvi objekti mogu
biti vrlo složeni. Oni mogu biti dobiveni mnogostrukim kombinacijama osnovnih CSG
operacija. Bez obzira na njihovu složenost oni su uglavnom konačni objekti, te se
mogu transformirati kao bilo koji primitivni oblik.
Natrag na sadržaj
2.6.1. Unija
Slika 4. Unija1
Unija (eng.union) se koristi za spajanje grupe objekata u jedan entitet kojim se može
manipulirati kao zasebnim objektom. Koristimo ključnu riječ union nakon koje
definiramo objekte i njihove parametre. Na primjer:
union {
sphere { <0, 0, 0>, 1
pigment { Red }
translate -0.5*x
}
sphere { <0, 0, 0>, 1
pigment { Yellow }
translate 0.5*x
2
Antonio Šiber, Ekstremno brzi uvod u Povray s primjerima,
http://asiber.ifs.hr/papers/povray_tutorial.pdf
3
Friedrich A. Lohmüller, Descriptions and Examples for the POV-Ray Raytracer, http://www.flohmueller.de/pov_tut/csg/povcsg1e.htm
24
}
}
Slika 5. CSG objekt dobiven operacijom unije3
Gore navedenim blokom koda POV Ray nam iscrtava istu sliku koju bismo dobili
samim definiranjem dviju sfere bez operacije unije. No razlika je u tome što POV Ray
objekt dobiven unijom vidi kao samostalni objekt. Sada više ne moramo zasebno
transformirati svaki sastavni objekt, već sve transformacije i promjene teksture
možemo jednostavno primijeniti na novi objekt.
union {
}
sphere { <0, 0, 0>, 1
translate -0.5*x
}
sphere { <0, 0, 0>, 1
translate 0.5*x
}
pigment { Red }
scale <1, .25, 1>
rotate <30, 0, 45>
Važno je napomenuti da površine sastavnih objekata unutar unije neće biti maknute.
U našem primjeru nevidljivi dijelovi površine sfera unutar unije još uvijek postoje. To
može predstavljati problem ako koristimo objekte od prozirnih ili djelomično prozirnih
materijala poput stakla. U tom slučaju koristimo operaciju merge koja je objašnjena u
poglavlju 1.6.4.
Natrag na sadržaj
2.6.2. Presjek
Slika 6. Presjek1
25
Druga CSG operacija kojom kreiramo CSG objekte je presjek (eng. intersection).
Ključnu riječ koju koristimo je intersection:
intersection {
sphere { <0, 0, 0>, 1
pigment { Red }
translate -0.5*x
}
sphere { <0, 0, 0>, 1
pigment { Yellow }
translate 0.5*x
}
}
Slika 7. CSG objekt dobiven operacijom presjeka3
Operacija presjeka stvara objekt koji se sastoji od djelova površina sastavnih
objekata gdje se oni međusobmo preklapaju. U našem slučaju dobili smo objek u
obliku debele leće koji se sastoji od dijelova površina sfera gdje se one preklapaju.
Kao što smo već spomenuli sastavni objekti na kojima se primjenjuju CSG operacije
moraju imati dobro definiranu unutrašnjost i vanjštinu. Kako POV Ray objekt shvaća
kao skup točaka, on mora znati da li se neka točka prostora nalazi unutar ili izvan
objekta. Točka je dio presjeka ako se nalazi unutar oba objekta, tj. ako se nalazi na
području gdje se oni preklapaju. To je važno napomenuti jer u protivnom kada se dva
sastavna objekta ne preklapaju, CSG objekt dobiven operacijom presjeka nestaje. To
je matematički ispravno jer tada ne postoji presjek skupova točaka sastavnih
objekata.
Natrag na sadržaj
2.6.3. Razlika
Slika 8. Razlika1
26
Operacijom difference dobivamo CSG objekt tako da se od prvog sastavnog objekta
oduzima svaki sljedeći definirani objekt:
difference {
sphere { <0, 0, 0>, 1
pigment { Red }
translate -0.5*x
}
sphere { <0, 0, 0>, 1
pigment { Yellow }
translate 0.5*x
}
}
Slika 9. CSG objekt dobiven operacijom razlike3
Rezultat gore navedenog koda je razlika koju smo dobili oduzimanjem druge sfere od
prve. Operaciju difference možemo shvatiti kao presjek prvog sastavnog objekta i
inverza svih sljedećih definiranih objekata što i POV Ray interno radi kada mi
definiramo razliku objekata.On jednostavno dodaje ključnu riječ inverse drugom i svim
sljedećim sastavnim objektima, te tada koristi operaciju intersection s prvim
sastavnim objektom. Stoga u našem slučaju točke unutar prve sfere i izvan druge
sfere pripadaju njihovoj razlici. Rezultat operacije difference mogli smo dobiti u
kombinacijom operacije intersection i operacije inverse.
Ako se prvi sastavni objekt u cijelosti nalazi unutar drugog sastavnog objekta, njihova
razlika nestaje. Matematički gledano imamo slučaj kada oduzimamo skup točaka koji
se nalazi izvan objekta kojeg oduzimamo od skupa točaka koje se nalaze unutar
objekta od kojeg oduzimamo. Skup točaka objekta od kojeg oduzimamo nalazi se
unutar objekta kojeg oduzimamo i njihova razlika je prazan skup, što se ne može
fizički reprezentirati i stoga takav objekt nestaje sa ekrana.
Natrag na sadržaj
2.6.4. Spajanje
Operaciju union možemo gledati kao proces lijepljenja dvaju objekata gdje površine
objekta unutar unije ostaju definirane. U većini slučajeva to nam ne predstavlja
problem, no ako koristimo operaciju unije na prozirnim objektima njihove površine
unutar unije biti će vidljive. Tada koristimo operaciju merge da riješimo nastali
problem. Operacija merge djeluje na isti način kao i union, jedina razlika je što ona
miče površine unutar nastalog CSG objekta kao što je prikazano na slici:
27
Slika 10. Spajanje1
Uzmimo za primjer definiciju dva CSG objekta u obliku pijuna istih parametara, jedan
pomoću union operacije, a drugi pomoću merge operacije.
union {
sphere { <0, 1, 0>, 0.35 }
cone { <0, 0, 0>, 0.45, <0, 1.2, 0>, 0 }
texture { Glass3 }
translate <-0.5, 0, 0>
}
merge {
sphere { <0, 1, 0>, 0.35 }
cone { <0, 0, 0>, 0.45, <0, 1.2, 0>, 0 }
texture { Glass3 }
translate <0.5, 0, 0>
}
Slika 11. Razlika između unije i spajanja3
Na desnoj strani se nalazi pijun dobiven operacijom merge, a na ljevoj strani pijun
dobiven operacijom union. Operacija union nije maknula dio stošca koji probija sferu i
time nismo dobili foto-realističnu sliku pijuna kakvu nam daje operacija merge.
Operacija merge je sporija od operacije union na neprozirnim tijelima, no ukoliko
kreiramo neki složeni CSG objekt koji se satoji od mnoštva manjih objekata imati
ćemo puno površina objekata koje su nam nepotrebne i samim time usporiti proces
iscrtavanja.
Natrag na sadržaj
28
2.6.5. Inverz
Ako objekt predočimo kao skup definiranih točaka, operacija inverse predstavlja
komplement tog skupa točaka. Ona se često koristi za okretanje objekata iznutra
prema van, pri čemu se ne mijenja geometrija objekta, već samo način na koji POV
Ray shvaća sam objekt. Pri definiranju sfere točke unutar sfere predstavljaju njezinu
unutrašnjost, a točke izvan sfere njezinu okolinu. Kad na nju primijenimo operaciju
inverse, POV Ray je sada gleda kao novi objekt koji je definiran točkama izvan sfere.
Pri tome se ne mijenja njegova geometrija, već samo način na koji se reprezentira.
Glavna prednost komplementa je u tome što nam uvelike skraćuje dužinu koda kod
definiranja kompleksnih CSG objekata. Na primjer:
umjesto koda:
kraće pišemo:
difference {
intersection { object {A}
object {B}
}
Object {C}
}
intersection { object {A}
object {B}
object {C inverse}
}
POV Ray nam iscrtava isti objekt, no u primjeru korištenja operacije inverse imamo
manje linija koda što će ubrzati sam proces iscrtavanja. Znamo da sljedeća tvrdnja
istinita:
A\B=A∩𝐵
Stoga CSG objekt dobiven razlikom objekta A i B možemo dobiti i unijom objekta A i
komplementa objekta B. Uzmimo za primjer CSG objekt dobiven operacijom
difference iz poglavlja 1.6.3. Njega ćemo također dobiti korištenjem operacije
intersection i operacije inverse:
intersection {
sphere { <0, 0, 0>, 1
pigment { Red }
translate -0.5*x
}
sphere { <0, 0, 0>, 1
pigment { Yellow }
translate 0.5*x
inverse
}
}
Slika 12. CSG objekt dobiven kombinacijom operacije presjeka i inverza3
29
To je ujedno i način na koji POV Ray interno reprezentira operaciju difference.
Drugom i svakom sljedećem objektu dodaje naredbu inverse i tada radi presjek sa
prvim sastavnim objektom.
Natrag na sadržaj
2.6.6. Naredba Clipped By
Slika 13. Rezultat naredbe clipped by1
Naredba clipped_by spada u modifikatore objekta, no njome dobivamo CSG objekte
slične objektima dobivenih operacijom intersection. Sintaksa je sljedeća:
sphere { <0, 0, 0>, 0.5
texture { pigment { color rgb <1, 0, 0.2> } }
clipped_by {
sphere { <0, 0, 0>, 0.5
translate <0.5, 0, -0>
inverse
}
}
}
Slika 14. CSG objekt dobiven naredbom clipped by3
Vidimo da nam korištenje naredbe clipped_by u našem primjeru daje CSG objekt
sličan onome dobivenom razlikom sfera. No ovdje dobivamo otvoreni CSG objekt
izgleda prerezane ljuske sfere. Dio crvene sfere koji se nalazi unutar drugog objekta
(komplementa sfere) se zadržava dok se ostatak odrezuje i odbacuje. Vidljivo nam
da je naredba clipped_by korisna za izrezivanje dijelova bilo kojeg oblika. Njezina
prednost je kraće vrijeme iscrtavanja za razliku od bilo koje druge metode kojom
mijenjamo geometriju objekta.
30
Natrag na sadržaj
2.7. Naredba finish
Naredbom finish u virtualnom POV Ray prostoru dobivamo ono što u stvarnosti
dobivamo završnom obradom objekta. Svojstva završne obrade površine objekta
uveliko utječu na njegov izgled. O njima ovisi način reflektiranja svjetlosti sa objekta,
izgled područja scene u sjeni i koje su vrste naglešenoga osvjetljenja vidljive.
Naredba finish je završni dio definiranja teksture objekata u POV Ray-u kojom
kontroliramo svojstvima površine objekata. Pomoću nje možemo objekte učiniti
sjajnima i reflektivnima ili bez sjaja. Ona nam također služi kako bi odredili što se
događa sa svjetlošću koja prolazi kroz prozirne pigmente i što se događa kada je
svjetlost raspršena na nesavršeno glatkim površinama objekata. Postoje dvanaest
različitih svojstava završnog izgleda objekta dostupnih u POV Ray-u. U nastavku su
opisana najčešće korištena svojstva završne obrade objekata kojima se kontrolira
ključnim riječima ambient, diffuse, phong, specular, metallic i reflection.
Naredbu finish definiramo unutar bloka koda texture:
object { Moj_objekt texture { finish { phong 0.5 } } }
Natrag na sadržaj
2.7.1. Naredba ambient
Svjetlost koja se vidi u tamnim područjima sjene dolazi od difuznih refleksija sa
drugih objekata. Takva svjetlost se ne može direktno modelirati korištenjem metode
praćenja zraka. Iz tog razloga se često koristi trik koji se naziva ambijentalno
osvjetljenje kako bi se simuliralo svjetlo unutar područja scene u sjeni.
Ambijentalna svjetlost je svjetlost koja je raspršena duž cijelog virtualnog prostora.
Ona se odbija duž cijelog prostora i jednoliko osvjetljava sva područja scene na koje
ne dolazi direktna svjetlost tj. područja sjene. Računanje stvarnog ambijentalnoga
osvjetljenja iziskuje previše vremena stoga se ambijentalna svjetlost simulira
dodavanjem malog iznosa bijele svjetlosti svim teksturama objekata bez obzira da li
su one obasjane svjetlošću ili ne.
To znači da će dijelovi objekta koji se nalaze u sjeni posjedovati mali dio boje svoje
površine, a neće biti potpuno crni. Ambijentalna svjetlost stvara dojam kao da
tekstura objekta sjaji, no ambijentalna svjetlost u teksturi utječe samo na objekt na
kojem je primijenjena.
Ključnom riječju ambient kontroliramo količinu ambijentalnoga osvjetljenja. Njegovu
vrijednost možemo izraziti brojčanom vrijednošću, no POV Ray ju shvaća kao vektor
31
boje sa komponentama iznosa koji smo zadali brojčanom vrijednošću. Na primjer
vrijednost 0.5 POV Ray shvaća kao vektor boje <0.5,0.5,0.5,0.5,0.5> i koristi
samo njegove RGB komponente vektora.
Standardno postavljena vrijednost je 0.1 što predstavlja vrlo blago ambijentalno
osvjetljenje. Iznos vrijednosti se može kretati u rasponu od 0 do 1. Ambijentalno
osvjetljenje utječe na područja objekta u sjeni kao i na područja objekta koja su
osvijetljena direktnom svjetlošću, stoga pri povećanju vrijednosti naredbe ambient
moramo smanjiti vrijednosti naredbi diffuse i reflection (vidi naprijed).
Iako ova metoda stvara dojam da površina objekta emitira blagu svjetlost njome ne
utječemo na boju objekata koji ga okružuju. U stvarnosti kada bi ušli u sobu koja je
obojana u crveno noseći pritom bijelu majicu ona bi izgledala ružičasto zbog svjetlosti
reflektirane sa zidova. Korištenjem metode ambijentalnog osvjetljenja nećemo dobiti
taj učinak, već ona samo predstavlja prečac kako bi dobili realniji prikaz naše scene i
skratili vrijeme potrebno za izračunavanje i iscrtavanje slike naše scene.
Boja ambijentalnog osvjetljenja ne mora biti bijela, već je možemo definirati na dva
načina. Prvi je da boju definiramo vektorom boje nakon ključne riječi ambient:
finish { ambient rgb <0.3, 0.1, 0.1> } //ružičasti ambijent
Natrag na sadržaj
2.7.1.1. Radiosity tehnika
Radiosity tehnika predstavlja dodatni izračun koji realistično simulira difuznu
međurefleksiju svjetlosti tj. ona predstavlja tehniku osvjetljenja koja simulira difuznu
izmjenu zračenja između objekata scene. Tu difuznu međurefleksiju možemo vidjeti
npr. u situaciji kada sa bijelom majicom uđemo u sobu sa crvenim zidovima, stropom
i podom. Naša majica će poprimiti crvenkastu boju zbog svjetlosti koja se reflektira sa
zidova, plafona i poda sobe. Područja sjena našeg okruženja također neće biti
potpuno u mraku iako izvor svjetlosti direktno ne obasjava ta područja. Difuzna
svjetlost koja se reflektira sa drugih objekata upada u područja sjena i zato ona nisu
potpuno tamna.
POV Ray po standardnim postavkama računa samo direktni utjecaj izvora svjetlosti
na objekte, te su područja sjena tada potpuno mračna. Za simulaciju međudifuzne
refleksije samom metodom pračenja zraka koristi se pojednostavljeni model, mogli
bismo reći „trik“, koji se zove ambijentalno svjetlo, no ono nije vrlo precizno. Ako
želimo precizni izračun difuzne međurefleksije koristimo radiosity tehniku koju
uključujemo sa radiosity{} blokom unutar globalnih postavki programa.
32
Za radiosity tehniku najvažniji su ambient i diffuse parametri završne obrade
objekata. Njihov utjecaj se ovdje dosta razlikuje od utjecaja u standardno osvjetljenoj
sceni.
Parametar ambient određuje količinu svjetlosti koju objekt emitira. To je baza za
radiosity tehniku bez izvora svjetlosti, no važna je i u sceni gdje se koriste izvori
svjetlosti. Kako većina materijala ne emitira svjetlost standardno postavljena
vrijednost od 0.1 može biti prevelika te je treba postaviti na 0.0. To možemo postaviti
i u glavnim postavkama programa tako da podesimo vrijednost ambient_light.
Parametar diffuse utječe na iznos difuzne refleksije upadne svjetlosti. U scenama
gdje se koristi radiosity tehnika taj parametar ne utječe samo na direktan izgled
površine već i na to koliko će drugi objekti biti osvjetljeni indirektnom svjetlošću sa te
površine. Standardno postavljene vrijednosti radiosity bloka su sljedeće:
radiosity {
pretrace_start 0.08
pretrace_end 0.04
count 35
nearest_count 5
error_bound 1.8
recursion_limit 3
low_error_factor 0.5
gray_threshold 0.0
minimum_reuse 0.015
brightness 1
adc_bailout 0.01/2
}
Korištenjem Radiosity tehnike POV Ray računa iznos ambijenta za svaku točku tako
što šalje više zraka iz te točke u različitim smjerovima i usrednjuje rezultate. Za svaku
točku mogu se koristiti 200 ili više zraka kako bi se izračunala ispravna razina
ambijentalnog osvjetljenja. Preciznost radiosity tehnike zahtjeva više vremena
potrebnog za izračun, stoga je korisno ju ugasiti dok gradimo scenu i upaliti kada
smo zadovoljni njezinim izgledom. U tom slučaju radiosity bloku dodajemo:
#declare Radiosity = off;
global_settings {
#if(Radiosity)
radiosity {
...
}
#end
}
Natrag na sadržaj
2.7.2. Difuzna refleksija
Kad se svjetlost reflektira sa površine objekta zakon refleksije nalaže da reflektirana
svjetlost napušta površinu pod istim kutom pod kojim je upala na nju. Takva savršena
33
refleksija naziva se spekularnom ili zrcalnom refleksijom. No samo vrlo glatke
ispolirane površine reflektiraju svjetlost na takav način. Ono što se najčešće događa
je da se svjetlost reflektira i raspršuje u svim smjerovima zbog nesavršenosti tj.
hrapavosti površine. To raspršenje se naziva se difuznom refleksijom jer se svjetlost
raspršuje i širi u raznim smjerovima. Difuzna refleksija doprinosi većini reflektirane
svjetlosti koju vidimo.
Ključna riječ diffuse se koristi za definiranje koliko je svjetlosti koja dolazi direktno iz
bilo kojeg izvora svjetlosti reflektirano preko difuzne refleksije. Na primjer:
finish { diffuse 0.6 }
znači da je 60% svjetlosti koju vidimo u određenoj točki površine objekta dolazi
direktno iz izvora svjetlosti.
Natrag na sadržaj
2.7.3. Područja naglašene osvjetljenosti
Područja naglašene osvjetljenosti su blještava mjesta koja se pojavljuju kada se izvor
svjetlosti reflektira sa glatkih površina objekata. Ona su mješavina spekularne i
difuzne refleksije. Kako bi se točno modelirala područja naglašenog osvjetljenja
trebalo bi se izračunati sve spekularne refleksije sa tisuću mikroskopskih izbočina/
nepravilnosti koja se nazivaju mikro plohama (eng. micro facets). Što je više mikro
ploha usmjereno prema promatraču to je objekt sjajniji i to su uža područja
naglašenog osvjetljenja. POV Ray koristi dva različita modela kojima simulira
područja naglašene osvjetljenosti bez računanja doprinosa mikro ploha. To su
spekularni i Phong modeli.
Natrag na sadržaj
2.7.3.1. Naredba phong
Ključnom riječi phong definiramo područja naglašene osvjetljenosti na objektu
dobivene Phong modelom 4. Njome stvaramo svijetla sjajna područja na površini
objekta koja su boje izvora koji se reflektira na površini objekta. Phong model
određuje prosječni broj mikro ploha koje su usmjerene tako da reflektiraju svjetlost
izvora u ravninu promatranja tj. u promatrača.
Vrijednosti phong naredbe se kreću u rasponu od 0 do 1, gdje 1 predstavlja situaciju
kada područja naglašene osvjetljenosti u svome središtu u potpunosti poprimaju boju
izvora svjetlosti. Standardno postavljena vrijednost je phong 0.0 i to je situacija kada
nema područja naglašene osvjetljenosti.
4
Wikipedia, Phong reflection model, http://en.wikipedia.org/wiki/Phong_reflection_model
34
Veličina područja naglašene osvjetljenosti definira se vrijednošću koja slijedi nakon
ključne riječi phong_size. Što ta vrijednost veća to je područje naglašene
osvjetljenosti zbijenije i sjajnije. Što je vrijednost manja to je područje naglašene
osvjetljenosti šire i manjeg sjaja.
Tipične vrijednosti se kreću u rasponu od 1 što predstavlja neizražajnu površinu do
250 što predstavlja visko poliranu površinu. Standardno postavljena vrijednost
veličine phong područja naglašene osvjetljenosti je 40 ukoliko eksplicitno ne
definiramo vrijednost phong_size. Vrijednost 40 stvara dojam kao da je objekt
načinjen od plastike.
finish { phong 0.9 phong_size 60 }
Ako ne definiramo naredbu phong naredba phong_size nema učinka.
Natrag na sadržaj
2.7.3.2. Naredba specular
Ključnom riječi specular definiramo područja naglašene osvjetljenosti slična Phong
područjima, no koristimo drugačiji model. Spekularni model više sliči pravoj
spekularnoj refleksiji i proizvodi preciznija područja naglašene osvjetljenosti.
Vrijednosti naredbe specular mogu biti u rasponu od 0 do 1, gdje 1 predstavlja
potpuno zasičenje područja naglašenog osvjetljenja bojom svjetlosnog izvora u
području gdje je ono najsjajnije tj. središtu. Postavljena vrijednost je specular 0.0 što
nam daje objekt bez područja naglašenosti.
Veličinu područja definiramo ključnom riječi roughness. Njezine vrijednosti se kreću
od 1.0 što predstavlja vrlo grubu površinu tj. veliko područje naglašenosti, do 0.0005
što odgovara vrlo glatkim površinama tj. malim područjima naglašenosti. Postavljena
vrijednost je 0.05 što odgovara plastičnim površinama.
finish { specular 0.9 roughness 0.02 }
Ako ne definiramo specular naredba roughness nema učinka.
Bitno je za naglasiti da naredbom specular ne definiramo spekulrne refleksije, već
samo područja naglašenog osvjetljenja.
Natrag na sadržaj
35
2.7.3.3. Modifikator područja naglašenog osvjetljenja metala
Ključnu riječ metallic možemo koristiti sa phong ili specular naredbom. Ona
naznačuje da će se boja područja naglašenog osvjetljenja računati po empirijskoj
funkciji koja simulira reflektivnost metalnih površina.
Područja naglašene osvjetljenosti posjeduju istu boju kao i izvor svjetlosti. Kada
definiramo modifikator metallic filtriramo područje naglašenog osvjetljenja tako da
bijela svjetlost reflektirana sa metalne površine poprima boju koji smo definirali u
pigmentu objekta.
Iza ključne riječi metallic možemo definirati brojčanu vrijednost kojom definiramo
jačinu efekta, no ona nije nužna.
finish {
phong 0.9
phong_size 60
metallic
}
Ako nisu definirane ključne riječi phong ili specular tada modifikator metallic nema
učinka.
Natrag na sadržaj
2.7.4. Spekularna refleksija
Spekularnom refleksijom nazivamo refleksiju pri kojoj se svjetlost ne raspršuje i gdje
se ona reflektira pod istim kutom pod kojim je upala na površinu objekta. Takve
zrcalne refleksije u POV Ray-u definiramo blokom koda reflection {} unutar
definicije finalne obrade objekta. Na primjer:
finish {reflection {1.0} ambient 0 diffuse 0}
nam daje objekt čija je površina poput zrcala. Ona reflektira sve elemente naše
scene. Nakon ključne riječi definirali smo iznos 1.0 koji POV Ray shvaća kao vektor
boje čije su sve komponente jednake 1.0. Vrijednost može varirati od 0 što znači da
nema refleksije, do 1 što znači da se na površini reflektira svo okruženje.
Dodavanje refleksije teksturi objekta usporava iscrtavanje naše virtualne scene jer se
prate dodatne zrake.
Natrag na sadržaj
36
2.7.4.1. Varijabilna refleksija
Mnogi materijali poput vode, keramike, linoleuma itd. reflektiraju više svjetlosti kad se
promatraju pod malim kutevima gledanja. Takvo ponašanje možemo simulirati
definiranjem minimalne refleksije u naredbi reflection {...}. Na primjer:
finish {
reflection {
0.0, 1.0
fresnel on
}
}
koristi istu funkciju kao i standardna refleksija, samo ovdje prvi parametar predstavlja
minimalnu reflektivnost. Ta minimalna vrijednost određuje koliko je reflektivna
površina kada je promatramo u smjeru paralelnom sa normalom površine objekta.
Drugi parametar predstavlja maksimalnu reflektivnost koja određuje koliko je
reflektivna površina kada je promatramo pod kutom od 90 stupnjeva obzirom na
normalu površine objekta.
Obje vrijednosti POV Ray shvaća kao vektor boje i on ne vodi računa o tome da li je
definirani iznos minimalne vrijednosti manji od definiranog iznosa maksimalne
vrijednosti refleksije. To može prouzročiti nerealne efekte i stoga trebamo paziti da
ispravno definiramo vrijednosti tih parametara.
Kada dodajemo ključnu riječ fresnel više se ne koristi funkcija standardne refleksije
već Fresnelova funkcija reflektivnosti. Naredba fresnel simulira fiziku refleksije i
refrakcije svjetlosti na prozirnim objektima ovisno o kutu upadne svjetlosti i indeksu
loma.Ona računa reflektivnost površine koristeći indeks loma (eng. index of refraction
(IOR)) površine objekta, tj. materijala od kojeg je načinjen objekt. Stoga sa
fresnelovom refleksijom moramo koristiti i naredbu interior { ior indeks_loma }
čak i kod neprozirnih objekata. U stvarnosti mnogi neprozirni objekti imaju tanki sloj
glazure na svojoj površini. Ta glazura je ta koja posjeduje indeks loma i reflektira
svjetlost.
Fresnelove jedndžbe 5 opisuju refleksiju i transmisiju elektromagnetskih valova na
granici dvaju sredstva. One nam daju koeficijente refleksije i transmisije za valove
paralelno i okomito polarizirane obzirom na upadnu ravninu. Fresnelove jednadžbe
za proizvoljni upadni kut na granicu dvaju sredstava dobivaju se iz Maxwellovih
jednadžbi i rubnih uvjeta. Rubne uvjete za EM val dobivamo pomoću Gaussovog
�⃗ ) i oni glase:
teorema (𝐸�⃗ ) i Stokesovog teorema (𝐵
5
𝑛�⃗12 × �𝐸�⃗2 − 𝐸�⃗1 � = 0
Rick Trebino, Fresnel's Equations for Reflection and Refraction,
http://www.teknik.uu.se/ftf/education/ftf2/Optics_FresnelsEqns.pdf
37
�⃗2 − 𝐵
�⃗1 � = 0
𝑛�⃗12 ∙ �𝐵
,gdje �𝒏⃗𝟏𝟐 predstavlja vektor okomice granice sredstava.
Okomita polarizacija EM vala:
Slika 15. Skica okomito polariziranog EM vala5
𝐸𝑖 (𝑥, 𝑦 = 0, 𝑧, 𝑡) + 𝐸𝑟 (𝑥, 𝑦 = 0, 𝑧, 𝑡) = 𝐸𝑡 (𝑥, 𝑦 = 0, 𝑧, 𝑡)
Ukupno električno polje u ravnini granice dvaju medija (tangencijalno električno polje)
je kontinuirano.
−𝐵𝑖 (𝑥, 𝑦 = 0, 𝑧, 𝑡) 𝑐𝑜𝑠 𝜃𝑖 + 𝐵𝑟 (𝑥, 𝑦 = 0, 𝑧, 𝑡) 𝑐𝑜𝑠 𝜃𝑟 = −𝐵𝑡 (𝑥, 𝑦 = 0, 𝑧, 𝑡) 𝑐𝑜𝑠 𝜃𝑡
Ukupno magnetsko polje u ravnini granice dvaju medija (tangencijalno magnetsko
polje) je kontinuirano.
Poništavanjem naglo promjenjivih dijelova svjetlosnog vala i zadržavanjem samo
kompleksnih amplituda dobivamo:
𝐸0𝑖 + 𝐸0𝑟 = 𝐸0𝑡
−𝐵0𝑖 𝑐𝑜𝑠 𝜃𝑖 + 𝐵0𝑟 𝑐𝑜𝑠 𝜃𝑟 = −𝐵0𝑡 𝑐𝑜𝑠 𝜃𝑡
Kako je 𝐵 = 𝐸/(𝑐0 /𝑛) = 𝑛𝐸/𝑐0 i 𝜃𝑟 = 𝜃𝑖 imamo:
𝑛𝑖 (𝐸0𝑟 − 𝐸0𝑖 ) cos 𝜃𝑖 = −𝑛𝑡 𝐸0𝑡 cos 𝜃𝑡
I uvrštavanjem 𝐸0𝑡 = 𝐸0𝑖 + 𝐸0𝑟 dobivamo:
𝑛𝑖 (𝐸0𝑟 − 𝐸0𝑖 ) cos 𝜃𝑖 = −𝑛𝑡 (𝐸0𝑖 + 𝐸0𝑟 ) cos 𝜃𝑡
Kada to sredimo i riješimo za 𝐸0𝑟 /𝐸0𝑖 dobivamo koeficijent refleksije:
𝑟⊥ =
𝐸0𝑟 𝑛𝑖 𝑐𝑜𝑠 𝜃𝑖 − 𝑛𝑡 𝑐𝑜𝑠 𝜃𝑡
=
𝐸0𝑖 𝑛𝑖 𝑐𝑜𝑠 𝜃𝑖 + 𝑛𝑡 𝑐𝑜𝑠 𝜃𝑡
38
Analogno napravimo i za koeficijent transmisije 𝐸0𝑡 /𝐸0𝑖 i dobivamo:
𝑡⊥ =
𝐸0𝑡
2𝑛𝑖 𝑐𝑜𝑠 𝜃𝑖
=
𝐸0𝑖 𝑛𝑖 𝑐𝑜𝑠 𝜃𝑖 + 𝑛𝑡 𝑐𝑜𝑠 𝜃𝑡
Jednadžbe za 𝑟⊥ i 𝑡⊥ predstavljaju Fresnelove jednadžbe za okomito polarizitanu
svjetlost.
U slučaju paralelno polarizirane svjetlosti imamo:
Slika 16. Skica paralelno polariziranog EM vala5
𝐵0𝑖 − 𝐵0𝑟 = 𝐵0𝑡
𝐸0𝑖 𝑐𝑜𝑠 𝜃𝑖 + 𝐸0𝑟 𝑐𝑜𝑠 𝜃𝑟 = 𝐸0𝑡 𝑐𝑜𝑠 𝜃𝑡
Rješavanjem za 𝐸0𝑟 /𝐸0𝑖 dobivamo koeficijent refleksije 𝑟|| :
𝑟|| =
𝐸0𝑟 𝑛𝑖 𝑐𝑜𝑠 𝜃𝑡 − 𝑛𝑡 𝑐𝑜𝑠 𝜃𝑖
=
𝐸0𝑖 𝑛𝑖 𝑐𝑜𝑠 𝜃𝑡 + 𝑛𝑡 𝑐𝑜𝑠 𝜃𝑖
𝑡|| =
𝐸0𝑡
2𝑛𝑖 𝑐𝑜𝑠 𝜃𝑖
=
𝐸0𝑖 𝑛𝑖 𝑐𝑜𝑠 𝜃𝑡 + 𝑛𝑡 𝑐𝑜𝑠 𝜃𝑖
Analogno koeficijent transmisije 𝑡|| = 𝐸0𝑡 /𝐸0𝑖 i dobivamo:
I te jednadžbe predstavljaju Fresnelove jednadžbe za paralelno polariziranu svjetlost.
Iz ovih jednadžbi vidimo da koeficijenti refleksije (odnosno refleksija) ovise u
upadnom kutu svjetlosti i o indeksima loma.
Natrag na sadržaj
39
2.7.5. Očuvanje energije pri refleksiji
Kada u POV Ray-u koristimo varijabilnu refleksiju uključujući fresnelovu refleksiju na
prozirnim površinama objekata njihove teksture mogu izgledaju nerealno. To je
rezultat nepoštivanja zakona očuvanja energije unutar virtualnog prostora. Kako se
korištenjem varijabilne refleksije količina reflektirane svjetlosti mijenja ovisno o kutu
promatranja, količina propuštene svjetlosti se stoga također mora mijenjati. Koliko se
jedna vrijednost smanji druga se mora povećati i obrnuto.
To postižemo tako da dodajemo ključnu riječ conserve_energy unutar bloka koda
finish {}. Kada smo uključili zakon očuvanja energije POV Ray će množiti iznos
filtrirane i propuštene svjetlosti s iznosom koji je ostao nakon refleksije npr. ako
površina reflektira 80% upadne svjetlosti, iznos filtrirane/ propuštene svjetlosti će biti
pomnožen sa 20%.
Natrag na sadržaj
2.8. Naredba interior
Naredba interior sadrži sve postavke koje opisuju svojstva unutrašnjosti objekta.
Ona je komplementarna naredbi texture koja opisuje svojstva površine objekta.
Definiranje svojstava interijera je od važnosti samo kod objekata koji posjeduju
prozirnu teksturu koja nam dopušta da vidimo njegovu unutrašnjost. Naredbu
interior primjenjujemo samo na čvrstim tijelima koja imaju dobro definiranu i
određenu unutrašnjost i vanjštinu.
POV Ray računa refrakciju samo kad zraka ulazi ili izlazi iz objekta, te objekte dijeli
na krute, šuplje i objekte ispunjene česticama.
Kruti objekt napravljen je od materijala kojeg definiramo njegovim pigmentom i
završnom obradom. Po standardnim postavkama POV Ray-a svi objekti spadaju u
krute. Ako nekom objektu dodijelimo teksturu drveta dobiti ćemo objekt koji je u
potpunosti načinjen od drveta kao da smo ga izrezali iz nekog velikog komada
drveta. Ako pak objektu dodijelimo teksturu stakla dobiti ćemo stakleni objekt itd. No
važno je napomenuti da je kruti objekt samo koncept jer ako izrežemo dio objekta
vidjeti ćemo da je njegova unutrašnjost prazna i da ima vrlo tanku površinu.
Isti takav koncept koristi i POV Ray koji pretpostavlja da je prostor unutar objekta
opisan njegovom unutrašnjošću kojeg definiramo naredbom interior. Na svjetlost
koja prolazi kroz takav objekt utječu svojstva refrakcije i atenuacije objekta. U takvim
krutim objektima nema mjesta za ikakve čestice koje možemo definirati maglom ili
unutrašnjim medijem.
Šuplje objekte definiramo dodavanjem ključne riječi hollow unutar bloka koda kojim
definiramo objekt. Šuplji ili prazni objekt se smatra načinjenim od vrlo tanke površine
40
materijala kojeg smo definirali sa pigmentom i završnom obradom objekta. Njegova
unutrašnjost je prazna, kao da je ispunjen molekulama zraka.
Šuplji objekt možemo ispuniti česticama tako da definiramo maglu ili atmosferski
medij u našoj sceni ili da objektu dodijelimo unutrašnji medij. No da bismo neki objekt
ispunili bilo kakvom vrstom čestica prvo ga moramo učiniti šupljim tj. praznim.
Natrag na sadržaj
2.8.1. Refrakcija svjetlosti
Kada svjetlost prelazi iz optički rjeđeg u optički gušće sredstvo i obrnuto ona se lomi
na granici tih sredstava.Ta pojava naziva se refrakcija. Pri refrakciji putanje zraka
svjetlosti se mijenjaju ovisno o gustoći materijala kroz koji svjetlost prolazi. Zrak,
voda, dijamant, itd. imaju različite gustoće i stoga različito refraktiraju svjetlost. Koliko
neki materijal refraktira svjetlost opisujemo indeksom loma (eng. ior). U POV Ray-u
ključnu riječ ior koristimo unutar naredbe interior kako bi uključili refrakciju
svjetlosti i definirali indeks loma. Na primjer:
object { Moj_objekt pigment {Clear} interior {ior 1.5} }
Standardno postavljena vrijednost indeksa loma je 1 i ona na ne daje refrakciju
svjetlosti. Ta vrijednost predstavlja indeks loma zraka, indeks loma vode je 1.33,
stakla 1.4 i dijamanta 2.4.
Po standardnim postavkama prozirne i poluprozirne površine u POV Ray-u ne
refraktiraju svjetlost. Definiranje vrijednosti indeksa loma različitog od jedan uključuje
refrakciju.
Važno je naglasiti da ključnim riječima ior ili refraction nećemo objekt učiniti
prozirnim. Prozirnost objekta dobiva se samo ako se definira vrijednost filter ili
transmit različita od nule unutar definicije boje objekta tj. unutar definicije njegove
površine.
Natrag na sadržaj
2.8.2. Disperzija svjetlosti
Za materijale čiji je indeks loma različit od 1 (zrak) indeks loma nije jednak za cijeli
spektar svjetlosti. Znamo da je bijela svjetlost sastavljena je od kontinuiranog niza
svih boja vidljivog spektra. Efekt disperzije vidljiv je u dugama kao i prizmama gdje se
vidi ovisnost refrakcije svjetlosti o njezinoj boji tj. valnoj duljini.
41
Disperzija je pojava u kojoj fazna brzina vala ovisi o njegovoj frekvenciji tj. valovi
različitih valnih duljina putuju različitim faznim brzinama. Fazna brzina vala u
uniformnom sredstvu dana je sa:
𝑣=
𝑐
𝑛
gdje je c brzina svjetlosti u vakuumu i n je indeks refrakcije sredstva.
Indeks refrakcije je funkcija frekvencije svjetlosti f, stoga je n = n(f), ili ako ga želimo
izraziti preko valne duljine n = n(λ). Ovisnost indeksa refrakcije materijala o valnoj
duljini dan je empirijskom formulom:
𝑛(𝜆) = 𝐴 +
koja predstavlja Cauchyjevu jednadžbu.
𝐵
𝐶
+
+⋯
𝜆2 𝜆4
Najčešće viđena posljedica disperzije u optici je razlaganje bijele svjetlosti na prizmi
u spektar boja. Iz Snellovog zakona je vidljivo da kut refrakcije svjetlosti u prizmi ovisi
o indeksu refrakcije materijala od kojeg je prizma napravljena. Kako indeks refrakcije
ovisi o valnoj duljini slijedi da kut refraktirane svjetlosti također ovisi o valnoj duljini.
To za posljedicu ima kutno razlaganje svjetlosti na prizmi.
Za vidljivu svjetlost indeksi refrakcije za većinu prozirnih materija kao zrak, stakla, itd.
opada sa povećanjem valne duljine:
1 < 𝑛(𝜆𝑐𝑟𝑣𝑒𝑛𝑎 ) < 𝑛(𝜆ž𝑢𝑡𝑎 ) < 𝑛(𝜆𝑝𝑙𝑎𝑣𝑎 )
Na granici sredstava između prozirnih materijala sa zrakom ili vakuumom (čiji su
indeksi refrakcije ~ 1) Snellov zakon predviđa de će se upadna svjetlost koja upada
pod kutem θ obzirom na normalu granice medija biti refraktirana pod kutom
arcsin(sin(θ)/n). Stoga plava svjetlost, sa većim indeksom refrakcije, biti refraktirana
pod većim kutom nego crvena svjetlost.
Po standardnim postavkama POV Ray ne računa disperziju prilikom prolaska
svjetlosti kroz proziran objekt. Ako želimo dobiti realističan efekt razlaganja svjetlosti
dodajemo ključne riječi dispersion i dispersion_samples unutar bloka koda
interior{}.
Vrijednost naredbe dispersion je omjer indeksa loma ljubičaste i crvene svjetlosti tj.
frekvencija s rubova spektra vidljive svjetlosti. Njome kontroliramo jačinu disperzije tj.
koliko će boje biti raširene. Ako je njezina vrijednost jednaka 1 tada nema disperzije,
a ukoliko želimo da je bude koristimo vrijednosti od 1.01 do 1.1. Važno je naglasiti da
ukoliko ne definiramo ključnu riječ ior neće doći do pojave disperzije svjetlosti na
nekom objektu.
42
POV Ray pri praćenju zraka ne koristi valne duljine svjetlosti, već samo simulira
spektar. Vrijednošću naredbe dispersion_samples određujemo koliko će boja imati
spektar i koliko gladak će biti njihov prijelaz. Standardno postavljena vrijednost je 7, a
najmanja moguća vrijednost je 2. Ako želimo dobiti dobre glatke rezultate disperzije
trebamo koristiti vrijednosti od 100 pa na više.
Natrag na sadržaj
2.8.3. Slabljenje svjetlosti
Pojavu smanjenja intenziteta svjetlosti prilikom prolaska kroz neko sredstvo tj.
prozirni objekt nazivamo slabljenjem (atenuacijom) svjetlosti. Kako bi ju simulirali u
POV Ray-u koristimo ključne riječi fade_power, fade_distance i fade_color koje
definiramo unutar bloka koda interior{...}.
Iznos naredbe fade_distance određuje udaljenost koju svjetlost mora proći kako bi
se njezin intenzitet smanjio upola. Iznos naredbe fade_power određuje kako brzo će
opadati intenzitet svjetlosti. Naredbom fade_color bojamo slabljenje svjetlosti. Ako
želimo dobiti realistične efekte koristimo vrijednost fade_power 2 jer intenzitet
svjetlosti opada s drugom potencijom udaljenosti. Standardno postavljena vrijednost
za naredbe fade_power i fade_distance je 0 i to predstavlja situaciju kad nema
slabljenja svjetlosti. Standardno postavljena vrijednost za naredbu fade_color je
<0,0,0>, a ako ju postavimo na <1,1,1> tada nema slabljenja svjetlosti. Ako
definiramo neku boju kao npr. <1,0,0> tada dobivamo crveno slabljenje svjetlosti.
Slabljenje svjetlosti se računa po formuli koja je slična formuli za slabljenje svjetlosti
svjetlosnog izvora:
𝑠𝑙𝑎𝑏𝑙𝑗𝑒𝑛𝑗𝑒 =
1+�
1
𝑓𝑎𝑑𝑒_𝑝𝑜𝑤𝑒𝑟
𝑑
�
𝑓𝑎𝑑𝑒_𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑒
Ako vrijednost naredbe fade_power postavimo na 1000 ili više tada se koristi
eksponencijalna funkcija slabljenja svjetlosti:
𝑠𝑙𝑎𝑏𝑙𝑗𝑒𝑛𝑗𝑒 = 𝑒
−𝑑𝑒𝑝𝑡ℎ
�𝑓𝑎𝑑𝑒_𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑒�
43
Natrag na sadržaj
3. Iscrtavanje scene
Iscrtavanje 6 (eng.rendering) je proces generiranja foto-realistične virtualne slike
modela pomoću računala. Modeli koji se koriste jednoznačno se nazivaju datotekom
scene. Ona sadrži objekte strogo definirane strukture koji su definirani nekim od
programskih jezika. U njoj se nalaze sve informacije o geometriji, točki gledišta,
teksturama, osvjetljenju, sjenčanju, ukratko cjelokupni opis naše virtualne scene.
Podaci koje sadrži datoteka scene šalju se programu za iscrtavanje (rendereru) da ih
obradi i nakon toga spremi kao digitalnu slikovnu datoteku.
Proces iscrtavanja 7 sastoji se od primjene mnogih metoda iscrtavanja. U
kompjutorskoj grafici želi se prikazati izgled 3D scene gledajući kroz virtualnu
kameru. Metoda za računanje slike koju takva virtualna kamera stvara naziva se
metodom iscrtavanja. Tehnički detalji pripreme mogu varirati, no krajni ishod je dobiti
realnu 2D sliku danog 3D prikaza tj. scene.
Razvoj tih metoda započeo je 70-ih godina 20. stoljeća kako bi se računalno mogle
generirati foto-realistične slike. Metode iscrtavanja se dijele na metode lokalnog
osvjetljenja (eng. local illumination) i metode globalnog osvjetljenja (eng. global
illumination). Metode lokalnog osvjetljenja uzimaju u obzir samo svjetlo koje dolazi
direktno iz izvora svjetlosti, tj. samo direktno osvjetljenje. Za razliku od njih metode
globalnog osvjetljenja kako im samo ime govori, uzimaju u obzir svu svjetlost, i
direktno osvjetljenje i indirektno osvjetljenje kao na primjer svjetlost koja se reflektira
od drugih objekata.
Metodama iscrtavanja generiramo mnoge fizičke pojave koje iscrtanoj slici daju fotorealističnost. Te metode su i razvijane sa svrhom da bi se mogle stvoriti slike koje će
biti fizički točne i da ih neće biti moguće razlikovati od fotografija. Slika iscrtana tim
metodama će posjedovati vizualne efekte koje možemo vidjeti u stvarnom svijetu. To
su na primjer način na koji se mijenja boja objekta ovisno o osvjetljenju, posjedovanje
tekstura, nepravilnosti površine tijela, širenje svjetlosti kroz različite medije, magla,
dim, stvaranje područja penumbre, refleksije, refrakcije, prozirnost objekata, difrakcija
svjetlosti, indirektno osvjetljenje, zračenje užarenih tijela, kaustike, mutnost objekata
koji su izvan fokusa ili u gibanju i još mnogi drugi.
Natrag na sadržaj
3.1. Metoda praćenja zraka
U prirodi 8 svjetlosni izvor emitira zrake svjetlosti koje putuju prostorom i nailaze na
objekte koje im se nađu na putu. Zraku svjetlosti zamišljamo kao roj fotona koji putuju
6
Wikipedia, Rendering, http://en.wikipedia.org/wiki/Rendering_%28computer_graphics%29
A. J. van der Ploeg, Interactive Ray Tracing, http://www.few.vu.nl/~kielmann/theses/avdploeg.pdf
8
Wikipedia, Ray tracing, http://en.wikipedia.org/wiki/Ray_tracing_%28graphics%29
7
44
duž iste linije. U savršenom vakuumu zrake svjetlosti su savršeno ravne linije. U
stvarnosti kada zraka svjetlosti naiđe na objekt moguća su četiri ishoda: apsorpcija,
refleksija, refrakcija ili fluorescencija svjetlosne zrake.
Površina objekta može reflektirati svu ili samo dio svjetlosti u jednom ili više
smjerova. Može također apsorbirati dio svjetlosti što će rezultirati smanjenjem
intenziteta reflektirane i/ili refraktirane svjetlosti. Ako je površina prozirna ili
djelomično prozirna, prepreka refraktira dio svjetlosti u sebe u različitim smjerovima i
pritom apsorbira dio ili cijeli spektar što može rezultirati promjenom boje objekta.
Najrjeđe se dešava pojava fluorescencije, tj. pojava kada objekt apsorbira dio
svjetlosti i reemitira ga kao svjetlost druge valne duljine. Kako je takva pojava rijetka
ona se često ne uzima u obzir kod većine programa za iscrtavanje.
Između refleksije, refrakcije, apsorpcije i fluorescencije uzima se u obzir ni manje ni
više od ukupne upadne svjetlosti. Na primjer tijelo ne može reflektirati 80% i
refraktirati 60% upadne svjetlosti, jer bi to tada bilo 40% više svjetlosti nego što je
došlo na tijelo. Uzimajući to u obzir, reflektirane i/ili refraktirane zrake svjetlosti mogu
doprijeti do površina drugih tijela gdje doprinose utjecaju upadne svjetlosti i ovisno o
njihovim svojstva refleksije, apsorpcije, refrakcije i fluorescencije također utječu na
daljnje širenje svjetlosnih zraka. Neke od tih zraka dođu do našeg oka omogućujući
nam da vidimo scenu, te samim time one doprinose konačnoj iscrtanoj slici.
Prisjetimo se Empedoklove teorije svjetlosti i vida iz 5. st. pr. Kr. Njegova teorija se
zasnivala na ideji da vidimo uz pomoć zraka koje izlaze iz naših očiju. Ta teorija je
odbačena i dobro je poznato da to nije način kako se svjetlost širi prostorom niti način
na koji vidimo objekte. Ono što se događa jest da se svjetlost emitirana iz izvora širi
prostorom i prilikom međudjelovanja sa objektima reflektira se u svim smjerovima.
Dio reflektirane svjetlosti sa objekta koji ulazi u naše oko stvara njegovu sliku. Ako
govorimo u terminima svjetlosnih zraka to znači da se zrake svjetlosti koje dođu iz
izvora svjetlosti u neku točku objekta difuzno reflektiraju u svim smjerovima, a
konstrukciji slike koju vidimo doprinose samo zrake koje upadaju u naše oko i
fokusiraju se na mrežnici našeg oka kreirajući sliku objekta.
Korištenje oka promatrača (kamere) kao izvora zraka ne predstavlja pokušaj
oživljavanja odbačene Empedoklove ideje već samo upotrebu jedne vrlo korisne
konstrukcije. Kako svaka točka objekta reflektira grupu zraka u svim smjerovima
prostora, zamršenu situaciju praćenja svih tih zraka možemo izbjeći tako da pratimo
samo zrake koje doprinose formaciji slike, tj. zrake koje dopiru do oka. Njih možemo
promatrati kao grupu zraka koje su emitirane iz oka i stoga ih pratimo u suprotnom
smjeru od stvarnog smjera širenja svjetlosnih zraka.
Metoda praćenja zraka1 (eng. ray tracing) je metoda ili tehnika iscrtavanja koja
izračunava prikaz slike virtualne scene simulirajući širenje svjetlosnih zraka kao u
45
stvarnosti. No ona to radi unatraške. U stvarnom svijetu izvor svjetlosti emitira zrake
svjetlosti koje tada osvjetljavaju objekte. Svjetlost se reflektira na objektima ili prolazi
kroz transparentne objekte. Reflektirano svjetlo dolazi do našeg oka ili do leće
kamere. Kako većina svjetlosnih zraka nikad ne dođe do promatrača, trebalo bi
beskonačno mnogo vremena da iscrtamo scenu.
Slika 17. Način rada metode praćenja zraka8
Za svaki piksel u našoj finalnoj slici šalje se jedna ili više „zraka gledanja“ iz kamere u
scenu kako bi se vidjelo da li se ona siječe sa nekim od objekata u sceni. Te „zrake
gledanja“ dolaze od promatrača kojeg predstavlja kamera i prolaze kroz ravninu
gledanja koju predstavlja naša finalna slika.
Svaki put kada zraka gledanja pogodi objekt izračunava se boja površine objekta u
toj točki. U svrhu određivanja boje šalju se zrake prema svakom izvoru svjetlosti kako
bi se odredio iznos svjetlosti koji dolazi iz izvora tj. direktno osvjetljenje. Te zrake
nazivaju se „zrakama sjene“ i njima se provjerava da li točka površine objekta leži u
sjeni ili ne. Ako je površina reflektivna ili prozirna, šalju se nove zrake kako bi
odredile doprinos reflektirane i refraktirane svjetlosti ukupnoj boji površine objekta.
Natrag na sadržaj
3.2. Metoda mapiranja fotona
Metoda mapiranja fotona 9 (eng. photon mapping) predstavlja metodu iscrtavanja
globalne iluminacije koja se sastoji od dva koraka. Prvi korak je praćenje fotona koji
se sastoji od tri djela. Prvo se emitiraju fotoni iz izvora, nakon toga se oni prate, jer se
oni raspršuju na objektima naše scene. I zadnji dio prve faze predstavlja
pohranjivanje informacije o fotonima pri svakom sudaru sa objektom u mapu fotona.
Pri prvom udaru fotona u objekt intenzitet sudara je najveći, nakon toga se bira samo
jedan smjer refleksije fotona koji onda udara u drugi objekt manjim intenzitetom, itd.
9
Andries van Dam, Realism in Computer Graphics,
http://www.cs.brown.edu/courses/csci1230/lectures/realism.pdf
46
Druga faza je praćenje zraka, gdje se pri svakom sjecanju zrake sa objektom
sakupljaju informacije o najbližim fotonima u okolici točke sjecišta kako bi se
izračunalo osvjetljenje. Sve informacije o fotonima se nalaze u prethodno spremljenoj
mapi fotona.
Slika 18. Metoda mapiranja fotona9
Natrag na sadržaj
3.2.1. Prvi korak - praćenje fotona
Praćenje fotona 10 je proces koji se sastoji od emitiranja fotona iz izvora svjetlosti i
njihovo praćenje kroz scenu. Cilj tog koraka je kreiranje mape fotona koje se koristi u
koraku iscrtavanja za izračun ukupnog indirektnog osvjetljenja.
Natrag na sadržaj
3.2.1.1. Emisija fotona
Putanja fotona počinje u svjetlosnom izvoru. Za svaki svjetlosni izvor 11 koji smo
definirali u našoj sceni kreira se roj fotona koji međusobno dijele ukupnu snagu
izvora. Ako snaga izvora iznosi Psvjetlo i ako je broj emitiranih fotona jednak nfotona ,
tada snaga svakog emitiranog fotona iznosi:
𝑃𝑓𝑜𝑡𝑜𝑛 = 𝑃𝑠𝑣𝑗𝑒𝑡𝑙𝑜 /𝑛𝑓𝑜𝑡𝑜𝑛𝑎
Ovisno o vrsti izvora svjetla koriste se različiti modeli emisije fotona. Kod točkastih
izvora svjetlosti fotoni se emitiraju uniformno u svim smjerovima. Kod površinskog
10
Zack Waters, Photon Mapping,
http://web.cs.wpi.edu/~emmanuel/courses/cs563/write_ups/zackw/photon_mapping/PhotonMapping.ht
ml
11
Henrik Wann Jensen, A practical guide to global illumination using ray tracing and photon mapping,
2004, ACM SIGGRAPH 2004 Course Notes (SIGGRAPH '04), Article 20
47
izvora svjetlosti uzima se nasumična pozicija na površini izvora, te se tada
nasumično određuje smjer kuda će se foton emitirati. Smjer fotona ograničen je
hemisferom koja je određena normalom površine svjetla. Najveća je vjerojatnost da
će foton biti emitiran u smjeru okomitom na ravninu površine, a za smjer paralelan sa
ravninom vjerojatnost iznosi nula.
Ako scena sadrži više izvora svjetlosti, fotoni se emitiraju iz svakog izvora. Sjajniji
izvori emitiraju više fotona od prigušenih izvora. Česta kriva predodžba je da scena
sa više izvora svjetlosti zahtijeva mnogo više emitiranih fotona nego scena sa samo
jednim izvorom. Kada imamo više izvora svjetlosti svaki izvor manje doprinosi
ukupnom osvjetljenju i stoga se emitira manji broj fotona sa svakog izvora.
Slika 19. Emisija fotona iz izvora svjetlosti10
Natrag na sadržaj
3.2.1.2. Raspršenje fotona
Emitirani fotoni iz izvora svjetlosti raspršuju se kroz scenu i na kraju su apsorbirani ili
izgubljeni. Oni se prate u suprotnom smjeru od metode praćenja svjetlosnih zraka, tj.
oni se prate u smjeru kojim se svjetlost širi u stvarnosti. Kad foton udari u površinu
objekta određuje se koliko je njegove energije apsorbirano, reflektirano i refraktirano
ovisno o površinskim svojstvima objekta.
Za određivanje vrste interakcije fotona sa površinom koristi se Monte Carlo tehnika.
Bacanjem kocke i odlučujemo hoće li foton opstati i da li će se izvršiti sljedeći korak
praćenja fotona. Uzmimo za primjer monokromatski slučaj. Za reflektivnu površinu sa
koeficijentom difuzne refleksije d i koeficijentom spekularne refleksije s (sa time da d
+ s ≤ 1) koristimo nasumično odabranu varijablu ξ ∈ [0,1] i donosimo sljedeću
odluku:
ξ ∈ [0,d] → difuzna refleksija
ξ ∈ [d,s+d] → spekularna refleksija
ξ ∈ [s+d,1] → apsorpcija
48
Bitno je naglasiti da Monte Carlo tehnika ne mijenja snagu reflektiranog fotona. To
možda na prvi pogled predstavlja problem, no točnost ukupnog rezultata konvergira
sa većim brojem uzorka, tj. emitiranih fotona. Uzmimo za primjer površinu koja
reflektira 50% upadnog svjetla. Monte Carlo tehnikom će samo polovica upadnih
fotona biti reflektirana sa maksimalnom energijom, dok će druga polovica fotona biti
apsorbirana. Ako ispaljujemo 1000 fotona na površinu, možemo reflektirati 1000
fotona sa upola manjom energijom ili 500 fotona sa maksimalnom energijom. Vidimo
da je Monte Carlo moćna tehnika koja smanjuje računalne zahtjeve kao i zahtjeve
pohrane podataka davajući pritom točan rezultat.
Natrag na sadržaj
3.2.1.3. Pohranjivanje fotona
Zadnji dio prve faze je pohranjivanje fotona. U scenu možemo ispaljivati milijune
fotona iz svjetlosnih izvora. Foton je pohranjen kada udari u difuznu površinu. Za
površine koje totalno reflektiraju fotone se ne pohranjuju informacije jer nam one ne
daju nikakvu korisnu informaciju. Za iscrtavanje (renderiranje) totalnih refleksija
koristi se standardno praćenje zraka. Za sve ostale interakcije fotona i površine
podaci se pohranjuju u globalnu strukturu podataka koja se naziva mapa fotona.
Važno je napomenuti da svaki emitirani foton može biti pohranjen više puta duž svoje
putanje. Informacija o fotonu je pohranjena na površini objekta gdje je apsorbiran
ukoliko je ta površina difuzna. Za svaku interakciju fotona sa površinom u mapu se
pohranjuje položaj, snaga upadnog fotona i njegov upadni kut. Kako bi informacije o
interakcijama fotona bile što efikasnije one se često pohranjuju u više različitih mapa
fotona.
U mapu kaustičkih fotona pohranjuju se fotoni koji generiraju kaustike, tj. fotoni koji
su prošli najmanje jednu totalnu refleksiju prije nego što su došli do difuzne površine.
Mapa globalnih fotona sadrži informacije fotona zaslužnih za globalno osvjetljenje
scene na svim difuznim površinama objekata. Treća mapa je mapa volumnih fotona
koja sadrži informacije o indirektnom osvjetljenju medija koji sudjeluju u sceni. Ona
se kreira samo ako u našoj sceni postoji medij kao npr. magla. Isto kako fotoni mogu
biti emitirani iz površine ili točke oni mogu biti emitirani iz nekog volumena.
Na primjer plamen svijeće se simulira na način da emitiramo fotone iz volumena u
obliku plamena svijeće. Kad fotoni prolaze nekim medijem oni se mogu raspršiti u
njemu ili biti apsorbirani. Ishod ovisi o gustoći medija. Na položajima gdje se događa
raspršenje fotona u mediju spremaju se informacije u mapu volumnih fotona.
Za konstrukciju mapa fotona koriste se dva odvojena procesa praćenja fotona. Jedan
se koristi za konstrukciju mape kaustičkih fotona, jer je za konstrukciju kaustika
potreban veći broj fotona nego za konstrukciju mapa globalnih i volumnih fotona.
Drugi proces praćenja fotona se koristi za kreiranje mape globalnih fotona koja
49
uključuje i mapu volumnih fotona. Fotoni se generiraju samo za vrijeme koraka
praćenja fotona, dok se u drugom koraku, koraku iscrtavanja, koristi mapa fotona
kako bi se izračunalo svo indirektno osvjetljenje. Zbog toga je potrebno pripremiti
mapu fotona za korak iscrtavanja. Pri iscrtavanju potrebno je locirati najbliže fotone u
mapi. Kako se ta operacija često ponavlja u koraku iscrtavanja, prezentacija mape
fotona se optimizira prije nego počinje drugi korak. Na taj način se ubrzava operacija
pronalaženja najbližih fotona u koraku iscrtavanja. Kada je mapa fotona optimizirana
ona se sprema u radnu memoriju računala za kasnije korištenje.
Natrag na sadržaj
3.2.2. Drugi korak - iscrtavanje
Nakon što je kreirana mapa fotona kreće drugi korak metode mapiranja fotona –
iscrtavanje. Finalna slika se kreira korištenjem metode praćenja zraka. Prate se
zrake svjetlosti iz oka promatrača kroz svaki piksel slike u scenu. Kad ta zraka dođe
do prve točke sjecišta sa površinom objekta računa se iznos količine svjetlosti koja
dolazi iz te točke duž smjera zrake. Količina svjetlosti koja dolazi iz točke sjecišta
jednaka je ukupnoj izlaznoj svjetlosti u toj točki. Izlazna svjetlost Lo u toj točki jednaka
je zbroju emitirane svjetlosti Le i reflektirane svjetlosti Lr.
𝐿𝑜 = 𝐿𝑒 + 𝐿𝑟
Le je emitirana svjetlost sa površine objekta i ona se uzima direktno iz definicije
površine objekta. Reflektirana svjetlost Lr ovisi o količini svjetlosti u ostatku scene i
ona je jednaka ukupnoj svjetlosti koja dolazi u tu točku. Reflektirana svjetlost Lr je
stoga jednaka zbroju:
𝐿𝑟 = 𝐿𝑑 + 𝐿𝑠 + 𝐿𝑐 + 𝐿𝑖
Ld = direktna svjetlost koja dolazi iz izvora svjetlosti
Ls = indirektna svjetlost koja dolazi preko totalnih refleksija
Lc = kaustike tj. indirektna svjetlost iz izvora svjetlosti koja dolazi preko spekularnih
refleksija i transmisije
Li = indirektna svjetlost koja je bila difuzno reflektirana barem jednom
Gore navedena jednadžba predstavlja jednadžbu iscrtavanja i ona se računa svaki
put kada je potrebno odrediti iznos reflektirane svjetlosti sa površine objekta.
Ld predstavlja direktnu svjetlost koja dolazi iz izvora svjetlosti. Ona se računa slanjem
zrake sjene iz točke sjecišta prema svim izvorima svjetlosti kako bi se provjerila
vidljivost, tj. da li neki drugi objekt zaklanja izvor svjetlosti. Način računanja direktnog
osvjetljenja se razlikuje ovisno treba li nam točno ili aproksimativno rješenje.
50
Pri računanju doprinosa direktnog osvjetljenja koristimo opservaciju da su veće
površine ili potpuno osvjetljene ili su u sjeni. Za identifikaciju tih površina koristimo
informacije iz globalne mape fotona kako bismo izbjegli korištenje zraka sjene. Zrake
sjene samo koristimo u situacijama gdje se najbliži fotoni u globalnoj mapi sastoje od
mješavine fotona direktnog osvjetljenja i fotona sjene ili ako broj lociranih fotona
osvjetljenja i sjene u mapi nije dovoljno velik.
Ls predstavlja svjetlost koja je potpuno reflektirana sa površina objekata. Ona se
izračunava praćenjem zraka pošto ta metoda vrlo dobro rješava slučajeve refleksija.
Lc predstavlja kaustike koje vidimo na difuznim i djelomično sjajnim površinama
objekata. Postupak računanja doprinosa kaustika ovisi da li nam je potreban točan ili
aproksimativan rezultat. Iznos doprinosa kaustika računa se korištenjem informacija
iz mape fotona kaustika. Kako se doprinos kaustika računa direktno iz mape fotona
kaustika iz tog razloga broj fotona u mapi mora biti velik kako bi dobili precizni prikaz
kaustika na ekranu. Aproksimativan iznos doprinosa kaustika se pak računa iz mape
globalnih fotona gdje je broj fotona puno manji od broja fotona u mapi fotona
kaustike.
Li predstavlja upadnu svjetlost koja je bila difuzno reflektirana barem jednom od kako
je napustila izvor svjetlosti. Kako je ona još difuzno reflektirana i na površini objekta u
kojoj računamo njezin doprinos, njezin utjecaj je malen.
Slika 20. Primjer foto-realistične slike kreirane metodom mapiranja fotona u jednom od
programskih paketa za iscrtavanje
51
Bitno je naglasiti da je metoda mapiranja fotona neovisna o točki gledanja. Jednom
kad su kreirane mape fotona one sadrže sve potrebne informacije o osvjetljenju naše
scene. Mi pritom možemo mijenjati položaj kamere i to neće mjenjati izgled mape
fotona. Bez obzira gdje se naša kamera nalazi koriste se iste mape fotona za izračun
ukupne svjetlosti u danoj točki. To vrijedi sve dok ne promijenimo vrstu ili parametre
izvora svjetlosti, geometriju objekata ili materijale od kojih su objekti napravljeni. Tada
se mora ponovno računati mapa fotona kako bi dobili realistične rezultate.
Natrag na sadržaj
3.3. Metoda mapiranja fotona i POV Ray
Kao i mnogi drugi programi za iscrtavanje, POV Ray također podržava metodu
mapiranja fotona. Glavni cilj implementacije mape fotona je iscrtavanje realističnih
kaustika u refleksiji i refrakciji.
Kod mapiranja fotona POV Ray ispaljuje paketiće svjetlosti, tj fotone iz svjetlosnog
izvora u scenu. Fotoni su usmjereni prema određenim objektima. Kad foton pogodi
objekt on prolazi kroz njega ili se odbija od ciljanoga objekta, te se tada točka gdje
zraka fotona sjeće objekt sprema u memoriju. Ti podaci se kasnije koriste za
procjenu količine svjetlosti koja doprinosi kaustikama u refleksiji i refrakciji.
Natrag na sadržaj
3.3.1. Korištenje metode mapiranja fotona u POV Ray-u
Kada u POV Ray-u stvaramo scenu sa fotonima, objekte scene možemo podijeliti u
dvije kategorije. U prvu kategoriju spadaju objekti koji na svojim površinama pokazuju
kaustike kada su pogođeni fotonima. Druga kategorija su objekti koji stvaraju
kaustike reflektiranjem i refraktiranjem fotona. Neki objekti mogu spadati u obje
kategorije, a neki niti u jednu.
Prva kategorija – objekti koji pokazuju kaustiku fotona
Po postavljenim postavkama programa svi objekti se nalaze u prvoj kategoriji. Kad
god foton pogodi objekt on se pohranjuje i kasnije se koristi za iscrtavanje kaustike
na tom objektu. To znači da se po osnovnim postavkama kaustike mogu pojaviti na
bilo kojoj površini. Kako bi ubrzali iscrtavanje, objekte možemo isključiti iz ove
kategorije. Trebamo samo napisati liniju koda photons{collect off}. Kada
napišemo tu liniju koda na objektu se neće pojavljivati kaustike. Time ćemo uštedjeti
memoriju i vrijeme potrebno za izračun osvjetljenja u procesu iscrtavanja.
Druga kategorija – objekti koji sudjeluju u stvaranju kaustika
52
Po postavljenim postavkama programa u drugoj kategoriji nema ni jednog objekta.
Ako želimo da objekt sudjeluje u stvaraju kaustika trebamo učiniti dvije stvari. Prvo taj
objekt trebamo pretvoriti u metu. To činimo korištenjem ključne riječi target. Time
svjetlosnim izvorima govorimo da ispaljuju fotone u objekt. Drugo što trebamo učiniti
je definirati da li objekt reflektira fotone, refraktira fotone ili oboje. To definiramo
korištenjem ključnih riječi reflection on i refraction on. Da bismo omogućili
objektu da reflektira i refraktira fotone unutar definicije objekta trebamo upotrijebiti
sljedeći blok koda:
photons {
target
reflection on
refraction on
}
Generalno gledajući mi ne želimo da objekt bude u obje kategorije. Većina objekata
koji uzrokuju kaustike nemaju puno boje niti su svijetli. Oni samo reflektiraju ili
refraktiraju svoje okruženje. Iz tog razloga je prikazivanje kaustika na takvim
površinama samo nepotrebno trošenje vremena. Čak i kada se izračuna efekt
kaustika bi bio toliko prigušen da bi one bile nezamjetljive. Takvim slučajevima
dodajemo photons {collect off} kako bismo spriječili nepotrebno računanje
kaustičkog osvjetljenja.
Imamo slučajeve kada želimo uključiti refleksiju i refrakciju fotona na površini iako
ona nije meta. Time omogućujemo indirektnim fotonima (fotoni koji su pogodili metu i
reflektirali ili reflaktirali se od nje) kako bi nastavili svoje putovanje nakon udaranja
objekta.
Natrag na sadržaj
3.3.2. Globalne postavke fotona
Kako bismo definirali opcije sakupljanja i pohrane fotona u globalne postavke
tekstualne datoteke scene potrebno je dodati sljedeći blok koda:
global_settings {
photons {
count 20000
autostop 0
jitter .4
}
}
Blok koda koji nam određuje globalne postavke fotona ima puno više parametara
koje možemo definirati:
photons {
spacing <photon_spacing> | count <photons_to_shoot>
[gather <min_gather>, <max_gather>]
53
[media <max_steps> [,<factor>]]
[jitter <jitter_amount>]
[max_trace_level <photon_trace_level>]
[adc_bailout <photon_adc_bailout>]
[save_file "filename" | load_file "filename"]
[autostop <autostop_fraction>]
[expand_thresholds <percent_increase>, <expand_min>]
[radius <gather_radius>, <multiplier>, <gather_radius_media>,
<multiplier>]
}
Zadane vrijednosti globalnih postavki fotona su sljedeće:
Global :
expand_min
gather
jitter
media
:
:
:
:
40
20, 100
0.4
0
Natrag na sadržaj
3.3.2.1. Naredbe spacing i count
Broj generiranih fotona možemo definirati sa ključnom riječi spacing ili count. Ako
koristimo razmak između fotona njime definiramo srednju vrijednost razmaka između
fotona na površini. Ako razmak smanjimo na pola dobiti ćemo četiri puta više fotona
na površini i osam puta više fotona u mediju tj. volumenu. Ako koristimo brojač POV
Ray će ispaliti otprilike onoliko fotona koliko smo definirali. Broj fotona koji su stvarno
emitirani će se skoro uvijek barem malo razlikovati od broja koji smo definirali. On
može biti manji jer POV Ray ispaljuje fotone u kvadar (eng. bounding box) koji
zatvara ciljani objekt što znači da će neki fotoni promašiti ciljani objekt. No broj fotona
može biti i veći jer svaki objekt koji ima svojstvo refleksije i refrakcije, kreiraju se dva
fotona jedan za refleksiju i drugi za refrakciju.
Natrag na sadržaj
3.3.2.2. Naredba gather
Ključna riječ gather omogućuje nam definirati koliko će se fotona sakupiti u svakoj
točki za vrijeme koraka renderiranja. Prva vrijednost predstavlja minimalni broj fotona
koji će se sakupiti, a drugi vrijednost predstavlja maksimalni broj. Zadana vrijednost
je 20 za minimalni broj fotona i 100 za maksimalni broj fotona koji se sakupljaju.
Natrag na sadržaj
3.3.2.3. Naredba jitter
Ključna riječ jitter određuje količinu varijacija u pomaku uzorka svjetlosnih zraka.
Naredbom jitter dodaje se šum u razne procedure. Time će se izbjeći efekti
periodičnosti koji se jako vide u slici.
54
Ključne riječi max_trace_level i adc_bailout omogućuju nam definiranje atributa
potrebnih za korak praćenja fotona.
Natrag na sadržaj
3.3.2.4. Naredba max trace level
U scenama koje imaju mnogo reflektirajućih i prozirnih površina POV Ray može
zapeti na računanju višestrukih refleksija i refrakcija koje vrlo malo doprinose boji
određenog piksela. Parametar max_trace_level definira maksimalni broj razina
rekurzije koje POV Ray koristi pri praćenju zraka.
On se koristi kada je zraka reflektirana ili prolazi kroz prozirni objekt i kada se šalju
zrake sjene. Kada zraka pogodi reflektirajuću površinu, šalje se druga zraka da se
vidi što ta površina reflektira. To predstavlja prvu razinu. Ako ta zraka pogodi drugi
reflektirajuću površinu šalje se nova zraka i tada smo na drugoj razini. Maksimalni
broj razina po zadanim postavkama programa je pet.
Ako je je dosegnuta vrijednost max_trace_level prije nego što je pronađena
nereflektirajuća površina i ako ADC ne dozvoljava raniji prekid praćenja zraka (vidi
ispod), vraćena je crna boja. Ako vidimo crna područja u reflektivnim površinama na
mjestima gdje bi trebala biti boja tada moramo povećati vrijednost max_trace_level.
Drugi česti problem pojavljuje se kod prozirnih objekata. Npr. ako napravimo uniju
deset sfera različitih radijusa i dodijelimo im prozirnu teksturu, iscrtana slika će prvih
par sfera prikazati točno, dok će ostatak biti crni. To se događa jer svaki prolaz kroz
prozirnu površinu predstavlja novu razinu. Takve probleme također rješavamo
povećanjem vrijednosti max_trace_level.
Maksimalan iznos vrijednosti parametra max_trace_level je 256. Ako vrijednost
parametra max_trace_level nije postavljena i ako je za vrijeme iscrtavanja dosegnuta
zadana vrijednost na ekranu ne pojavljuje upozorenje.
Povećanje iznosa vrijednosti parametra max_trace_level uzrokuje povećanje
korištene memorije i vremena potrebnog za praćenje zraka, te može uzrokovati
rušenje programa, no ADC će to uvelike ublažiti.
Natrag na sadržaj
3.3.2.5. ADC i naredba adc bailout
U scenama koje imaju mnogo reflektirajućih i prozirnih površina POV Ray može
zapeti na računanju višestrukih refleksija i refrakcija koje vrlo malo doprinose boji
određenog piksela. Stoga POV Ray koristi sustav koji se zove Adaptive Depth
55
Control (ADC) kako bi zaustavio računanje dodatnog reflektiranih i refraktiranih zraka
kada je njihov doprinos beznačajan.
Svaki put kada se šalje nova zraka kao rezultat refleksije ili refrakcije njezin doprinos
ukupnoj boji piksela smanjen je za iznos refleksije ili za vrijednost iznosa filtera
reflektirajuće površine. U nekim točkama doprinos može biti beznačajan i tu nema
smisla da šaljemo i pratimo nove zrake. Kontrola prilagodljive dubine (ADC) je ta koja
prati doprinos zraka i određuje kada treba zaustaviti njihovo praćenje. U scenama
koje koriste puno djelomično reflektirajućih i refraktirajućih površina korištenje ADC-a
rezultira znatnim smanjenjem broja zraka koje se ispaljuju i omogućuje sigurno
korištenje većeg iznosa parametra max_trace_level.
To smanjenje u doprinosu boje zrake je rezultat množenja sa iznosom refleksije i/ ili
sa vrijednošću filtera svake površine. Stoga savršeno reflektirajuće površine poput
zrcala i savršeno prozirne površine neće biti korištene u optimizaciji ADC-a.
Točka u kojoj se doprinos zrake smatra beznačajnim kontroliramo ga sa vrijednošću
parametra adc_bailout. Standardna postavka njegove vrijednosti je 1/255 ili otprilike
0.0039, jer manja vrijednost od toga ne bi bila vidljiva u 24 bitnoj slici. Općenito ta
postavka je dovoljna i ne treba je mijenjati. Ako adc_bailout postavimo na nulu
isključujemo ADC i tada se POV Ray oslanja samo na vrijednost max_trace_level
parametra koji predstavlja maksimalan broj zraka koje će se ispaliti.
Natrag na sadržaj
3.3.2.6. Naredbe save file i load file
Ključne riječi save_file i load_file omogućuju nam spremanje mapa fotona u
datoteku i njezino ponovno pozivanje kada nam je potrebno. Pri prvom iscrtavanju
scene možemo definirati datoteku u koju želimo pohraniti informacije o fotonima u
našoj sceni tj.mapu fotona.
Kako je metoda mapiranja fotona neovisna o točki gledišta, mi možemo promijeniti
položaj kamere i to neće utjecati na interakciju fotona sa objektima naše scene. Da
bismo pohranili mapu fotona jednostavno koristimo sljedeću liniju koda:
save_file "moja_datoteka.ph"
Trebamo kreirati datoteku proizvoljnog imena i dodati joj ekstenziju .ph kako bi POV
Ray znao da se radi o datoteci mape fotona.
Kada promijenimo položaj kamere možemo jednostavno pozvati spremljenu datoteku
u kojoj je pohranjena mapa fotona i pri sljedećem iscrtavanju scene se neće
ispaljivati i pratiti fotoni, već će se koristiti njihove informacije pohranjene u mapi. Ona
sadrži sve fotone pohranjene na površinama objekata kao i u mediju ako je prisutan.
56
Pozivanje mape fotona se radi na isti način kao i spremanje, samo ovdje koristimo
naredbu load_file umjesto save_file. Istovremeno ne možemo pohranjivati fotone
u mapu i pozivati ju iz datoteke. Ako pozivamo mapu fotona iz datoteke POV Ray ne
ispaljuje fotone u scenu već koristi informacije iz datoteke. Kako tamo nema
informacija o fotonima i kako POV Ray ne ispaljuje fotone, u mapu se ništa ne može
pohraniti. Sve ostale opcije poput radijusa sakupljanja fotona moraju biti definirane u
POV datoteci scene i one se ne pozivaju sa mapom fotona.
Spremanje i pozivanje mape fotona omogućuje nam brže iscrtavanje scene ako
nismo mijenjali geometriju scene i parametre kojima definiramo površine objekata, jer
ćemo u protivnom dobiti neispravan prikaz virtualne scene. Općenito bilo kakva
promjena na geometriji scene zahtjeva novo ispaljivanje fotona, dok promjene
položaja kamere i rezolucije slike to ne zahtjevaju.
Natrag na sadržaj
3.3.2.7. Naredba autostop
Za razumijevanje opcije autostop trebamo razumjeti način na koji se iz izvora
svjetlosti ispaljuju fotoni. Fotoni se iz izvora ispaljuju po spiralnom uzorku. Ako
zamislimo sferu sa spiralom koja počinje u njezinom polu i širi se u krugovima koji se
stalno povećavaju prema ekvatoru. Tu su uključena dva kuta. Prvi kut ϕ nam govori
koliko smo daleko došli kruženjem po spirali. Drugi kut θ nam govori koliko smo
udaljeni od pola prema ekvatoru. Sada zamislimo da je ta sfera centrirana u izvor
svjetlosti gdje je njezin pol usmjeren prema centru objekta koji prima fotone i on
predstavlja početak spirale. Fotoni se ispaljuju iz svjetla po takvom spiralnom uzorku.
Slika 21. Ispaljivanje fotona u ciljani objekt1
POV Ray ne prestaje ispaljivati fotone sve dok cijeli ciljani granični kvadar (eng.
bounding box) objekta nije temeljito prekriven fotonima. Ponekad su naime objekti
puno manji nego njihovi granični kvadri. U takvim slučajevima želimo zaustaviti
ispaljivanje fotona ako smo napravili jedan cijeli krug spirale bez da smo pogodili
objekt. Neki objekti poput prstenova imaju rupe u sredini. Kako ispaljivanje fotona
57
kreće od sredine objekta, fotoni prođu kroz rupu prstena zavaravajući POV Ray da je
proces ispaljivanja izvršen. Kako bi izbjegli takve slučajeve koristimo ključnu riječ
autostop nam omogućuje određivanje koliko daleko POV Ray mora ići prije nego što
se automatski zaustavi. Vrijednost koju definiramo predstavlja dio graničnog kvadra
objekta koji POV Ray mora prekriti ispaljenim fotonima, a ispravne vrijednosti su od
0.0 do 1.0 (0% do 100%). Ako cijeli krug ispucanih fotona ne uspije pogoditi ciljani
objekt nakon što je spirala prošla graničnu vrijednost automatskog zaustavljanja,
POV Ray tada prestaje ispaljivati fotone.
Opcija autostop se ne uključuje sve dok barem jedan foton ne pogodi ciljani objekt
što nam omogućuje korištenje autostop 0 čak i kad objekti imaju rupe u sredini.
Natrag na sadržaj
3.3.2.8. Prilagodljiv radijus traženja
POV Ray kod sakupljanja fotona koristi prilagodljivi radijus traženja ukoliko se ne radi
o fotonima koji su u interakciji sa medijima. Ako se u prvom traženju ne pronađe neki
minimalni broj fotona, POV Ray povećava radijus traženja i započinje novu potragu.
Korištenje prilagodljivog radijusa traženja može smanjiti vrijeme potrebno za
iscrtavanje slike kao i pooštriti prikaz graničnih područja u kaustičkom uzorku.
Ponekad tehnika prilagodljive potrage stvara neželjene pojave na graničnim
područjima. Kako bi ih maknuli koristimo dvije granične vrijednosti koje definiramo
naredbom expand_thresholds. Prva granična vrijednost predstavlja postotak
povećanja radijusa traženja fotona i njezina zadana vrijednost je 20% ili 0.2. Ako
povećanje radijusa rezultira prevelikim brojem prikupljenih fotona, proširena potraga
se odbacuje i koriste se vrijednosti dobivene iz prijašnje potrage.
Druga granična vrijednost expand_min predstavlja minimalni broj prikupljenih fotona u
proširenoj potrazi i njezina zadana vrijednost je 40. No ako se u proširenoj potrazi
sakupi premalo fotona tada se koristi nova potraga čak i ako to znači povećanje broja
prikupljenih fotona za više od 20 %.
Natrag na sadržaj
3.3.2.9. Naredba radius
Parametar radius koristi se za sakupljanje fotona. Što je veći radijus POV Ray-u će
trebati više vremena za prikupljanje fotona. Ako pak postavimo premalen radijus POV
Ray neće prikupiti dovoljno fotona za izračun njihovog doprinosa boji određene
točke. Stoga je vrlo bitno odabrati primjeren radijus. POV Ray sam procjenjuje
primjeren radijus analizirajući informacije spremljene u mapi fotona. U većini
slučajeva POV Ray dobro procjenjuje primjeren radijus, no mogu se pojaviti slučajevi
58
gdje to i nije baš tako. Tada koristimo ključnu riječ radius kako bi prepisali ili
prilagodili procjenu POV Ray-a.
Radijus sakupljanja za fotone na površini objekata možemo definirati ručno
upisivanjem željene vrijednosti. Ako je ona nula ili ako je izostavimo POV Ray sam
analizira informacije o fotonima i procjenjuje potreban radijus. Radijus možemo
prilagoditi i definiranjem množitelja. Ako smatramo da je radijus kojeg je POV Ray
procijenio prevelik, možemo ga smanjiti korištenjem množitelja. Recimo ako želimo
smanjiti procijenjeni radijus na pola koristimo „radius ,0.5“ kako bi smanjili radijus i
time ubrzali iscrtavanje scene po cijenu kvalitete. Na isti način kao što možemo
definirati i prilagođavati radijus sakupljanja fotona na površinama objekata, možemo i
činiti sa radijusom sakupljanja fotona u mediju.
Natrag na sadržaj
3.3.3. Ispaljivanje fotona u objekt
Da bi POV Ray ispaljivao fotone u neki objekt moramo mu reći da taj objekt prima
fotone. To činimo upisivanjem bloka koda photons {} unutar bloka koda u kojem
definiramo objekt. Općeniti izgled bloka koda je:
photons {
[target [<spacing_multiplier>]]
[refraction on|off]
[reflection on|off]
[collect on|off]
[pass_through]
}
Njegove zadane vrijednosti su:
collect
refraction
reflection
split_union
target
:
:
:
:
:
on
off
off
on
1.0
Uzmimo za primjer sljedeći slučaj definiranja objekta:
object {
Moj_objekt
photons {
target
refraction on
reflection on
collect off
}
}
U gore navedenom primjeru prvo smo napisali ključnu riječ target i time smo naš
objekt učinili metom fotona koji će biti spaljeni iz izvora svjetlosti. Ukoliko bismo
trebali povećati gustoću fotona koji pogađaju objekt pokraj riječi target definiramo
59
množitelj razmaka. Ako bi na primjer definirali njegovu vrijednost od 0.5 tada bi
razmak fotona koji pogađa naš objekt bio upola manji od razmaka kod ostalih
objekata. To bi značilo da na tom objektu imamo 4 puta više fotona na površini i 8
puta više fotona u mediju.
Objekt reflektira i refraktira fotone. Po potrebi možemo ugasiti ugasiti bilo koju od
opcija jednostavnim definiranjem ključne riječi off pokraj opcije koju želimo ugasiti.
Time možemo uštedjeti na memoriji i brzini iscrtavanja no nauštrb kvaliteti iscrtane
slike.
Korištenjem ključne riječi collect POV Ray-u možemo reći želimo li da on sprema i
pohranjuje fotone na određenom objektu. U gornjem primjeru korišteno je collect
off što znači da fotoni neće biti ni spremljeni ni sakupljani na našem objektu. Oni će
se samo reflektirati i refraktirati na objektu i nastaviti svoje širenje scenom.
Ključna riječ pass_through uzrokuje da fotoni prolaze kroz objekte nepromijenjeni na
svom putu do ciljanog objekta. Nakon što foton pogodi ciljani objekt on zanemaruje
opciju pass_through. Recimo da imamo slučaj u kojem se jedan objekt nalazi između
izvora svjetlosti i drugog objekta. Kako on zaklanja izvor gledajući iz prspektive
drugog objekta mi možemo definirati da prvi objekt ne utječe na emitirane fotone
korištenjem nardbe pass_through u deklaracijskom kodu prvog objekta. Fotoni
emitirani iz izvora nesmetano prolaze kroz prvi objekt i pogađaju drugi ciljani objekt.
Nakon što pogode ciljani objekt oni zanemaruju naredbu pass_through i dalje
normalno međudjeluju sa prvim objektom ako im se on nađe na putu pri njihovom
daljnjem širenju. Na taj način emitirani fotoni dolaze direktno do ciljanog objekta i tek
onda se reflektiraju i refraktiraju na prvom objektu ako dođu do njega.
Bitno je naglasiti da POV Ray neće ispaljivati fotone u objekt sve dok ne napišemo
ključnu riječ target. Samo definiranje refleksije i refrakcije u bloku koda objekta neće
biti dovoljno.
Kod interakcije fotona sa objektima bitno je spomenuti još jednu ključnu riječ, a to je
split_union. Kad god se fotoni ispaljuju u objekt dobiven CSG operacijama koristi se
naredba split_union. Ona može imati dva stanja i njezina zadano stanje je on. To
znači da POV Ray razdvaja CSG objekt na njegove sastavne dijelove i zasebno
ispaljuje fotone u svaki dio. Na taj način se sprečava ispaljivanje fotona u šupljine
objekta, kao npr. rupe u rešetci.
No ako imamo složene objekte koji nemaju rupa tj. šupljina definiranjem split_union
off ćemo prisiliti POV Ray da ispaljuje fotone u cijeli objekt umjesto da ga rastavi i
fotone ispaljuje u sastavne dijelove.Time možemo poboljšati proces pohranjivanja i
sakupljanja fotona na objektu i time rezultirati točnijim iscrtavanjem slike.
60
Ključnu riječ split_union off upisujemo unutar koda unije u deklaraciji objekta na
sljedeći način:
union {
object {...}
object {...}
split_union off
}
Natrag na sadržaj
3.3.4. Fotoni i izvori svjetlosti
Kada imamo više izvora svjetlosti ponekad želimo da fotoni budu ispaljeni samo iz
određenih izvora. U takvom slučaju kada smo definirali da objekt prima fotone, a ne
želimo da oni budu emitirani iz određenih izvora u definiciju svjetlosnog izvora
trebamo dodati photons {reflection off refraction off}. Također po potrebi
možemo paliti i gasiti fotone koji se reflektiraju ili refraktiraju na ciljanom objektu.
Općeniti izgled bloka koda fotona koji stavljamo u definiciju svjetlosnog izvora je:
photons {
[refraction on | off]
[reflection on | off]
[area_light]
}
Postavljene vrijednosti za izvor svjetlosti su:
area_light
refraction
reflection
: off
: off
: off
Primjer:
light_source {
Moje_svjetlo
photons {
refraction on
reflection off
}
}
U gore navedenom primjeru definicije svjetlosnog izvora odredili smo da taj svjetlosni
izvor emitira fotone koji sudjeluju samo u refrakciji svjetlosti pri interakciji sa ciljanim
objektom. POV Ray pri mapiranju fotona sve izvore svjetlosti tretira kao točkaste
izvore svjetlosti. Ako želimo da POV Ray koristi postavke našeg površinskog svjetla
pri mapiranju fotona u deklaracijskom kodu našeg izvora svjetlosti moramo definirati
ključnu riječ area_light. Time ne povećavamo broj fotona koje emitira izvor svjetlosti,
no možemo dobiti lijepe uzorke kaustika.
Natrag na sadržaj
61
4. Kaustika
Kod širenja svijetlosti 12 kroz prostor često je pojavljivanje fokusiranja svjetlosti. U
jednostavnom prikazu fokusiranja imamo slučaj da sve zrake prolaze kroz fokus.
Arhimed 13 je navodno još 212 pr. Kr. branio Sirakuzu pomoću svojih „gorećih zrcala“
paleći jarbole rimskih brodova za vrijeme Drugog Punskog rata. Arhimed je već tada
proučavao geometrijska svojstva reflektirajućih površina i fokusiranje svjetlosti. Takvi
primjeri fokusiranja svjetlosti gdje sve reflektirane ili refraktirane zrake prolaze kroz
jednu točku tj. fokus su nam poznati još iz školskih dana. Proizvođači leća posvećuju
mnogo vremena i truda kako bi kreirali objekte koji savršeno fokusiraju svjetlost. No
vrlo je mala je vjerojatnost da takvu situaciju sretnemo u prirodi. On što se događa u
prirodi jest da se svjetlosne zrake fokusiraju duž fokalnih površina, a ne u točki.
Uzmimo za primjer zrcalo oblika presjeka cilindra. Ako gledamo 2D projekciju
situacije ono što se dešava je da se svjetlost fokusira duž fokalne krivulje a ne u točki
tj. fokusu. Ako to proširimo na tri dimenzije imamo pojavu fokusiranja duž površine, a
ne duž linije.
12
M.V. Berry, C. Upstill, IV Catastrophe Optics: Morphologies of Caustics and Their Diffraction
Patterns, In: E. Wolf, Editor(s), Progress in Optics, Elsevier, 1980, Volume 18, Pages 257-346
13
Assunta Bonanno, Michele Camarca, Peppino Sapia and Annarosa Serpe, Archimedes and
Caustics: A Twofold Multimedia and Experimental Approach, The Genius of Archimedes - 23
Centuries of Influence on Mathematics, Science and Engineering, History of Mechanism and Machine
Science, 2010, Volume 11, Part 1, 45-56, Springer
62
Slika 22. 2D 14 i 3D 15 reprezentacija kaustičkih površina
Zbog povećanog intenziteta svjetlosti fokusirane duž fokalne plohe njezina projekcija
na neku plohu vidljiva je golim okom kao i projekcija fokusa jednog povećala. Fokalne
površine duž kojih se fokusira svjetlost nazivaju se kaustičkim površinama, a fokalne
krivulje koje predstavljaju projekciju kaustičkih površina na ravninu promatranja
nazivaju se kaustičke krivulje ili kaustike. Intenzitet 16 svjetlosti na kaustikama može
biti dovoljan da zapali papir što objašnjava porijeklo riječi koja dolazi od lat. Causticus
što znači gorenje.
Usprkos sveprisutnosti kaustika njihovo postojanje i proces stvaranja nije poznat
većini ljudi. Razlog tome je što se proces stvaranja kaustika i njihova geometrijska
svojstva ne uče u srednješkolskom i akademskom programu već se samo zadržava
na savršenom fokusiranju tj. paraaksijalnom modelu i aberacijama svjetlosti kada
izlazimo iz modela i imamo stvarni slučaj. No ne govori se o geometrijskim svojstvima
aberacijama i eventualnom povezanošću sa prirodnim fokusiranjem svjetlosti tj.
kaustikama.
Kaustike kao fizički fenomeni su zasigurno bile promatrane kroz sva razdoblja
povijesti fizike što proizlazi iz činjenice da su kaustike svjetlosti vidljive golim okom.
14
Michael Rogers, Catacaustics Generated by a Point Source,
http://demonstrations.wolfram.com/CatacausticsGeneratedByAPointSource
15
Georg Glaeser, Reflections on Spheres and Cylinders of Revolution, Journal for Geometry and
Graphics, 1999, Volume 3, No. 2, 121-139
16
Yu. A. Kravtsov and Yu. I. Orlov, Caustics, Catastrophes and Wave Fields, 1999, Springer
63
Stavroudis 17 je u svojoj knjizi Matematika geometrijske i fizikalne optike prekrasno
sročio: „Među artefaktima geometrijske optike zrake ne posjeduju fizikalnu stvarnost;
valne fronte ne možemo vidjeti, njihovu prisutnost moramo promatrati indirektno
pomoć interferometrije. Za razliku od zraka i valnih fronti kaustičke površine su zaista
realne i one se mogu vidjeti i fotografirati. No ta „materija“ geometrijske optike je
najmanje shvaćena i skoro u potpunosti zanemarena.“ Bez obzira na fizikalnu
realnost svjetlosnih kaustika i mogućnost da ih vidimo golim okom one su se počele
istraživati tek u 17. st. Razlog tome je što se kaustike usko vežu na geometrijsku
optiku jer se njih objašnjava konceptima tj. apstraktnim objektima geometrijske optike
- zrakama ili valnim frontama. Tek kad je geometrijska optika postala dobro
zaokružena cjelina počelo se sa objašnjavanjem pojave kaustika i istraživanjem
njihovih geometrijskih svojstava.
Leonardo DaVinci je predvidio njihovu pojavu u 16.st. što je vidljivo iz njegovih skica.
Slika 23. Da Vincijeve konstrukcije kaustika
Kaustike 18 je prvi proučavao i predstavio Tschirnhaus 1682. godine. Tschirnhaus 19,
Le Hire i Leibnitz su radili na teoriji kaustika, području koje je usko vezano uz
geometrijsku optiku. Kaustičke krivulje proučavali su svi eminentni matematičari 17.
st. poput Huygensa, Barrowa, Newtona, Bernoullia, a zatim su proučavane analitički
od vremena Tschirnhausa pa sve do 19. st. Leibnitz je bio veoma zainteresiran
kaustikama i nagađa se da su ga one inspirirale u otkriću koncepta ovojnica
(envelopa) linija.
Uzmimo za primjer Leonardovu skicu kaustike dobivene sfernim zrcalom na slici 23.
Vidljivo je da kaustika ima svoj vrh koji se pojavljuje u blizini optičke osi i njegova
vršna točka leži na osi. Kada bi zrake sa optičkom osi optičkog sustava (zrcala)
zatvarale male kutove i bile u njezinoj neposrednoj blizini vidljiva bi bila samo vršna
točka kaustike na optičkoj osi. Ta točka predstavlja paraksijalni fokus tj. savršeni
17
O. N.Stavroudis, The Mathematics of Geometrical and Physical Optics, 2006, Wiley
Robert C. Yates, Curves and Their Properties, 1947, The National Council of Teachers of
Mathematics
19
Giovanni Mingari Scarpello and Aldo Scimone, The Work of Tschirnhaus, La Hire and Leibniz on
Catacaustics and the Birth of the Envelopes of Lines in the 17th Century, 2005, Springer Berlin/
Heidelberg
18
64
točkasti fokus koji nam je poznat iz elementarne geometrijske optike. Kaustike12
stoga predstavljaju perturbacije savršenog fokusa tj. aberacije leća. Izgled17 i položaj
kaustičke površine u prostoru opisuje geometrijske aberacije vezane uz dani optički
sustav. Na kaustikama leže sve monokromatske aberacije. Struktura kaustika
potpuno opisuje greške u stvaranju slike predmeta: sfernu aberaciju, komu i
astigmatizam. Njezin položaj u prostoru ukazuje na greške polja: distorziju i
zakrivljenost polja.
Na elementarnoj razini kaustike tretiramo kao geometrijske objekte. Kada se za
njihovu konstrukciju koristimo zrakama kaustika tada predstavlja ovojnicu (envelopu)
sustava reflektiranih ili refraktiranih svjetlosnih zraka. Ovojnica je krivulja koja
tangencijalno dodiruje svakog člana sustava krivulja, u našem slučaju to su zrake
koje su predočene ravnim linijama. Intenzitet svjetlosti je najveći na kaustikama, i one
dominiraju optičkom slikom sve dok je valna duljina dovoljno mala kako bi
geometrijska optika bila ispravna aproksimacija valnog polja. To znači da je ona
ispravna aproksimacija sve dok je valna duljina puno manja od dimenzija objekta. No
kada je valna duljina jednaka ili veća od veličine predmeta (kada idemo na
mikroskopsku razinu) teorija kratkih valova, područje geometrijske optike gdje zrake
posjeduju amplitudu i fazu i dozvoljeno im je da interferiraju na mjestima gdje se
sijeku, predviđa nefizikalne rezultate intenziteta svjetlosti.
U situacijama kada je valna duljina jednaka ili veća od predmeta do izražaja dolaze
valna svojstva svjetlosti, te imamo pojavu difrakcije i tada geometrijska optika više
nije ispravna aproksimacija. Kaustike na mikroskopskoj razini pokazuju fine
difrakcijske uzorke. Stoga su znanstvenici koji su se bavili istraživanjem kaustika
krenuli u potragu teorije koja bi fizikalno točno opisala pojave u takvim uvjetima.
Današnja fizička mjerenja16 kaustike tretiraju kao valne objekte - difuzna područja sa
pojačanom amplitudom valnog polja.
Ja ću u ovom radu kao alat za konstrukciju kaustika koristiti geometrijsku optiku, tj.
kaustike ću tretirati kao geometrijske objekte. Naravno moramo poštivati pravila i
granice u kojim geometrijska optika predstavlja ispravnu aproksimaciju. U nastavku
rada bavim se svjetlosnim kaustikama na makroskopskoj razini, kaustike koje
zamjećujemo u stvarnosti i time geometrijska optika predstavlja odličan alat za
konstrukciju kaustika.
Prije nego što krenem na proces konstruiranja kaustika želim naglasiti da kaustike
nisu vezane isključivo uz svjetlost. One se pojavljuju u svim valnim poljima poput
akustičkog, elektromagnetskog, seizmičkog, itd. Dok kaustike svjetlosnih valova16 i
valova na površini vode možemo zamijetiti golim okom, za većinu drugih valnih polja
kao recimo akustičko, elektromagnetsko i seizmičko, kaustike možemo snimiti samo
pomoću fizičkih naprava. Opis valnih polja u području kaustika je bitan za mnoge
discipline fizike kao za npr. instrumentalnu optiku( leće, prizme, zrcala, itd.) Problem
kaustičkih polja pojavljuje se u radio inženjerstvu, optici i akustici prirodnih medija.
65
Fokusiranje i fenomen kaustike uzima se u obzir u promatranju propagacije radio
valova kroz solarnu plazmu i zemljinu atmosferu.
Natrag na sadržaj
4.1. Konstrukcija kaustika metodom praćenja zraka
Geometrijska optika 20 je dio optike koja opisuje širenje svjetlosti pomoću koncepta
svjetlosnih zraka. Svjetlosna zraka17 je apstraktni objekt koji predstavlja trajektoriju
čestica svjetlosti tj. fotona. Po Fermatovom principu te trajektorije su putanje duž
kojih je vrijeme prijelaza čestice svjetlosti iz točke A do točke B u nekom sredstvu
ekstrem tj. minimum. U homogenom sredstvu, gdje je indeks loma konstantan,
vrijeme prijelaza čestice je minimum i stoga zrake svjetlosti u takvim sredstvima
predočujemo ravnim linijama. To objašnjava zašto se Fermatov princip u
homogenom sredstvu naziva zakon pravocrtnog širenja svjetlosti. Te ravne linije, koje
nemaju nikakvu fizičku realnost, predstavljaju alat kojim analiziramo i dizajniramo
optičke sustave. One se lome na prijelazu između dva sredstva, savijaju se u
nehomogenom sredstvu gdje indeks loma nije stalan, apsorbiraju se i reflektiraju.
Pomoću Fermatovog principa17, postulata o „intrinzičnoj lijenosti prirode“ koja odabire
putanju koju čestice svjetlosti prelaze u najkraćem vremenu, dolazimo do zakona
refleksije i Snellovog zakona refrakcije (loma).
Zakon refleksije nam govori da se zraka koja upada na neku reflektirajuću površinu
reflektira pod istim kutom pod kojim je upala na površinu. Kut koji reflektirana zraka
zatvara sa normalom površine u točki refleksije jednak je kutu koja upadna zraka
zatvara sa normalom površine u istoj točki, tj. upadni kut jednak je kutu refleksije.
Upadna i reflektirana zraka leže u istoj ravnini i ona je okomita na ravninu koja je
određena okomicom površine u točki refleksije.
Snellov zakon ili zakon refrakcije (loma) nam govori kako se zraka lomi na granici
dva sredstva. Kada zraka svjetlosti upada na granicu dva sredstva ona se lomi tako
da obje zrake, upadna i refraktirana, leže u istoj ravnini koja je okomita na ravninu
određenu okomicom ravnine u točki refrakcije. Omjer sinusa upadnog kuta i sinusa
kuta refrakcije proporcionalan je omjeru brzine širenja svjetlosti u danim sredstvima ili
obrnuto proporcionalan indeksima loma danih sredstava.
𝑛=
20
sin 𝛼 𝑣1
=
sin 𝛽 𝑣2
𝑐
𝑐
𝑐
𝑐
⇒ 𝑣 = ; 𝑣1 = ; 𝑣2 =
𝑛
𝑛1
𝑛2
𝑣
𝑐
sin 𝛼 𝑣1 𝑛1 𝑛2
=
= 𝑐 =
sin 𝛽 𝑣2
𝑛1
𝑛2
Wikipedia, Geometrical Optics, http://en.wikipedia.org/wiki/Geometric_optics
66
U homogenom izotropnom17 optičkom sredstvu n je konstantan. U nehomogenom
izotropnom sredstvu n je funkcija položaja, a u anizotropnom sredstvu indeks loma
ovisi o smjeru zrake. U nastavku ovog rada kao optička sredstva koristim zrak i vodu,
što su homogeni izotropni mediji i u tim slučajevima n je konstantan. Stoga je i omjer
sinusa kuta upada i loma konstantan i imamo skalarni oblik Snellovog zakona:
𝑛1 sin 𝛼 = 𝑛2 sin 𝛽
𝑛1 , 𝑛2 = 𝑘𝑜𝑛𝑠𝑡.
Pravila geometrijske optike opisuju kako se zrake šire kroz optički sustav. U
geometrijskoj optici često se koristi paraaksijalni model širenja zraka koji predstavlja
slučaj kada zrake zatvaraju male kutove sa optičkom osi i nalaze se u njezinoj blizini.
Ja taj model neću koristiti iz dva razloga. Prvi je što se u tom slučaju zrake svjetlosti
nakon refleksije ili refrakcije na nekom objektu fokusiraju u točki, koja predstavlja
savršeni točkasti fokus, i u takvim slučajevima nema aberacija. Kako aberacije
predstavljaju kaustike takvim modelom ih ne možemo konstruirati niti istražiti njihova
geometrijska svojstva. Drugi razlog je to što takvu situaciju moramo stvoriti umjetno,
nju ne nalazimo u prirodi i nju koristimo samo pri traženju savršenog fokusa nekog
optičkog sustava. Zrake svjetlosti u prirodi skoro nikad ne zatvaraju male kutove sa
optičkom osi niti se nalaze u njezinoj neposrednoj blizini. To znači da nema pojave
savršenog fokusiranja tj. fokusiranja u točki, već se svjetlost fokusira duž kaustičkih
površina. Takav način fokusiranja predstavlja prirodno fokusiranje svjetlosti.
Kada znamo sva pravila koja nam opisuju širenje svjetlosti u terminu zraka možemo
krenuti sa procesom praćenja zraka. Metoda praćenja zraka se u fizici najčešće
koristi za provjeravanje da li leće zadovoljavaju propisane specifikacije prije nego što
se krene na njihovu proizvodnju. Ja ću je ovdje koristiti za određivanje fokalnih
krivulja tj. kaustika.
Površinu svakog objekta u 2D projekciji možemo predočiti nekom krivuljom. Izvor
svjetlosti predočujemo točkastim izvorom svjetlosti koji nazivamo točka zračenja i ona
je fiksirana. Svjetlosne zrake izlaze iz točke zračenja i reflektiraju ili refraktiraju se na
danoj krivulji. Refraktirane ili reflektirane zrake se ne sjeku u točki, već se sjeku duž
krivulje koje nazivamo kaustičkom krivuljom. Ona predstavlja ovojnicu (envelopu)
reflektiranih ili refraktiranih zraka. Ovojnica je krivulja koja tangencijalno dodiruje
svakog člana sustava krivulja, a u našem slučaju su to ravne linije kojima
predočujemo zrake.
Imamo dva slučaja dobivanja kaustike; u refleksiji i refrakciji 21. Kada se zrake iz točke
zračenja reflektiraju od dane krivulje dobivamo ovojnicu reflektiranih svjetlosnih zraka
koju zovemo katakaustika, a kada se zrake refraktiraju (lome) na krivulji dobivamo
ovojnicu refraktiranih svjetlosnih zraka koju zovemo diakaustika. Svjetlosne zrake
21
Xah Lee, Caustics, http://xahlee.org/SpecialPlaneCurves_dir/Caustics_dir/caustics.html
67
mogu biti paralelne što odgovara slučaju kada se točka zračenja nalazi u
beskonačnosti.
Uzmimo za prvi primjer kružnicu. Ovisno o položaju točke zračenja dobivamo različite
katakaustike.
Slika 24. Katakaustike kružnice14
Kada je točka zračenja u beskonačnosti na kružnici dobivamo katakaustiku oblika
nefroide (lijevi primjer slike 24). Kada točku zračenja postavimo na kružnicu
dobivamo katakaustiku koja ima oblik kardioide (desni primjer slike 24).
Za razliku od savršenog fokusa kaustike predstavljaju stabilne strukture. Već
najmanja promjena geometrije tijela ili položaja izvora svjetlosti će uništiti savršeni
točkasti fokus i „razmazati“ ga duž krivulje tj. kaustike, dok kaustike ne možemo
uništiti. Promjenom geometrije tijela ili položaja izvora one će samo promijeniti svoj
oblik tj. pložaj. Pri promjeni ona neće nestati i pojaviti se u drugom obliku već će
kontinuirano mijenjati svoj oblik. Stoga za stvaranje kaustika nije potrebno da
površine imaju neki specijalni oblik, one mogu biti bilo kojeg oblika. Jedini uvjet je da
reflektirajuća ili refraktirajuća površina bude zakrivljena. Svaku površinu objekta
možemo predočiti nekom krivuljom i tada praćenjem zraka možemo konstruirati
njezinu katakaustiku.
Slika 25. Katakaustike14, 22 krivulja funkcija sin(x), -x3+x5 i sin(x)3
22
Michael Rogers, Catacaustics for Some Graphs,
http://demonstrations.wolfram.com/CatacausticsForSomeGraphs
68
U nastavku su tri slike katakaustike kardioide koja mijenja svoj oblik ovisno o
promjeni položaja točke zračenja.
Slika 26.Katakaustike kardioide14
Svaka proizvoljna krivulja ovisno o položaju točke zračenja ne mora imati svoju
kaustiku. Primjer tome bi bila parabola sa točkom zračenja u fokusu. Zrake koje
dolaze iz te točke nakon reflektiranja od parabole su paralelne i ne tvore kaustiku.
Također primjer je i kružnica sa točkom zračenja u ishodištu i ona ne posjeduje
diakaustiku.
Slika 27. Parabola i njezin fokus, kružnica i njezino ishodište14
Vidljivo je da katakaustika u slučaju paralelnih zraka koje upadaju paralelno x osi
parabole degenerirana u točku koja predstavlja njezin fokus. Također u slučaju kad
se točkasti izvor nalazi u ishodištu kružnice njezina katakaustika je degenerirana u
točku u ishodištu.
Diakaustiku konstruiramo na sličan način. Imamo neku proizvoljnu krivulju i točku
zračenja. Pratimo zrake iz točke do krivulje na kojoj se refraktiraju i tada konstruramo
diakaustike duž koje se zrake sijeku. U nastavku su dvije slike diakaustika sinusne
krivulje i elipse sa točkom zračenja u beskonačnosti.
69
Slika 28. Diakaustika sinusne krivulje i elipse21
U nastavku je tabela sa slikama katakaustika nekih poznatih krivulja ovisno o
položaju točke zračenja 23.
23
Krivulja
Položaj točke
zračenja
Katakaustika
Kardioida
Vrh kardioide
Nefroida
Kružnica
Na krivulji
Kardioida
Kružnica
Paralelne zrake
(točka u
beskonačnosti)
Nefroida
Wolfram MathWorld, Catacaustic, http://mathworld.wolfram.com/Catacaustic.html
70
Slika
Dioklova cisoida
Fokus
Kardioida
Jedan luk cikloide
Paralelne zrake
okomite na os
Dva luka cikloide
Deltoida
Paralelne zrake
Astroida
Elipsa
Bilo koji položaj
Neimenovana krivulja
Prirodni logaritam
Paralelne zrake
paralelne osi x
Lančanica
71
Logaritamska
spirala
Ishodište
Jednaka logaritamska
spirala
Parabola
Paralelne zrake
okomite na x os
Tschirnhausenova
kubična krivulja
Tschirnhausenova
kubična krivulja
Fokus
Semikubična parabola
Natrag na sadržaj
72
4.2. Kaustika u refleksiji i POV Ray
Jedan on najčešćih primjera kaustike u svakidašnjem životu je svijetla linija u šalici
kave koja se pojavljuje dok je ispijamo na terasi po sunčanom danu. Sunce
predstavlja točkasti izvor svjetlosti u beskonačnosti koji emitira paralelne zrake
svjetlosti. Paralelne zrake upadaju na unutarnju zakrivljenu stjenku šalice i nakon
refleksije zatvaraju zakrivljenu površinu u tri dimenzije koja predstavlja kaustiku.
Projicirane na dno šalice ukoliko je šalica prazna ili na ravninu površine kave zrake
tvore ovojnicu kao na slici.
Slika 29. Katakaustika – envelopa svjetlosnih zraka projicirana na horizontalnu ravninu 24
Razlog zašto je vidljiva svijetla linija na dnu šalice ili na površini kave je taj što ona
predstavlja presjek kaustičke površine sa površinom kave ili dnom šalice. Dno šalice
ili površina kave nam predstavljaju zaslon na kojem promatramo presjek kaustike. To
je vrsta fokusiranja, no ne u savršenom fokusu u točki koji se najčešće povezuje sa
sa refleksijom cilindričnog ogledala kada zrake zatvaraju male kuteve sa optičkom osi
i/ili se nalaze se u njenoj neposrednoj blizini - tzv. paraaksijalni slučaj koji se
promatra u elementarnoj geometrijskoj optici. Kaustika sadrži vrh, i ako zrake
ograničimo da zatvaraju male kuteve sa osi i/ili da se zrake nalaze blizu optičke osi
vidjeti ćemo samo vrh kaustike - to je paraaksijalni vrh koji predstavlja savršeni fokus.
Ostatak kaustike je formiran pomoću zraka koje zatvaraju veće kuteve sa osi i/ili se
ne nalaze u neposrednoj blizini optičke osi.
Kako sunce mijenja svoj položaj na nebu mijenja se upadni kut zraka svjetlosti. Oblik
kaustike mijenja se ovisno o upadnom kutu zraka. Smanjivanjem upadnog kuta
kaustika postaje manje oštra i pojavljuje se dodatna vrlo blijeda krivulja. Do istog
efekta dolazi ako se mijenja razina kave u šalici. Efekt se može bolje vidjeti u visoko
poliranom metalnom cilindru, prstenu ili cilindričnom zrcalu.
24
J. F. Nye, Natural focusing and fine structure of light, 1999, Institute of Physics Publishing
73
Slika 30. Eksperimentalno opažanje kaustike u šalici kave fotografijom
Kod kaustike u šalici kave upadne zrake reflektiraju se jednom, te takve kaustike
nazivamo kaustikama prvog reda. Oblik takvih kaustika ovisi o dva parametra,
upadnom kutu i visini objekta na kojem promatramo kaustiku, u našem slučaju to je
visina područja šalice gdje nema kave. Uzmimo za primjer situaciju sa lijevog
primjera slike 30.
Slika 31. Skica postava šalice sa kavom
Po skici sa slike 31 možemo konstruirati virtualni postav u POV Ray-u:
#include "coffeemug.inc"
/---deklaracija varijabli---/
#declare mjerna_jedinica = 0;
//varijable šalice
#declare radijus = 4.1;
#declare debljina_stjenke = 0.5;
#declare visina_salice = 9.5;
#declare parametri_drske = <1.5, 6.5, 3.8>;
#declare prostor_drske = 2;
#declare Use_merge = yes;
//varijable tekućine
#declare visina_tekucine = 7;
#declare epsilon = 0.001;
74
//varijable izvora svjetlosti
#declare udaljenost_od_stola = 35.5;
#declare udaljenost_od_salice = 15.5;
#declare bijela_svjetlost = <1, 1, 1>;
#declare snaga_izvora = 1;
/---deklaracija materijala---/
//materijal drvo
#declare drvo = texture {
pigment {
wood
color_map {
[0.00 color
[0.40 color
[0.60 color
[1.00 color
}
scale <1.5, 1, 2>
turbulence 0.07
scale <0.5, 1, 2>
rotate <0,90,0>
}
finish {
ambient 0.1
diffuse 0.9
reflection 0.3
phong 1
phong_size 200
}
}
rgb
rgb
rgb
rgb
<0.5,
<1.0,
<1.0,
<0.5,
0.25,
0.50,
0.50,
0.25,
0.125>]
0.250>]
0.250>]
0.125>]
//materijal keramika
#declare keramika = texture {
pigment { color rgb <1, 1, 1> }
finish {
ambient 0.1
diffuse 0.9
reflection 0.2
specular 0.1
roughness 0.1
}
}
//materijal kava
#declare kava = texture {
pigment { color rgb <0.58, 0.41, 0.22> }
finish {
ambient 0.1
diffuse 0.9
reflection 0.2
specular 0.8
roughness 0.001
phong 1
phong_size 400
}
}
//---deklaracija objekata---//
//okruženje
75
#declare okruzenje = sky_sphere {
pigment {
image_map {
png "C:\Users\Bruno\Desktop\123.png"
map_type 1
}
}
rotate <0, 120, 0>
translate <0, 0.5, 0>
}
//objekt stol
#declare stol = box {
<-100, -1, -100>,
< 100, 0, 100>
texture { drvo }
}
//objekt izvor paralelnih zraka svjetlosti
#declare paralelni_izvor_svjetlosti = light_source {
<udaljenost_od_salice, udaljenost_od_stola, 0>
color rgb bijela_svjetlost*snaga_izvora
parallel
point_at <0, 0, 0>
}
//objekt izvor svjetlosti stolna lampa
#declare izvor_svjetlosti_lampa = light_source {
<udaljenost_od_salice, udaljenost_od_stola, 0>
color rgb bijela_svjetlost*snaga_izvora
spotlight
radius 35
falloff 37
tightness 0.2
area_light <1, 0, 0>, <0, 1, 0>, 10, 10
adaptive 1
jitter
point_at <udaljenost_od_salice, 0, 0>
}
//objekt šalica
#declare salica = object {
CoffeeMug_Detail (radijus, debljina_stjenke, visina_salice,
mjerna_jedinica, parametric_drske, prostor_drske, Use_merge)
rotate <0, 180, 0>
texture { keramika }
}
//objekt pice
#declare pice = object {
CoffeeMug_Beverage (radijus, debljina_stjenke, visina_tekucine,
mjerna_jedinica, epsilon)
texture { kava }
}
//---glavni dio programa---//
global_settings {
max_trace_level 2
photons {
spacing 0.002
76
autostop 0
jitter .4
save_file "C:\Users\Bruno\Desktop\fotoni_salica.ph"
}
}
sky_sphere { okruzenje }
object { paralelni_izvor_svjetlosti photons { reflection on } }
object { stol }
object { salica photons { target reflection on } }
object { pice }
camera {
perspective
location <-4, 20, -4>
look_at <0, 6, 0>
rotate <0, 180,0>
}
U kodu sam koristio objekt šalice kave kojeg je modelirao Richard Callwood III.
Objekt se nalazi na POV Ray stranici pod kolekcijom objekata koji se mogu slobodno
koristiti u vlastitim projektima. Definicija šalice se nalazi u datoteci coffeemug.inc koju
pozivam na početku koda.
Imamo šalicu visine h1, unutarnjeg radijusa r, debljine dna d, faktora reflektivnosti fr
ispunjene kavom do neke visine šalice h2. Za formaciju kaustika bitan nam je dio
šalice koji nije ispunjen kavom. To odgovara situaciji kao da imamo prsten radijusa r,
faktora reflektivnosti fr i visine ℎ = ℎ1 − (ℎ2 + 𝑑) koji leži na nekoj površini na kojoj
promatramo kaustiku.
Slika 32. Ovisnost oblika kaustike o upadnom kutu α
Slika 32 predstavlja slučaj kada je razina kave u šalici konstantna, a mijenja se
položaj izvora svjetlosti, tj. mijenja se upadni kut zraka. Iste oblike kaustike dobivamo
kada je položaj izvora svjetlosti stalan (imamo konstantni upadni kut α), a mijenjamo
razinu kave u šalici kao na slici 33. Iz oblika sjene u šalici na slikama 32 i 33 se jasno
vidi promjena položaja izvora i promjena razine tekućine u šalici.
77
Slika 33. Ovisnost oblika kaustike o visini tekućine h
Oblik kaustike prvog reda ovisi o upadnom kutu α i visini cilindra h. Na lijevoj slici
imamo slučaj kada je ℎ ∙ 𝑐𝑡𝑔𝛼 < 𝑟/2, srednja slika predstavlja situaciju kada je
ℎ ∙ 𝑐𝑡𝑔𝛼 = 𝑟/2 i tada dobivamo „klasičnu“ kaustiku sa oštrim vrhom i na desnoj slici je
prikazan slučaj kada je ℎ ∙ 𝑐𝑡𝑔𝛼 > 𝑟/2. U slučaju kada je ℎ ∙ 𝑐𝑡𝑔𝛼 > 𝑟/2 pojavljuje se
klasična kaustika i dodatna krivulja.
Slika 34. Skica 25 kaustike u šalici za h*ctgα > r/2
U slučaju malog upadnog kuta α oblik svjetlosti koji se pojavljuje na površini kave
sastoji se od dvije krivulje: klasične kaustike koja predstavlja epicikloidu kod koje je
radijus kruga koji se kotrlja upola manji od radijusa kruga koji miruje. Druga krivulja je
epitrohoida kod koje točka ne leži na obodu kružnice već na nekoj udaljenosti izvan
kruga kao na slici 34.
Klasičnu kaustiku u slučaju paralelnih zraka tj. kada je izvor svjetlosti u
beskonačnosti možemo opisati parametarskim jednadžbama epicikloide:
𝑥(𝜙) =
𝑟
[3 𝑐𝑜𝑠 𝜙 + 𝑐𝑜𝑠(3𝜙)]
4
𝑟
𝑦(𝜙) = [3 𝑠𝑖𝑛 𝜙 + 𝑠𝑖𝑛(3𝜙)]
4
25
Christian Ucke and Christoph Engelhardt, Playing with caustic phenomena, published in the
proceedings of the GIREP/ICPE conference ‘New ways in physics teaching’, Ljubljana 21.-27.8.1996,
page 440-444
78
Kut 𝜙 je označen na slici 42 koja slijedi u nastavku teksta.
Oblik kaustika ovisi još o jednom parametru – broju refleksija. U slučaju kaustike u
šalici kave imamo samo jednu refleksiju jer je šalica napravljena od keramike i
njezina površina nije dovoljno reflektivna, no ukoliko imamo neki visoko polirani
metalni predmet možemo vidjeti kaustiku zraka reflektiranih više od jednom.
Slika 35. Skice i slike kaustika prvog, drugog i trećeg reda na metalnom prstenu25, 26
Slika 36. POV Ray simulacija kaustika prvog, drugog i trećeg reda na metalnom prstenu
26
Christian Ucke und Christian Engelhardt , Kaustik in der Kaffeetasse, 1998, Physik in unserer Zeit
29, Seite 120-122
79
Slika 35 predstavlja skice i eksperimentalna opažanja kaustika višeg reda, dok slika
36 prikazuje POV Ray simulacije primjera iz slike 35. Na lijevom primjeru slike 35 i 36
vidimo klasičnu kaustiku prvog reda dobivenu zrakama koje su se reflektirale jednom
od stjenke prstena. Takvu kaustiku možemo zamjetiti u šalici kave ili bilo kojem
cilindričnom objektu. Srednji primjer predstavlja kaustiku drugog reda dobivenu
dvostrukom refleksijom zraka, a na desnom primjeru slika je kaustika trećeg reda.
Kao što sam napomenuo kaustike višeg reda ne možemo zamjetiti u šalici kave. Za
njih nam treba visoko polirani metalni objekti, a najbolji objekt za njihovo promatranje
bi bio prsten koji sa unutrašnje strane ima zrcalo.
Slika 37. POV Ray simulacija kaustika četvrtog i petog reda
U nastavku je POV Ray kod kojim sam simulirao kaustike višeg reda.
//---deklaracija varijabli---//
//parametri prstena
#declare unutarnji_radijus = 2;
#declare vanjski_radijus = 2.5;
#declare visina_prstena = 2;
//parametri izvora
#declare udaljenost_od_sredista_prstena = -60;
#declare udaljenost_od_stola = 123;
#declare snaga_izvora = 1;
#declare bijela_svjetlost = <1, 1, 1>;
//red kaustike
#declare kaustika_prvog_reda = 2;
#declare kaustika_drugog_reda = 3;
#declare kaustika_treceg_reda = 4;
#declare kaustika_cetvrtog_reda = 5;
#declare kaustika_petog_reda = 6;
//---deklaracija materijala---//
//materijal prstena
#declare srebro = texture {
pigment {
color rgb <0.94, 0.93, 0.90>
}
finish {
ambient 0.1
diffuse 0.6
80
brilliance 6
specular 0.8
roughness 1/120
metallic
reflection 0.8
}
}
// materijal stola
#declare drvo = texture {
pigment {
wood
color_map {
[0.00 color
[0.40 color
[0.60 color
[1.00 color
}
scale <1.5, 1, 2>
turbulence 0.2
scale <0.6, 1, 4>
rotate <0, 90, 0>
}
finish {
ambient 0.1
diffuse 0.9
reflection 0.3
phong 1
phong_size 200
}
}
rgb
rgb
rgb
rgb
<0.5,
<1.0,
<1.0,
<0.5,
0.25,
0.50,
0.50,
0.25,
0.125>]
0.250>]
0.250>]
0.125>]
//---deklaracija objekata---//
//okruženje
#declare okruzenje = sky_sphere {
pigment {
image_map {
jpeg "C:\Users\Bruno\Desktop\dnevna_soba.jpg"
map_type 1
}
}
rotate <0, 120, 0>
translate <0.5, 0, 0>
}
//objekt stol
#declare stol = plane {
y, 0
texture {
drvo
}
}
//objekt točkasti izvor svjetlosti
#declare tockasti_izvor_svjetlosti = light_source {
<udaljenost_od_sredista_prstena, udaljenost_od_stola, 0>
color rgb bijela_svjetlost*snaga_izvora
}
//objekt paralelni izvor svjetlosti
81
#declare paralelni_izvor_svjetlosti = light_source {
<udaljenost_od_sredista_prstena, udaljenost_od_stola, 0>
color rgb bijela_svjetlost*snaga_izvora
parallel
point_at <0, 0, 0>
}
//objekt prsten
#declare prsten = difference {
cylinder{<0, 0, 0>, <0, visina_prstena, 0>, vanjski_radijus }
cylinder{<0,-0.001, 0>, <0, visina_prstena+0.001, 0>,
unutarnji_radijus }
texture {
srebro
}
}
//---glavni dio programa---//
global_settings {
max_trace_level kaustika_prvog_reda
photons {
spacing 0.002
autostop 0
jitter .4
}
}
object { okruzenje }
object { tockasti_izvor_svjetlosti photons { reflection on } }
object { stol }
object { prsten photons { target reflection on } }
camera {
perspective
location <0, 8, 0>
look_at <0, 0, 0>
}
U uvodu koda deklariram varijable prstena, izvora svjetlosti i red kaustike. Njih
kasnije koristim u deklaraciji globalnih postavki scene, objekta izvora svjetlosti i
prstena. U globalnim postavkama određujem red kaustike i broj fotona koje emitira
izvor. Nakon toga slijedi deklaracija objekata stola, vrste izvora svjetlosti i prstena.
Nakon što sam definirao sve parametre objekata i objekte scene pozivam ih kako bi
ih POV Ray iscrtao i na kraju definiram kameru koja predstavlja položaj i način na koji
promatramo virtualnu scenu. Ovdje neću objašnjavati svaku naredbu zasebno jer
sam ih detaljno objasnio u poglavlju vezanim uz POV Ray, već ću se ovdje posvetiti
parametrima i naredbama bitnim za kreiranje kaustika višeg reda.
Kod kreiranja kaustika višeg reda važno je samo nekoliko naredbi i parametara koda.
Prvi je max_trace _level koji predstavlja broj refleksija koje POV Ray slijedi. Njime
utječemo na red kaustike gdje max_trace_level 2 odgovara prvoj jednostrukoj
refleksiji tj. općenito max_trace_level n odgovara n+1 redu kaustike. „Kvalitetu“
kaustike određujemo brojem fotona kojeg definiramo sa photons {spacing 0.001}.
Kao što sam ranije naveo kaustike višeg reda vidljive su tek kod objekata koji
posjeduju visoku reflektivnost poput visoko poliranih metala ili zrcala. U POV Ray-u
82
reflektivnost objekata reguliramo parametrom reflection unutar naredbe finish koja
predstavlja završnu obradu objekta. Parametar reflektivnosti je taj o kojem ovisi
jakost kaustika u višem redu tj. o njemu ovisi do kojeg reda će kaustike biti vidljive.
Na primjer bez obzira što je max_trace_level postavljen na 4 ne znači da ćemo imati
kaustiku petog reda. Da li će ona biti vidljiva ili ne ovisi o reflektivnosti površine
objekta tj. o parametru reflection. Da bi na u našoj sceni uopće vidjeli kaustike
treabamo uključiti fotone u refleksiji za izvor svjetlosti naredbom photons {
reflection on }, te prsten pretvoriti u metu fotona i uključiti njihovu refleksiju
naredbom photons { target reflection on }.
Slika 38. Skica virtualnog postava
Gornjim POV Ray kodom iscrtao sam kaustike od prvog do petog reda u slikama 36 i
37. Reflektivnost prstena držao sam konstantnom na 80%. Visina prstena je
konstantna kao i njegov unutarnji i vanjski radijus. Jedini parametar koji sam mijenjao
je udaljenost izvora od stola, dok je udaljenost izvora od središta prstena također
stalna i pritom ne mislim na prostornu udaljenost već njezinu projekciju na ravninu
stola. Kao izvor koristio sam točkasti izvor svjetlosti.
Iz slika je vidljivo da sam uspio „izolirati“ samo kaustike n-tog reda. To sam učinio
podešavanjem parametara max_trace_level i udaljenost_izvora_od_stola. Recimo
za kaustiku trećeg reda vrijednost max_trace_level je 4 i time POV Ray-u govorimo
da iscrtava samo kaustike do trećeg reda, tj. da pratiti samo zrake koje se reflektiraju
do maksimalno tri puta. Time sprečavamo da se u našoj slici iscrtavaju dijelovi ili
cijele kaustike višeg reda. Kaustike nižeg reda „maknuo“ sam na način da sam
smanjio udaljenost izvora od stola i time maknuo zrake koje upadaju u šupljinu
prstena pod upadnim kutevima većim od αmax. Zrake koje bi upadale pod kutevima
većim od αmax bile bi odgovorne za kaustike nižeg reda i ovakvim podešavanjem
položaja izvora one se mogu eliminirati. Iz slike je vidljivo da postoji neki raspon
upadnih kuteva od αmin do αmax. No zrake čiji je upadni kut veći od αmin i manji od αmax
i reflektiraju se više od tri puta sam već maknuo željenom vrijednošću
83
max_trace_level. Za kaustiku prvog reda udaljenost izvora od stola je 123, za
kaustiku drugog reda 21.5, trećeg reda 14.2, četvrtog reda 10 i petog reda 8.2.
U stvarnom eksperimentu kaustike nižeg reda možemo eliminirati pomnim
odabiranjem položaja izvora tj. ograničavanjem maksimalnog upadnog kuta α max koji
predstavlja zrake koje sujeluju u kaustici reda kojeg želimo promatrati. No vidljivo je
da će u šupljinu prstena upadati i zrake koje upadaju pod manjim kutevima sve do
αmin i one predstavljaju kaustike višeg reda koje će biti vidljive u cijelosti ili samo
djelomično. Njih ne možemo eliminirati na način koji nam pruža POV Ray u našem
virtualnom eksperimentu. U stvarnosti nam za to treba prsten identičnih dimenzija i
manjeg faktora reflektivnosti. No čak i tada kaustika maksimalnog reda ne bi bila
toliko dobro vidljiva kao kaustika istog reda koju smo izolirali u POV Ray-u jer
intenzitet kaustika ovisi o faktoru reflektivnosti. Iz toga možemo vidjeti prednost
eksperimenta rađenih u POV Ray-u, a to je izolacija struktura od interesa.
Slika 39. Kaustike prvog i drugog reda u metalnom cilindru 27
Odabiranjem povoljnog položaja izvora svjetlosti, pritom mislim i na povoljnu
udaljenost izvora svjetlosti od cilindra, ovisno o reflektivnosti prstena možemo vidjeti
kaustike svih redova koje se pojavljuju u šupljini prstena kao na slici 39.
Slika 40. POV Ray simulacija kaustika višeg reda
Iz slike 39 i 40 vidimo da kada se izvor svjetlosti nalazi uz prsten vidljive su cijele
kaustike određenog reda. U primjerima sa slike 40 točkasti izvor svjetlosti postavio
sam iznad unutrašnjeg ruba prstena na njegovoj lijevoj strani. Što je izvor više
udaljen od prstena to je vidljiv manji dio kaustike određenog reda koju promatramo.
27
Grace Weir, The Coffee Cup Caustic,
http://www.graceweir.com/project20/The_Coffee_Cup_Caustic
84
Kada točkasti izvor svjetlosti postavimo beskonačno daleko od prstena dobivamo
izvor paralelnih zraka svjetlosti. Pogledajmo kako izgledaju kaustike dobivene
paralelnim zrakama svjetlosti. U POV Ray kodu uključio sam izvor paralelnih zraka
svjetlosti i njemu definirao iste udaljenosti od stola kao i u slučaju kaustika prvog,
drugog i trećeg reda dobivenih sa točkastim izvorom (slika 37). Time sam dobio
paralelni snop zraka koji upada na prsten pod istim kutevima pod kojima su upadale
„izolirane“ zrake u slučaju točkastog izvora.
Slika 41. Kaustike prvog, drugog i trećeg reda dobivene paralelnim zrakama svjetlosti
Iz usporedbe slika kaustika dobivenih paralelnim zrakama i zrakama iz točkastog
izvora vidljivo je da se veći dio kaustika određenog reda vidi za slučaj točkastog
izvora. Razlog tome je što paralene zrake ne zatvaraju kuteve sa optičkom osi
prstena već paralelno osi upadaju u šupljinu prstena, dok kod točkastog izvora
imamo zrake koje zatvaraju određene kuteve sa osi prstena. Stoga paralelne zrake
koje je emitira točkasti izvor koji se nalazi u beskonačnosti lijevo od prstena i koje
upadaju pod nekim kutem α reflektiraju se samo sa desne strane unutrašnje plohe
prstena, dok u slučaju kada se točkasti izvor svjetlosti nalazi na rubu unutrašnje
plohe prstena u formaciji kaustika sudjeluju zrake koje zatvaraju kuteve −90° < 𝛽 <
90° sa optičkom osi prstena i one se reflektiraju duž cijele unutrašnje plohe prstena.
Ta dva slučaja prikazana su na slikama 41 i 40.
Mijenjanjem udaljenosti izvora paralelne svjetlosti od stola i od središta prstena u
POV Ray kodu određujemo kut paralelnih upadnih zraka svjetlosti, dok kod točkastog
izvora udaljenošću izvora od stola određujemo interval vrijednosti upadnih kuteva
zraka koje će upasti u šupljinu prstena, a udaljenošću od prstena određujemo interval
kuteva koje zrake svjetlosi mogu zatvarati sa optičkom osi prstena, a da upadaju u
šupljinu prstena.
Iz primjera je vidljiva ovisnost određenog reda kaustika o upadnom kutu, dok izgled
kaustika višeg reda tj. da li će one biti u cijelosti vidljive kao na slici 40 ili samo
djelomično ovisi o kutevima koje zrake zatvaraju sa optičkom osi cilindra. A taj kut
ovisi o udaljenosti od središta prstena.
Za prstenovu kaustiku u prvom redu refleksije možemo izvesti jednadžbu. Kaustika je
krivulja koja nastaje u presjecištima reflektiranih zraka. Projicirajmo realnu u 2D i
promotrimo gdje se sijeku zrake reflektirane od kružnog prstena:
85
Slika 42. Skica konstrukcije kaustike prvog reda refleksije
Kaustika nastaje na presjecištu dvije bliske upadne zrake (trake 1 i 2 sa slike) kada
se reflektiraju od prstena (zrake 1' i 2'), tj. u točki (x0, y0). Odredimo jednadžbu pravca
1'. Koeficijent smjera pravca 1' je:
𝜋
𝑎 = 𝑡𝑔 𝛾 = 𝑡𝑔 � − 2𝛽� = 𝑐𝑡𝑔(2𝛽)
(1)
𝑏 = 𝑅 cos 𝛽 − 𝑐𝑡𝑔(2𝛽)𝑅 sin 𝛽
(2)
2
a njegov odsječak 𝑏 = 𝑦𝑝 − 𝑎𝑥𝑝 gdje je 𝑦𝑝 = 𝑅 cos 𝛽 i 𝑥𝑝 = 𝑅 sin 𝛽 jednak je:
Pravac 2' će imati infinitezimalno različite koeficijente jer su upadni pravci 1 i 2
infinitezimalno bliski. Jednadžba presjecišta dva pravca dana kao 𝐴1 𝑥 + 𝐵1 𝑦 + 𝐶1 = 0
i 𝐴2 𝑥 + 𝐵2 𝑦 + 𝐶2 = 0 je:
𝐵1
𝐵
𝑥0 = 2
𝐴
� 1
𝐴2
�
𝐶1
𝐶 𝐴1
�
�
� 1
𝐶2
𝐶2 𝐴2
; 𝑦0 =
𝐵1
𝐴 𝐵1
�
� 1
�
𝐵2
𝐴2 𝐵2
Kako su naši pravci infinitezimalno bliski to je 𝐴2 = 𝐴1 + 𝑑𝐴1 , 𝐵2 = 𝐵1 + 𝑑𝐵1 i
𝐶2 = 𝐶1 + 𝑑𝐶1 . U reprezentaciji pravca kao 𝑦 = 𝑎𝑥 + 𝑏, 𝑎𝑥 − 𝑦 + 𝑏 = 0, vidimo da je
𝐵1 = −1, donosno 𝑑𝐵1 = 0, pa se lako pokaže da je:
𝑥0 = −
𝑑𝑏
𝑑𝑎
Uvrštavajući jednadžbe (1) i (2) i provodeći diferencijaciju dobivamo da je:
𝑥0 = 𝑅(𝑠𝑖𝑛 𝛽)3 =
y0 možemo dobiti iz 𝑦0 =
𝐶 𝐴1
� 1
�
𝐶2 𝐴2
𝐵1
𝐴
�
� 1
𝐴2 𝐵2
𝑅
[3 𝑠𝑖𝑛 𝛽 − 𝑠𝑖𝑛(3𝛽)]
4
ili iz 𝑦0 = 𝑎𝑥0 + 𝑏, što daje:
86
𝑦0 =
𝑅
[3 𝑐𝑜𝑠 𝛽 − 𝑐𝑜𝑠(3𝛽)]
4
Jednadžbu kaustike u prvom redu refleksije možemo izraziti i preko kuta φ. Tako
dobivamo parametarske jednadžbe kaustike u obliku:
𝑥0 (φ) =
𝑦0 (φ) =
𝑅
[3 𝑐𝑜𝑠 φ + 𝑐𝑜𝑠(3φ)]
4
𝑅
[3 𝑠𝑖𝑛 φ + 𝑠𝑖𝑛(3φ)]
4
Kaustika u prvom redu refleksije dobivena paralelnim upadnim zrakama svjetlosti
prikazana je na slici ispod.
Slika 43. Rezultat konstrukcije kaustike prvog reda refleksije
Na sličan način se mogu izvesti i jednadžbe za kaustike višeg reda. Ako slučaj
poopćimo na kaustiku u n-tom redu refleksije dobivamo parametarske jednadžbe:
𝑥(𝜙):
𝑦(𝜙):
𝑟
[(2𝑛 + 1) cos((2𝑛 − 1)𝜙) + (2𝑛 − 1) cos((2𝑛 + 1)𝜙)]
4𝑛
𝑟
[(2𝑛 + 1) sin((2𝑛 − 1)𝜙) + (2𝑛 − 1) sin((2𝑛 + 1)𝜙)]
4𝑛
Natrag na sadržaj
87
4.3. Kaustika u refrakciji i POV Ray
Jedan od primjera kaustike u refrakciji koji nam je svima dobro poznata su svijetle
linije vidljive na dnu bazena ili u morskom plićaku. Valovita površina vode koja je
obasjana sunčevom svjetlošću projicira svjetlosne uzorke na obližnje površine i te
uzorke nazivamo kaustičkom mrežom. Kaustičke mreže možemo dobiti kako
refrakcijom tako i refleksijom sunčeve svjetlosti na površini vode. U slučaju refrakcije
sunčeva svjetlost pada na površinu vode i refraktira se. Ovisno o upadnom kutu
svjetlosti kaustičke mreže možemo vidjeti na dnu bazena kao i na zidovima bazena.
Kaustičku mrežu koju svjetlost proizvodi na dnu i stranama bazena vidljiva je i iznad
površine vode, no ona je u tom slučaju izobličena dodatnom refrakcijom. Uzorci
svjetlosti tj. kaustičke mreže mnogo se bolje vide kada koristimo masku za ronjenje i
nalazimo se u vodi.
Sličan mijenjajući uzorak dobivamo refleksijom sunčevih zraka i često ga možemo
vidjeti u lukama na trupovima brodova i na donjim stranama i stupovima mostova nad
kanalima i rijekama.
Slika 44. Kaustička mreža na brodu i u bazenu. Geometrijska reprezentacija nastajanja
kaustičkih mreža 28
28
David K. Lynch, William Charles Livingston, Color and Light in Nature, 2001, Cambridge University
Press
88
POV Ray-em možemo simuiriati i ovakve vrlo kompleksne kaustičke uzorke. Prije
nego krenem na geometrijsku konstrukciju kaustike u refrakciji, u ovom slučaju
kaustičke mreže u bazenu, objasniti ću kako u POV Ray-u simuliramo realističnu
vodu.
Na izgled vode utječu razni fizički efekti, oblik njezine površine, kemijska svojstva kao
i okruženje u kojem se ona nalazi. POV Ray pruža mnogo naredbi, funkcija i
parametara kojima možemo kreirati vjerodostojnu sliku vodenih površina.
Okruženje u kojem se voda nalazi je vrlo važna za scene u kojima simuliramo
vodene površine jer one reflektiraju veliki dio svog okruženja ovisno o kutu
promatranja same površine vode. Ja sam u kodu okruženje simulirao naredbom
sky_sphere. Ona predstavlja sferu koja okružuje našu virtualnu scenu. Na nju sam
zalijepio slikovnu datoteku visoke rezolucije koja je prethodno pripremljena za
stavljanje na sferne objekte. Na slici se nalazi prizor neba. Time sam osigurao da u
mojoj sceni nema refleksija standardno postavljene crne pozadine u POV Ray-u.
Definicija materijala vode koji koristi je sljedeća:
#declare voda = material {
texture {
pigment { color rgbt <1, 1, 1, 1> }
finish {
ambient 0.0
diffuse 0.0
conserve_energy
reflection {
0.0, 1.0
fresnel on
}
specular 0.4
roughness 0.003
}
}
interior {
ior indeks_refrakcije_vode
fade_distance 4
fade_power 1002
}
}
Prvo što je vidljivo da sam definirao materijal. Ne samo teksturu površine već i
njegovu unutrašnjost. U prijašnjim primjerima objektima sam definirao samo teksturu,
što je korektno jer sam radio sa krutim neprozirnim objektima. Svjetlost koja je
upadala na te objekte bila je u interakciji samo sa površinom objekata i njihova
definicija unutrašnjosti nam nije bila važna, jer svjetlost neće prodrijeti u nju. Kada
radimo sa prozirnim i djelomično prozirnim objektima moramo definirati parametre
njezine unutrašnjosti kako bi POV Ray fizikalno ispravno pratio zrake kroz
unutrašnjost objekata i kako bi fotoni koje emitira izvor svjetlosti imali ispravnu
interakciju sa objektima, a to je od velike važnosti za realističnost slike koju će POV
Ray iscrtati.
89
Najvažniji parametri za simulaciju vode su parametri pigmenta i završne obrade
površine teksture površine. Pigment određuje boju površine, dok završna obrada
opisuje interakciju površine sa svjetlošću. Ja sam koristio pigment { color rgbt <1,
1, 1, 1> } što predstavlja potpuno prozirni pigment. Iako voda sadrži čestice i
samim time nije potpuno prozirna njezina površina ne utječe na smanjenje intenziteta
svjetlosti. Stoga definiranje potpuno prozirnog pigmenta daje najrealnije rezultate. Na
zrake svjetlosti koje uđu u unutrašnjost vode utječemo parametrima koje definiramo
unutar naredbe interior.
Parametri završne obrade površine ambient i diffuse postavio sam u nulu. Njihove
vrijednosti ovdje nemaju utjecaja jer je parametar transmit jednak 1. Kako je
površina vode je potpuno prozirna i vrijednost transmit mora biti jednaka 1,
parametre ambient i diffuse možemo zanemariti.
Kako u površini vode vidimo odsjaje tj. područja naglašenog osvjetljenja definirao
sam spekularna područja naglašenog osvjetljenja. Osim spekularnog modela tu
možemo koristiti i phong model koje sam detaljno opisao u POV Ray poglavlju.
Još jedno važno svojstvo vodene površine je spekularna refleksija 29. Bez refleksije
površina vode bi izgledala nerealno, stoga ovdje definiram parametar reflection. Za
razliku od prijašnjih primjera ovdje koristim varijabilnu refleksiju. Imamo dvije
vrijednosti koje redom predstavljaju minimalnu i maksimalnu refleksiju površine. To
predstavlja realni slučaj jer reflektivnost vodene površine ovisi o kutu pod kojim ju
promatramo.
Refleksija ovisi o optičkim svojstvima materijala, točnije o indeksu refrakcije. POV
Ray nudi model koji simulira fiziku refleksije i refrakcije svjetlosti na prozirnim
objektima ovisno o kutu upadne svjetlosti i indeksu loma koji se naziva modelom
fresnelove refleksije. Njega uključujem naredbom fresnel on. Matematičku pozadinu
modela opisao sam u poglavlju o POV Ray-u.
Nakon što sam odredio parametre pigmenta i završne obrade teksture površine vode
slijedi određivanje parametara unutrašnjosti vode. Njih određujemo unutar bloka
interior koji opisuje sve što se događa unutar objekta vode.
Prvi parametar koji se određuje unutar bloka interior je indeks refrakcije - ior. On
predstavlja omjer brzine svjetlosti u vakuumu i brzine svjetlosti u danom materijalu i o
njemu ovisi kako će se refraktirati svjetlost na površini vode. Za indeks refrakcije
koristio sam vrijednost 1.33 koju sam definirao na početku programa.
Ovisnost indeksa refrakcije o valnoj duljini svjetlosti opisujemo parametrom
dispersion. On predstavlja omjer vrijednosti indeksa refrakcije sa oba kraja vidljivog
29
Christoph Hormann, Realistic water with Povray, http://www.imagico.de/pov/water/index.html
90
spektra. Parametar disperzije svjetlosti u vodi možemo zanemariti, a njezina realna
vrijednost je 1.01.
Osim refrakcije o parametrima unutrašnjosti ovisi i atenuacija svjetlosti tj. opadanje
intenziteta svjetlosti. Kako voda nikada nije savršeno čista čestice koje se nalaze u
vodi dovode do raspršenja i apsorpcije svjetlosti. Zbog njih dolazi do atenuacije
svjetlosti koja prolazi vodom. Atenuaciju svjetlosti simuliramo parametrima
fade_distance koji predstavlja udaljenost na kojoj intenzitet svjetlosti opada za 50% i
fade_power koji definira eksponent kojim intenzitet svjetlosti opada sa udaljenošću i
koja se funkcija koristi za izračun atenuacije.
Za fade_power uzeo sam vrijednost 1002 što znači da intenzitet opada sa kvadratom
udaljenosti i da POV Ray koristi realnu eksponencijalnu funkciju za izračun
atenuacije. Parametar fade_distance postavio sam na četiri što znači da intenzitet
svjetlosti padne na pola iznosa svoje početne vrijednosti nakon četiri metra.
Nakon što se definira materijal vode sljedeći korak je definiranje samog objekta vode.
Objekt vode definirao sam isoplohom na sljedeći način:
#declare tekucina = isosurface {
function { y + f_noise3d(x, 0, z) }
contained_by { box { <-5, -5, -10>, <7, 1, 10> }
accuracy 0.001
material { voda }
translate <0, 5, 0>
Isoplohe predstavljaju oblike definirane matematičkim funkcijama. Isoplohe su vrlo
pogodne za kreiranje realnih deformacija i pomaka površina i iz tog razloga sam ih
koristio za kreiranje objekta vode. Slike površina vode koje sam definirao isoplohama
prikazane su na slikama 53 i 54 na kraju ovog poglavlja.
Unutar naredbe function definiramo matematičku funkciju koja opisuje površinu.
Površinu vode definirao sam funkcijom f_noise3d(x,y,z) koja je pogodna za
kreiranje nepravilnih površina.
Parametar contained_by definiramo kontejner ili „objekt“ kojim ograničavamo
područje gdje POV Ray generira površinu definiranom funkcijom. Kontejner može biti
kvadar ili sfera koje definiramo standardnom sintaksom.
Površina isoplohe se pojavljuje gdje je iznos funkcije jednak iznosu parametra
threshold.
Parametrom accuracy definiramo preciznost površine tj. glatkoću površine. Kako
POV Ray aproksimira isoplohe one nikada neće biti savršeno glatke funkcije. Ako
isoplohu podijelimo na dijelove parametar accuracy određuje najmanju duljinu
intervala podjele gdje će POV Ray pronaći točku površine. Što je manja vrijednost
91
parametra površina će biti preciznije aproksimirana tj. glađa, no POV Ray-u će trebati
više vremena da iscrta isoplohu.
Kao što sam već spomenuo u uvodu ovog poglavlja površina vode obasjana
svjetlošću stvara svjetlosne uzorke tj. kaustičku mrežu koju možemo vidjeti na dnu i
zidovima bazena. Kaustička mreža predstavlja strukturu koja nastaje refrakcijom
svjetlosti na površini vode.
Fotone
dodajemo
u
globalnim postavkama programa sa blokom koda
photons{spacing 0.005} unutar kojeg definiramo broj fotona o kojem će ovisiti
kvaliteta kaustike. I na kraju objekt vode pretvorimo u metu fotona kako bi ona
stvarala kaustike. To činimo blokom object{voda photons{target reflection on
refraction on}}.
Rezultat gore navedenog materijala i objekta vode vidljiv je na slici 45. Cijeli kod
kojim je definirana scena nalazi se u nastavku teksta.
Slika 45. POV Ray simulacija kaustičke mreže u bazenu
Kompleksan izgled kaustičke mreže rezultat je kompleksne geometrije površine
vode. Pojednostavljenom geometrijom površine vode možemo konstruirati nastajanje
kaustike u refrakciji. Krenimo prvo od 2D slučaja. Sve kaustike u refrakciji možemo
geometrijski konstruirati pomoću Snell-ovog zakona 30. Površinu vode možemo
predočiti sinusoidom, a za izvor uzeti sunce tj. izvor paralelnih zraka svjetlosti koje
vertikalno padaju na površinu vode. U svakoj dodirnoj točki zrake sa površinom vode
konstruiramo normalu površine. Zrake svjetlosti sa normalama površine vode
zatvaraju upadne kutove α. Poznati su nam indeksi loma zraka 𝑛𝑧 = 1 i vode
𝑛𝑣 = 1.33, te upadni kut zraka u u dodirnim točkama α, te pomoću zakona refrakcije
određujemo kute refrakcije β refraktiranih zraka. Kada smo odredili kut refrakcije
odredili smo smjer refraktirane zrake i tada za svaku upadnu zraku možemo
konstruirati njezinu refraktiranu zraku, te ih možemo nacrtati kao nas slici 46.
Mojca Čepič, Why underwater caustic network appears on the vertical walls?, V: JURDANA-ŠEPIĆ,
Rajka (ur.), Frontiers of physics education : selected contributions, Rijeka: Zlatni rez, 2008, p. 301-305
30
92
Slika 46. Određivanje smjera refraktirane zrake i konstrukcija kaustičkih krivulja u slučaju
refrakcije svjetlosnih zraka na površini vode predočene sinusnom krivuljom
Sa konstrukcije je vidljivo da se refraktirane zrake ne fokusiraju u točki već duž
fokalnih krivulja koje predstavljaju kaustike. Pomoću POV Ray-a možemo simulirati i
provjeriti navedeni slučaj:
#include "bazen.inc"
#include "functions.inc"
//---deklaracija varijabli---//
#declare Radiosity = on;
#declare quality = off;
//varijable izvora svjetlosti
#declare jakost_izvora_svjetlosti = 2;
//varijable vode
#declare indeks_refrakcije_vode = 1.33;
//---deklaracija materijala---//
//voda
#declare voda = material {
texture {
pigment { color rgbt <1, 1, 1, 1> }
finish {
ambient 0.0
diffuse 0.0
conserve_energy
reflection {
0.0, 1.0
fresnel on
}
specular 0.4
roughness 0.003
}
}
interior {
ior indeks_refrakcije_vode
fade_distance 40
93
fade_power 1001
}
}
//---deklaracija objekata---//
//okruženje
#declare okruzenje = sky_sphere {
pigment {
image_map {
jpeg "C:\Users\Bruno\Desktop\nebo.jpg"
map_type 1
}
}
rotate <0,-90, 0>
}
//izvor svjetlosti
#declare sunce = light_source {
<50, 100, 0>,
rgb <1, 1, 1> * jakost_izvora_svjetlosti
parallel
point_at <0, 0, 0>
}
//tekucina
#declare tekucina = isosurface {
function { y + f_sine_wave(z, 0.1, 1) }
contained_by { box { <-5, -5, -10>, <7, 1, 10> } }
threshold 0.0
accuracy 0.001
material { voda }
translate <0, 5, 0>
}
//---vrste kamera---//
//ortografska kamera
#declare ortografska = camera {
orthographic
location <7,3.5,0>
rotate <0, 0, 0>
look_at <0, 3.5, 0>
}
//perspektiva
#declare perspektiva = camera {
perspective
location <9,5,0>
rotate <0, 0, 0>
look_at <0, 2, 0>
}
//---glavni dio programa---//
global_settings {
max_trace_level 100
#if (Radiosity)
radiosity {
pretrace_start 0.08
#if (quality)
count 110
error_bound 1.29
94
nearest_count 9
recursion_limit 3
pretrace_end 0.01
#else
count 40
error_bound 1.29
nearest_count 7
recursion_limit 3
pretrace_end 0.01
#end
low_error_factor .5
gray_threshold 0.0
minimum_reuse 0.015
brightness 0.95
adc_bailout 0.01/2
normal on
media on
}
#end
photons {
spacing 0.003
autostop 0
jitter .4
}
noise_generator 2
}
object { sunce photons { reflection on refraction on } }
object { bazen photons { target reflection off refraction off } }
object { voda photons { target reflection on refraction on } }
sky_sphere { okruzenje }
camera { ortografska }
Objekt bazena i njegovu teksturu definirao sam u zasebnoj datoteci bazen.inc kao ne
bismo stvarao nepotrebne linije koda i odvlačio pažnju sa objekta vode koji je bitan u
kreiranju kaustičke mreže. Površinu vode predočio sam isoplohom koja je definirana
funkcijom {y + f_sine_wave(z,0.1,1)}. Funkcija f_sine_wave(z,0.1,1) je interna
funkcija POV Ray-a čija je matematička reprezentacija zapravo 𝑠𝑖𝑛(𝑥 ∙ 𝑧 ∙ 𝜋) ∙ 𝑦.
Vrijednosti koje dodjeljujemo funkciji f_sine_wave redom predstavljaju: vrijednost,
amplitudu i frekvenciju. Stoga sam ja površinu vode zapravo prikazao funkcijom {y +
sin(1*z*pi)*0.1}. Rezultat gore navedenog koda vidljiv je na sljedećim slikama:
Slika 47. POV Ray simulacija kaustike u bazenu dobivene sinusoidalnom površinom vode
95
Lijeva slika predstavlja rezultat gore navedenog koda dobivena ortografskom
kamerom koja je pogodna za 2D reprezentacije. Vidimo da smo dobili rezultat kao i
na slici 46 gdje smo konstruirali reflektirane zrake i kaustike. Slika predstavlja 2D
prikaz kaustike vidljive na stražnjoj strani bazena. Iz slike se može pretpostaviti izgled
kaustika na dnu bazena. Ako taj slučaj proširimo na 3D imamo ravne valove na vodi i
kad u POV Ray kodu promijenimo kameru u perspektivu dobivamo sliku na desnoj
strani. Kaustičke krivulje na dnu bazena dobivene sinusoidalnom površinom vode su
ravne linije.
Slika 48. 3D reprezentacija kaustičkih površina u bazenu dobivenih sinusoidalnom površinom
vode12 i POV Ray simulacija kaustike u bazenu
Kaustičke krivulje koje vidimo na zidu i dnu bazena su presjek kaustičkih površina i
ravnina promatranja, tj. ravnine zida i ravnine dna bazena. Također vidimo da je
intenzitet svjetlosti ispod kaustičkih površina mnogo veći nego izvan njih. Razlog
tome je što područjem ispod kaustičke površine prolazi daleko više zraka svjetlosti
neko područjem izvan njih. Intenzitet svjetlosti u tim područjima je pojačan i njih na
dnu bazena vidimo kao svijetle pruge. Rubovi tih pruga predstavljaju kaustike duž
kojih se fokusiraju zrake i njihov intenzitet je najveći.
Kaustičke površine se mogu i sjeći što ovisi o dubini bazena i geometriji površine
vode. Ako npr. promijenimo frekvenciju sinusnih valova na vodi, a amplitudu valova i
dubinu bazena ostavimo istom dobivamo sljedeći slučaj:
Slika 49. POV Ray simulacije kaustike u bazenu dobivene sinusoidalnom površinom vode
frekvencije 2Hz
96
Iz lijevog primjera slike 49 vidljivo je da se kaustičke površine sijeku i time kaustički
uzorak postaje sve kompleksniji.
Ravni valovi na vodi predstavljaju specijalni slučaj koji dobivamo u izoliranim
uvjetima. Površina vode češće je funkcija dvije varijable tj. njezin profil se mijenja duž
širine i dužine bazena. Kada površinu vode predočimo funkcijama {y +
f_sine_wave(z,0.1,1) + f_sine_wave(x,0.1,1)} i {y + f_sine_wave(z,0.3,1) *
f_sine_wave(x,0.3,1)} dobivamo sljedeće rezultate:
Slika 50. POV Ray simulacije kaustika u bazenu dobivenih površinama vode predočenih
funkcijama {y + f_sine_wave(z,0.1,1) + f_sine_wave(x,0.1,1)} i {y + f_sine_wave(z,0.3,1) *
f_sine_wave(x,0.3,1)}
Vidimo da u slučajevima kad površinu vode definiramo danim funkcijama na dnu
bazena dobivamo kaustike koje tvore strukturu nalik mreži. Geometrija strukture
sama po sebi nameće naziv kaustička mreža.
U stvarnosti sinusne valove na vodi također dobivamo samo u izoliranim uvjetima.
Realna površina vode ima nasumičnu strukturu stoga je možemo predočiti nekom
nasumičnom funkcijom. Pogledajmo prvo primjer gdje je površina vode predočena
nasumičnom funkcijom jedne varijable. Za funkciju sam uzeo {y +
f_noise3d(0,0,z)} i ona predstavlja funkciju jedne varijable tj. širine bazena.
Funkcija f_noise3d(x,y,z) je interna funkcija POV Ray-a koja ima nasumičnu
strukturu nalik šumu. Ona koristi generator šuma noise generator kojeg definiramo u
globalnim postavkama programa. Funkcija je pogodna za kreiranje objekata poput
reljefa, u mome slučaju nepravilne površine vode, a prednost joj je što možemo dobiti
objekte visoke rezolucije bez korištenja velike količine memorije. Ona se često koristi
za kreiranje realnih nepravilnosti površina objekata jer ona u stvarnosti zapravo i
imaju nasumičnu strukturu.
Rezultat površine vode čiji je profil konstantan je po osi duljine, a nasumično se
mijenja po osi širine je sljedeći:
97
Slika 51. POV Ray simulacija kaustike u bazenu dobivene nasumičnom površinom vode
predočene funkcijom {y + f_noise3d(0,0,z)}
I finalno kada površinu vode predočimo nasumičnom funkcijom dviju varijabli, u mom
slučaju su to širina i duljina bazena, {y + f_noise3d(x,0,z)*0.5} dobivamo realnu
simulaciju vodene površine i kaustičke mreže koju ona stvara:
Slika 52. POV Ray simulacija kaustike u bazenu dobivene nasumičnom površinom vode
predočene funkcijom {y + f_noise3d(x,0,z)*0.5}
Vidimo da je kaustički uzorak postao vrlo kompleksan. Ovakve kompleksne uzorke
kaustičkih mreža susrečemo u stvarnosti u bazenima i morkim plićacima. Štoviše ti
uzorci su često još složeniji.
Iz gore simuliranih primjera kaustika u refrakciji vidimo kako kompleksnost njihog
izgleda proizlati iz kompleksnosti geometrije površine na kojoj se svjetlost refraktira.
Kako je geometrija površine vode koju sam koristio u primjerima nedovoljno vidljiva u
nastavku prikazujem izgled površina dobivenih funkcijama koje sam koristio u
primjerima.
Slika 53. Izgled površina vode predočenih funkcijama {y + f_sine_wave(z,0.1,1) +
f_sine_wave(x,0.1,1)} i {y + f_sine_wave(z,0.7,1) * f_sine_wave(x,0.7,1)}
98
Slika 54. Izgled površina vode predočenih funkcijama {y + f_noise3d(0,0,z)} i {y +
f_noise3d(x,0,z)*0.5}
Natrag na sadržaj
99
5. POV Ray u nastavi fizike
U okviru ovog poglavlja razmatram mogućnost uporabe POV Ray-a u nastavi fizike
kao interaktivnog nastavnog pomagala. Područje fizike koje se odnosi na optiku, za
razliku od nekih drugih područja prepuno je interesantnih fizikalnih fenomena koji se
mogu vidjeti golim okom. No ta prednost često ne dolazi do izražaja u nastavi fizike
zbog skromnog instrumentarija kojeg škole posjeduju, te se nerijetko takvi intrigantni
fenomeni učenicima mogu uživo demonstrirati samo ugrubo. U takvim slučajevima
vrlo elegantno rješenje predstavlja korištenje nekog od programskih paketa kojim
možemo simulirati virtualni instrumentarij. Ja ne predlažem kompletnu zamjenu
realnog eksperimenta virtualnim, već rješenje problema eksperimenata u kojima se
koriste skupi instrumenti često teško nabavljivi školskim ustanovama. Upotrebom
virtualnih laboratorija također možemo riješiti problem održavanja instrumenata kao i
problem kompliciranog rukovanja određenim instrumentima.
Prednost virtualnih laboratorija dolazi do izražaja i kod složenijih eksperimenata koje
možemo napraviti školskim instrumentarijem. U realnim eksperimentima mogu se
pojaviti problemi na čije otklanjanje možemo potrošiti većinu nastavnog sata kako bi
učenicima demonstrirali ispravan rezultat. Također detalji i pojave koje promatramo
eksperimentom često traju vrlo kratko i gotovo su nezamjetljive tromom oku
promatrača. Instrumenti koje koristimo mogu biti nedovoljno precizni ili neispravani
da željenu pojavu uopće ne možemo reproducirati. U tim slučajevima virtualni
laboratoriji i simulacije predstavljaju nezamjenljivo nastavno pomagalo.
Realni pokusi nerijetko uključuju mnoštvo parametara i fizikalnih uvjeta koji moraju
biti zadovoljeni da bi uočili željenu pojavu, dok fizikalni zakoni koji se proučavaju
eksperimentom zapravo predstavljaju aproksimaciju slučaja u stvarnosti. Većinu tih
parametara koji se pojavljuju u eksperimentu stoga nastojimo poništiti kako bi izolirali
samo djelić stvarnosti kojeg želimo opisati. Stoga najveća prednost virtualne
simulacije je mogućnost pojednostavljenog modela stvarnosti usmjerenog direktno na
pojavu koju želimo promatrati i opisati. Time se koncentriramo samo na ono bitno i ne
moramo se mučiti sa otklanjanjem utjecaja okoline, a to u realnom eksperimentu za
učenike često predstavlja vremenski, mentalno i fizički iscrpljujući proces.
U nastavku teksta predlažem nastavnu jedinicu za nastavni sat fizike iz područja
optike gdje bi se koristili virtualnim laboratorijem – POV Ray programom. Pomoću
njega bi simulirali eksperimente čiji rezultat bi bio generiranje kaustika – prirodnog
fokusiranja svjetlosti. Za nastavnu jedinicu bi bila potrebna dva školska sata. Iako
fenomen prirodnog fokusiranja svjetlosti nije dio školskog programa smatram da bi
bilo korisno ga povezati sa paraaksijalnim primjerom fokusiranja svjetlosti koji je
uključen u školski program. Svjetlosne kaustike su fenomeni sa kojima se često
susrećemo u svakodnevnom životu, stoga postoji velika vjerojatnost da ih je većina
učenika vidjela samo nije znala da je to vrsta fokusiranja svjetlosti. Stoga predlažem
sljedeću pripremu nastavnog sata u kojem bi ukratko obradili fenomen kaustika
100
unutar blok sata nakon što su učenici obradili svo gradivo iz optike definirano
nastavnim programom.
Natrag na sadržaj
5.1. Konstruktivistički pristup
PLAN IZVOĐENJA SATA
RAZRED: 4. razred prirodoslovno-matematičke gimnazije
NASTAVNI PREDMET: Fizika
NASTAVNO PODRUČJE: Optika
NASTAVNA JEDINICA: Prirodno fokusiranje svjetlosti i virtualni laboratorij
TIP NASTAVNOG SATA: Računalna simulacija u nastavi fizike - optike
TRAJANJE NASTAVNE JEDINICE: dva školska sata
Odgojno-obrazovni ciljevi:
A. Obrazovni zadaci:
•
•
•
•
Upoznati učenike sa prirodnim fokusiranjem svjetlosti - kaustikama
Upoznati učenike sa virtualnim laboratorijem poput POV Ray-a
Upoznati učenike sa prednostima i manama virtualnih laboratorija
Upoznati učenike sa osnovama POV Ray programa
B. Funkcionalni zadaci:
•
•
•
•
Razvijanje motoričke i intelektualne sposobnosti učenika
Razvijanje sposobnosti usvajanja znanja
Razvijanje logičkog mišljenja i zaključivanja
Poticanje učenika na aktivno sudjelovanje na satu
C. Odgojni zadaci:
•
•
•
Razvijanje radnih navika i kulture rada
Poticanje i razvijanje kulture komunicirana i suradnje
Motiviranje učenika za daljne učenje i rad te povezivanje računala i fizike
Nastavni zadaci:
A. Kognitivni (učenici će znati):
•
•
•
•
Učenici će razumijeti zašto i kada se uopće koriste virtualni laboratoriji
Učenici će znati osnovne stvari o POV Ray-u kao virtualnom laboratoriju
Učenici će biti sposobni pokrenuti već gotovu simulaciju
Učenici će biti sposobni kreirati prikaz virtualnog eksperimenta
B. Psihomotorni(učenici će steći vještine):
101
•
•
Učenici će steći vještine prepoznavanja problema u kojima primjenjujemo
prednosti virtualnih laboratorija
Učenici će steći vještine analize programa i odabira optimalnog rješenja
Nastavne metode:
•
•
•
•
Metoda usmenog izlaganja pri tumačenju i obradi gradiva
Metoda demonstracije pri prikazivanju rješenja zadataka na računalu
(projektor/ ploča)
Metoda samostalnih vježbi gdje učenici samostalno izvode postavljeni zadatak
na računalu
Razgovor kod analize zadataka
Potrebna nastavna sredstva i pomagala:
•
•
•
Ploča
Projektor
Računalo
Tijek nastavnog procesa:
Prvi sat:
Uvodni dio sata:
Sat započinjem ponavljanjem fizikalnih pojmova iz optike bitnih za ovu nastavnu
jedinicu. Zakon refleksije. Konstruiranje fokusa cilindričnog ogledala pomoću
svjetlosnih zraka primjenom zakona refleksije. Zakon loma. Konstruiranje nekoliko
reflektiranih zraka svjetlosti pomoću zakona loma na sinusnoj krivulji (lijevi primjer
slike 46).
Glavni dio sata:
Nakon ponavljanja zakona refleksije i refrakcije i konstuiranja reflektiranih i
refraktiranih zraka prelazim na općeniti slučaj fokusiranja u prirodi. Učenicima
pojašnjavam kako je fokusiranje svjetlosti u točki iznimna pojava u prirodi. Da bi se
svjetlost fokusirala u točki potrebni su nam „umjetno“ stvoreni objekti poput leća. One
su stvorene sa namjerom da svjetlost fokusiraju u točki (fokusu) i proizvođači leća
ulažu puno vremena i truda kako bi stvorili takve objekte. Objašnjavam da način na
koji smo konstruirali fokus cilindričnog ogledala u uvodnom dijelu sata predstavlja
aproksimaciju kada se zrake svjetlosti koje upadaju na zrcalo nalaze blizu optičke osi
i kada one sa optičkom osi zatvaraju male kuteve. Kada izađemo iz tih granica
svjetlost se više ne fokusira u točki već duž krivulja. Učenicima pokazujem
konstrukciju fokusiranja cilindričnog zrcala za slučaj paralelnih zraka koje upadaju
duž cijele širine cilindričnog zrcala (slika 22 i 28). Govorim kako se takve kruvulje duž
kojih se fokusiraju zrake svjetlosti nazivaju kaustike. Na konstrukciji naglašavam da
se zrake koje se nalaze blizu optičke osi zrcala sjeku u vrhu kaustike i kako taj vrh
102
predstavlja fokus zrcala kada se nalazimo u paraaksijalnom modelu. Učenicima
pokazujem slike kaustika u refrakciji koje možemo zamjetiti u stvarnosti (slika 29 i
lijevi primjer slike 36).
Nakon primjera kaustike u refleksiji prelazim na primjer fokusiranja zraka svjetlosti u
refrakciji. Učenicima pokazujem konstrukciju refraktiranih zraka na površini vode
predočene sinusoidom (desni primjer slike 46). Pokazujem im oblik kaustika dobiven
refraktiranim zrakama na površini vode. Pokazujem im slike kaustike u bazenu (slika)
i u morskom plićaku. Objašnjavam im kako su to sve primjeri fokusiranja svjetlosti u
refrakciji koji si slični konstrukciji koju sam im demonstrirao samo puno složeniji jer u
slikama nemamo ravne valove na vodi kao u primjeru konstrukcije.
Završni dio sata:
U završnom dijelu prvog sata ponavljamo što gradivo koje smo obradili u glavnom
dijelu sata i odgovaram na eventualna pitanja učenika.
Drugi sat:
Uvodni dio sata:
U uvodu drugog sata učenicima predstavljam POV Ray kao virtualni laboratorij.
Diskutiramo čemu nam virtualni laboratoriji služe i koje bi bile njegove prednosti ili
mane.
Glavni dio sata:
U glavnom dijelu drugog sata demonstriram dva primjera korištenja virtualnog
laboratorija (POV Ray program kaustike u šalici kave i kaustike u bazenu). Na
primjerima virtualnih eksperimenata učenicima pokazujem kako se koristi POV Rayem i pokazujem prednosti virtualnog eksperimenta naspram istog kojeg bi radili u
stvarnosti. Navedeni primjeri u POV Ray-u se mogu lako i brzo mogu mijenjati.
Prednost je ušteda na vremenu kod promjene parametara šalice ili tekućine,
promjene profila vodene površine i zamjene izvora svjetlosti. Također realni pokusi
često ne uspijevaju ili ponekad mogu duže potrajati. Glavna prednost virtualnog
laboratorija je to što se relativno jednostavno mogu simulirati pokusi koji nisu
jednostavno izvedivi u realnim laboratorijima.
Nakon prednosti govorim o manama virtualnih laboratorija, kao što su, pogrešno
isprogramirani fizikalni zakoni, krivo definirani parametri i problemi koji se mogu javiti
u vizualizaciji virtualnog eksperimenta. Naglašavam kako simulacija nikada ne može
u potpunosti zamijeniti stvarni eksperiment, Svaki virtualni laboratorij, pa tako i POV
Ray ima svoje granice i mogućnosti. Neke stvari i POVRay radi samo u aproksimaciji,
pa s toga simulacija ne može davati rezultate s točnošću kakve dobivamo stvarnim
eksperimentom.
103
Kada završim sa demonstracijom upotrebe POV Ray-a i njegovih prednosti i mana
učenici samostalno kreću na simulacije eksperimenata koje sam unaprijed pripremio i
stavio na računala kojima se učenici služe. Učenicima su dana dva primjera
virtualnog eksperimenta: jedan je fokusiranje svjetlosti u refrakciji, a drugi fokusiranje
svjetlosti u refrakciji. Učenici samo trebaju otvoriti datoteke u POV Ray programu te
pokrenuti. Slike virtualnog eksperimenta spremaju se na radnu površinu računala, te
ih je samo potrebno otvoriti u nekom od programa za prikaz slikovnih datoteka.
Završni dio sata:
Usporedba slika virtualnih eksperimenata sa slikama koje sam ja dobio i projicirao na
ploču. Usporedba rezultata eksperimenata sa primjerima koje smo obradili na prvom
satu. Rasprava o dobivenim slikama i eventualnim pogreškama koje su se javile pri
izvođenju virtualnog pokusa kod određenih učenika.
Natrag na sadržaj
104
6. Zaključak
Računala danas u znanosti predstavljaju nezaobilazno sredstvo pomoću kojeg se
spoznaju nova znanja o prirodi. Razvoj računala i računalne tehnologije otvorio je
nove mogućnosti i doveo do razvoja mnogih interdisciplinarnih znanosti. Jedna od
njih je i računalna fizika koja je postala sastavnim dijelom znanstvenog istraživanja.
Ona predstavlja novi način dolaska do spoznaja zamjenjujući složenu fizikalnu
aparaturu računalom koje uz programske pakete poput POV Ray-a postaje virtualni
laboratorij. Kako su računala danas prisutna skoro u svakom kućanstvu izvođenje
složenijih eksperimenata postaje dostupno svakome tko posjeduje potrebno znanje o
pojavi koju želi promatrati.
Računalna simulacija kao glavni proces računalne fizike predstavlja postupak
upotrebe informacijske tehnologije koja oponaša realne sustave, objekte i procese u
apstraktnom tj. virtualnom prostoru. Računalnom simulacijom u ovom diplomskom
radu simulirao sam pojave prirodnog fokusiranja svjetlosti – kaustike.
Za simulaciju kaustika koristio sam POV Ray, slobodno dostupan programski paket
za izradu 3D slikovnih datoteka i animacija. POV Ray je vrlo moćan alat kojim se
mogu na vjerodostojan način prikazati i simulirati razne fizikalne pojave poput
prirodnog fokusiranja svjetlosti. POV Ray je čvrsto matematički ukorijenjen, pa uz
poznavanje fizikalnih zakona i zakonitosti postaje odličan program za promatranje i
prikaz raznih fizikalnih fenomena.
Računalne simulacije kaustika simuliranih unutar ovog diplomskog rada bazirao sam
na teorijskim i eksperimentalnim rezultatima. Svaka simulacija temelji se na
eksperimentalnom rezultatu tj. fotografiji realnog eksperimenta, te na teorijskom
rezultatu tj. opisu matematičkih i fizikalnih modela na kojima počiva pojava kaustika.
Time je osigurana vjerodostojnost foto-realističnih prikaza kaustika dobivenih
metodom praćenja svjetlosnih zraka u virtualnom laboratoriju – POV Ray-u. Danas
se češće skupi eksperimenti zamjenjuju računalnom simulacijom tj. virtualnim
laboratorijima zbog njihove ekonomičnosti. Virtualni laboratorij predstavlja sigurno
okruženje u kojem se dolazi do bitnih spoznaja. Korisnik na bezazlen naćin dolazi do
rezultata eksperimenata kao posljedice odluka donesenih prije ili tokom izvođenja
virtualnog eksperimenta. POV Ray kao virtualni laboratorij predstavlja alat uz koji se
na interaktivan način stječu nova znanja i iskustva. Pomoću njega se kroz ekran
računala može jednostavno zaviriti u svijet fizike i promatrati pojave i zakonitosti koje
ga karakteriziraju.
Natrag na sadržaj
105
7. Literatura
1. POV Ray for Windows Help
2. Antonio Šiber, Ekstremno brzi uvod u Povray s primjerima,
http://asiber.ifs.hr/papers/povray_tutorial.pdf, stranica posjećena 24.06.2011.
3. Friedrich A. Lohmüller, Descriptions and Examples for the POV-Ray
Raytracer, http://www.f-lohmueller.de/pov_tut/csg/povcsg1e.htm, stranica
posjećena 24.06.2011.
4. Wikipedia, Phong reflection model,
http://en.wikipedia.org/wiki/Phong_reflection_model, stranica posjećena
04.09.2011.
5. Rick Trebino, Fresnel's Equations for Reflection and Refraction,
http://www.teknik.uu.se/ftf/education/ftf2/Optics_FresnelsEqns.pdf, stranica
posjećena 04.09.2011.
6. Wikipedia, Rendering,
http://en.wikipedia.org/wiki/Rendering_%28computer_graphics%29, stranica
posjećena 25.06.2011.
7. A. J. van der Ploeg, Interactive Ray Tracing,
http://www.few.vu.nl/~kielmann/theses/avdploeg.pdf, stranica posjećena
25.06.2011.
8. Wikipedia, Ray tracing,
http://en.wikipedia.org/wiki/Ray_tracing_%28graphics%29, stranica posjećena
25.06.2011.
9. Andries van Dam, Realism in Computer Graphics,
http://www.cs.brown.edu/courses/csci1230/lectures/realism.pdf, stranica
posjećena 25.06.2011.
10. Zack Waters, Photon Mapping,
http://web.cs.wpi.edu/~emmanuel/courses/cs563/write_ups/zackw/photon_ma
pping/PhotonMapping.html, stranica posjećena 25.06.2011.
11. Henrik Wann Jensen, A practical guide to global illumination using ray tracing
and photon mapping, 2004, ACM SIGGRAPH 2004 Course Notes
(SIGGRAPH '04), Article 20
12. M.V. Berry, C. Upstill, IV Catastrophe Optics: Morphologies of Caustics and
Their Diffraction Patterns, In: E. Wolf, Editor(s), Progress in Optics, Elsevier,
1980, Volume 18, Pages 257-346
13. Assunta Bonanno, Michele Camarca, Peppino Sapia and Annarosa Serpe,
Archimedes and Caustics: A Twofold Multimedia and Experimental Approach,
The Genius of Archimedes - 23 Centuries of Influence on Mathematics,
Science and Engineering, History of Mechanism and Machine Science, 2010,
Volume 11, Part 1, 45-56, Springer
14. Michael Rogers, Catacaustics Generated by a Point Source,
http://demonstrations.wolfram.com/CatacausticsGeneratedByAPointSource,
stranica posjećena 30.07.2011.
106
15. Georg Glaeser, Reflections on Spheres and Cylinders of Revolution, Journal
for Geometry and Graphics, 1999, Volume 3, No. 2, 121-139
16. Yu. A. Kravtsov and Yu. I. Orlov, Caustics, Catastrophes and Wave Fields,
1999, Springer
17. O. N.Stavroudis, The Mathematics of Geometrical and Physical Optics, 2006,
Wiley
18. Robert C. Yates, Curves and Their Properties, 1947, The National Council of
Teachers of Mathematics
19. Giovanni Mingari Scarpello and Aldo Scimone, The Work of Tschirnhaus, La
Hire and Leibniz on Catacaustics and the Birth of the Envelopes of Lines in the
17th Century, 2005, Springer Berlin/ Heidelberg
20. Wikipedia, Geometrical Optics, http://en.wikipedia.org/wiki/Geometric_optics,
stranica posjećena 29.07.2011.
21. Xah Lee, Caustics,
http://xahlee.org/SpecialPlaneCurves_dir/Caustics_dir/caustics.html, stranica
posjećena 30.07.2011.
22. Michael Rogers, Catacaustics for Some Graphs,
http://demonstrations.wolfram.com/CatacausticsForSomeGraphs, stranica
posjećena 30.07.2011.
23. Wolfram MathWorld, Catacaustic,
http://mathworld.wolfram.com/Catacaustic.html, stranica posjećena
01.08.2011.
24. J. F. Nye, Natural focusing and fine structure of light, 1999, Institute of Physics
Publishing
25. Christian Ucke and Christoph Engelhardt, Playing with caustic phenomena,
published in the proceedings of the GIREP/ICPE conference ‘New ways in
physics teaching’, Ljubljana 21.-27.8.1996, page 440-444
26. Christian Ucke und Christian Engelhardt , Kaustik in der Kaffeetasse, 1998,
Physik in unserer Zeit 29, Seite 120-122
27. Grace Weir, The Coffee Cup Caustic,
http://www.graceweir.com/project20/The_Coffee_Cup_Caustic, stranica
posjećena 10.08.2011.
28. David K. Lynch, William Charles Livingston, Color and Light in Nature, 2001,
Cambridge University Press
29. Christoph Hormann, Realistic water with Povray,
http://www.imagico.de/pov/water/index.html, stranica posjećena 05.09.2011.
30. Mojca Čepič, Why underwater caustic network appears on the vertical walls?,
V: JURDANA-ŠEPIĆ, Rajka (ur.), Frontiers of physics education : selected
contributions, Rijeka: Zlatni rez, 2008, p. 301-305
Natrag na sadržaj
107