Metoda praćenja zrake (engl. ray tracing)
Marija Arki i Luka Majstorović
Uključivanje biblioteka
Uključujemo razne biblioteke navedene ispod kako bi se mogle koristiti njihovi
assetsi i opcije.
#include "colors.inc"
#include "textures.inc"
#include "shapes.inc"
#include "metals.inc"
#include "glass.inc"
#include "woods.inc"
#include "functions.inc"
Postavljanje kamere
Kako bismo mogli vidjeti sliku, potrebno je postaviti kameru
camera
{
angle 110
location <0, 6, 6>
right x*image_width/image_height
look_at <0,0,0>
}
Postavljanje izvora svjetlosti
Definirana su dva izvora svjetlosti. Po potrebi se drugi izvor može "odkomentirati" te samim time
uključiti.
light_source
{
<-25,50,-15>
color White
}
/*
//Postavljanje drugog izvora svjetlosti
light_source
{
<25,50,-15>
color White
}*/
Kreiranje stošca
Ispod je naveden kod potreban kako bi se kreirao stožac.
Metodom
cone kreiramo objekt stošca kojem dodjeljujemo parametre.
Parametri su koordinate stošca te duljine njegovih promjera pri vrhu i dnu.
Isto tako, dodjeljena mu je tekstura
Chrome_Texture, koja će biti dodjeljena svim objektima na dalje.
Razlog tome je što navedena tekstura ima odlična reflektivna
svojstva i odlično prikazuje funkcionalnosti
ray tracing-a.
Naposljetku, dodijeljena mu je boja pomoću
pigment svojstva
cone
{
<0,-8,0>,
3,
<0,4,0>,
0
texture
{
Chrome_Texture
}
pigment
{
rgb<0.5, 0.5, 0.5>
}
}
Kreiranje valjka (na vrhu)
Slično kao i kod stošca, valjak je definiran koordinatama te visinom.
Kod valjka se pojavljuje novo svojstvo, a to je
translate. Ovo
svojstvo se koristi kako bi pomaknuli valjak na vrh stošca te time kreirali
željeni oblik vjetromjera.
cylinder
{
<0,0,0>,
<0,0.5,0>,
0.5
translate <0, 3.5, 0>
texture
{
Chrome_Texture
}
pigment
{
rgb<0.18,0.18,0.18>
}
}
Kreiranje lopate (valjak + kugla)
Definiranje valjka jednako je kao i kod prethodno opisanog. Novina je atribut
rotate koji koristimo kako bi okretali objekt te kreirali prikaz kao što je
zadan zadatkom. Druga komponenta lopate je kugla koja se sastoji od koordinata promjera.
Kod nje
je također potrebno definirati pokret kod animacije. Ovaj se proces ponavlja 3 puta
za svaku od lopata te iste neće biti opisane, s obzirom da su razlike isključivo u rotaciji
te translaciji.
//Valjak 1
cylinder
{
<0,2.5,0>,
<0,0,0>,
0.15
translate <3.7, 0, 0>
rotate < clock*360,0,90>
texture
{
Chrome_Texture
}
pigment
{
rgb<0.4,0.4,0.4>
}
}
//Kugla 1
sphere
{
<0, 0, 0>,
0.5
translate <3.7, 2.5, 0>
rotate < clock*360,0,90>
texture
{
Chrome_Texture
}
pigment
{
rgb<0.18,0.18,0.18>
}
}
Kreiranje podloge
U svrhu kreiranja podloge, korištena je funkcija
plane koja nam omogućuje
da joj dodijelimo teksturu te njen intenzitet.
plane { y,0
pigment { Brown_Agate scale 0.1 }
}